* * * ALS8 FILENAME "DOSIO" * * * THIS IS AN INPUT/OUTPUT ROUTINE FOR THE NORTHSTAR * MICRODISK DOS TO BE USED WITH A SOL COMPUTER. * IT HAS THE FOLLOWING FEATURES: * * SPEED CONTROL FOR VIDEO SCROLLING SIMILAR TO ALS8 * SPACE BAR HALT FOR VIEWING SIMILAR TO SOLOS DUMP * PRINT DEVICE SELECTION SIMILAR TO THAT OF CP/M * SOL MODE KEY CAN BE USED FOR PROGRAM INTERUPT * RETURN TO SOLOS MONITOR BY USE OF ESCAPE KEY * SIGN ON MESSAGE AND INITIALIZATION OF VDM * NORTHSTAR SOFTWARE ACCEPTS SOL DELETE KEY * USE OF CLEAR KEY TO ERASE VIDEO SCREEN * * THE ENTRY POINTS OF THE NORTHSTAR DOS SHOULD BE * PATCHED AS FOLLOWS: (STANDARD DOS AT 2000H) * * 200D C3 20 29 COUT * 2010 C3 00 29 CIN * 2013 C3 50 29 TINIT * 2016 C3 60 29 CONTC * ORG 2900H * * * SYSTEM EQUATES * * SINP EQU 0C01FH SOL SYSTEM INPUT SOUT EQU 0C019H SOL SYSTEM OUTPUT SOLOS EQU 0C004H SOLOS MONITOR SDROT EQU 0C04AH SOL SERIAL OUTPUT PROUT EQU 0C2E6H SOL PARALLEL OUTPUT SPEED EQU 0C80BH VDM SPEED BYTE * START EQU $ * * * CHARACTER INPUT ROUTINE * * * THE INPUT ROUTINE CHECKS FOR ESCAPE, CLEAR, * DELETE AND CONTROL/P KEYS AS WELL AS NORMAL * DATA ENTRY. CONTROL/P WILL DIRECT * THE OUTPUT THE SAME AS IF SET WITH THE SOLOS * SET O= COMMAND. PORT NUMBERS RANGE * FROM 0-3. OUTPUT IS ALSO ECHOED TO THE VDM. * THE NORTHSTAR BASIC PRINT#- AND LIST#- ARE * FULLY SUPPORTED BUT DOES NOT ECHO TO THE VDM. * THESE DIRECTIVES TAKE PRIORITY OVER CONTROL/P. * THE SOL DELETE CHARACTER (7F) IS CHANGED TO * THAT RECOGNIZED BY NORTHSTAR SOFTWARE. (5F) * INPUT CALL SINP JZ INPUT ANI 7FH CPI 1BH ESCAPE KEY? JZ SOLOS RETURN TO SOLOS CPI 0BH CLEAR KEY? JZ CLEAR CPI 10H CONTROL/P? JZ PRINT CPI 7FH DELETE? RNZ MVI A,5FH CHANGE TO N* RET * * * CHARACTER OUTPUT ROUTINE * * ORG START+20H * OUTPUT CPI 1 1=SERIAL OUTPUT PORT JZ SERIO CPI 2 2=PARALLEL OUTPUT PORT JZ PARAO CPI 3 3=CUSTOM OUTPUT ROUTINE JZ CUSTO CALL SOUT DEFAULT IS VIDEO SCREEN LDA STORE IS CONTROL/P PRINT ON? CPI 31H SERIAL PORT OUT JZ SERIO CPI 32H PARALLEL PORT OUT JZ PARAO CPI 33H CUSTOM OUTPUT ROUTINE JZ CUSTO MOV A,B RET * * * INITIALIZATION ROUTINE * * ORG START+50H * WRITE LXI H,MSG CLEAR SCREEN AND MVI C,38H PUT OUT SIGN ON MESSAGE W1 MOV B,M XRA A CALL SOUT INX H DCR C JNZ W1 RET * * * SCROLL SPEED AND PROGRAM ABORT * * CONTC IN 0FCH SOL KEYBOARD PORT ANI 7FH RZ $ MODE KEY ABORT? CPI 3 CONTROL/C TOO! RZ CPI 20H * * SPACE BAR HALT? * SPACE BAR GIVES ONE LINE * ANY OTHER KEY KEEPS GOING * CZ WAIT * * * SCROLL SPEED CONTROL ROUTINE * * * HIT ANY NUMBER KEY DURING OUTPUT TO CHANGE * VIDEO DISPLAY SPEED. 9=SLOWEST, 0=FASTEST. * CPI 3AH RNC CPI 30H RC ANI 0FH RAL RAL $ FOR MORE DELAY PUT NOP $ ANOTHER RAL HERE STA SPEED ORI 1 RESET ZERO FLAG RET * * * OUTPUT DEVICE SELECT ROUTINE * * PRINT CALL SINP JZ PRINT ANI 7FH CPI 34H JNC P1 CPI 30H JC P1 STA STORE JMP INPUT P1 STA STORE RET * WAIT CALL SINP JZ WAIT RET * CLEAR MVI B,0BH CALL SOUT JMP INPUT * * SERIAL OUTPUT * SERIO JMP SDROT SOLOS SERIAL OUTPUT * * PARALLEL OUTPUT * PARAO JMP PROUT SOLOS PARALLEL OUTPUT * * CUSTOM OUTPUT ROUTINE * CUSTO MOV A,B DB 0C3H,0,0 PUT YOUR JUMP HERE * * SIGN ON MESSAGE * MSG DB 0BH,0AH,0DH ASC #NORTHSTAR DOS 4.0 (SOL)# DW 0A0DH ASC #CONTROL/P FOR PRINT# DW 0A0DH * ORG START+0FFH * STORE DB 0 *