**************************************************************** * * * Screen Overlay Builder * * * **************************************************************** COPY NPTDEFS ORG 7000H XEQ 7000H * START MVI A,PSCO LXI D,BUFFR CALL PSCAN JC ERROR JZ ERROR MOV A,E STA FNUM * XRA A STA FLAG OUT SCRLS OUT SCRLC CALL CLEAR LDA FNUM LXI B,4 LXI D,BUFFR CALL SYS DB RBLOP JMP STRT1 LDA FNUM LXI B,1024 LXI D,VDM CALL SYS DB RBLOP NOP NOP NOP STRT1 CALL HOME1 LDA FNUM MVI D,0 CALL SYS DB SPAOP NOP NOP NOP XRA A MOV B,A * SCRN PUSH B * * ADD BLINKING CURSOR HERE MOV A,M STA POLAR SCRN1 CALL DELAY JNZ SCRN2 CALL CURS JMP SCRN1 SCRN2 LDA POLAR MOV M,A * CALL CONIN POP B CPI ' ' JNC SCRNO ORA A JZ LEAVE CPI 'I'-40H JZ TAB CPI 'R'-40H JZ INVRT CPI 'W'-40H JZ UP CPI 'Z'-40H JZ DOWN CPI 'A'-40H JZ LEFT CPI 'S'-40H JZ RIGHT CPI 'U'-40H JZ LINUP CPI 'D'-40H JZ LINDN CPI 'E'-40H JZ LINEX CPI ESC JZ ABORT CPI LF JZ LFEED CPI CR JZ CRET CPI 0CH JZ ERASE CPI 0BH JZ CLR CPI 0EH JZ HOME CPI 'Q'-40H JZ LEFT2 CPI 'T'-40H JZ RIT JMP SCRN * SCRNO ORA B MOV M,A INX H MOV A,H CPI 0D0H JZ LEAVE CALL CURS JMP SCRN * LEAVE CALL CURS LDA FNUM LXI B,4 LXI D,WRTIT CALL SYS DB WBLOP NOP NOP NOP LDA FNUM LXI B,1024 LXI D,VDM CALL SYS DB WBLOP NOP NOP NOP * EOF LDA FNUM CALL SYS DB EOFOP NOP NOP NOP * EXIT LDA FNUM CALL SYS DB CLOOP NOP NOP NOP CALL SYS DB RETOP * CRET CALL CURS MOV A,L ANI 0C0H MOV L,A CALL CURS JMP LFD1 * LFEED CALL EOL JMP LFD2 LFD1 CALL CURS LFD2 LXI D,64 DAD D MOV A,H CPI 0D0H JZ LEAVE CALL CURS JMP SCRN * EOL SHLD TEMP EOL1 MVI M,' ' INX H MOV A,L ANI 03FH JNZ EOL1 LHLD TEMP RET * ERASE CALL CURS CALL EOL CALL CURS JMP SCRN * LINUP PUSH B CALL CURS MOV D,H MOV A,L ANI 0C0H MOV L,A MOV E,A ORA A JNZ LUP1 MOV A,H CPI 0CCH JZ LUP4 LUP1 LXI B,-64 DAD B MVI C,64 LUP2 LDAX D MOV M,A INX H INX D DCR C JNZ LUP2 MVI C,64 LUP3 MVI M,' ' INX H DCR C JNZ LUP3 LXI B,-128 DAD B LUP4 CALL CURS POP B JMP SCRN * LINDN PUSH B CALL CURS MOV D,H MOV A,L ANI 0C0H MOV L,A MOV E,A LXI B,64 DAD B XCHG MOV A,D CPI 0D0H JZ LDN3 MVI C,64 LDN1 MOV A,M STAX D INX H INX D DCR C JNZ LDN1 LXI B,-64 DAD B MVI C,64 LDN2 MVI M,' ' INX H DCR C JNZ LDN2 LDN3 CALL CURS POP B JMP SCRN * LINEX PUSH B CALL CURS MOV A,L ANI 0C0H MOV L,A LDA FLAG ORA A JNZ LEX1 SHLD EXTMP MVI A,-1 STA FLAG CALL CURS JMP SCRN LEX1 LXI D,STORE MVI C,64 LEX2 MOV A,M STAX D INX H INX D DCR C JNZ LEX2 LXI B,-64 DAD B XCHG LHLD EXTMP MVI C,64 LEX3 MOV A,M STAX D INX H INX D DCR C JNZ LEX3 LHLD EXTMP LXI D,STORE MVI C,64 LEX4 LDAX D MOV M,A INX H INX D DCR C JNZ LEX4 LHLD EXTMP XRA A STA FLAG CALL CURS POP B JMP SCRN * UP MVI C,64 CALL CURS UP1 DCX H MOV A,H CPI 0CBH JNZ UP2 LXI H,VDM+1023 UP2 DCR C JNZ UP1 CALL CURS JMP SCRN * DOWN MVI C,64 CALL CURS DOWN1 INX H MOV A,H CPI 0D0H JNZ DOWN2 LXI H,VDM DOWN2 DCR C JNZ DOWN1 CALL CURS JMP SCRN * LEFT CALL CURS DCX H MOV A,L ANI 3FH CPI 3FH JNZ LEFT1 LXI D,64 DAD D LEFT1 CALL CURS JMP SCRN * RIGHT CALL CURS INX H MOV A,L ANI 03FH JNZ RGHT1 LXI D,-64 DAD D RGHT1 CALL CURS JMP SCRN * TAB CALL CURS TAB1 INX H MOV A,L ANI 07H JNZ TAB1 MOV A,L ANI 3FH JNZ TAB2 LXI D,-64 DAD D TAB2 CALL CURS JMP SCRN * CURS MOV A,M XRI 80H MOV M,A RET * INVRT MOV A,B XRI 80H MOV B,A JMP SCRN * CLR CALL CLEAR JMP SCRN * CLEAR LXI H,VDM CLR1 MVI M,' ' INX H MOV A,H CPI 0D0H JNZ CLR1 JMP HOME1 HOME0 MOV A,M XRI 80H MOV M,A HOME1 LXI H,VDM MVI M,' '+80H RET * HOME CALL HOME0 JMP SCRN * LEFT2 PUSH B CALL CURS MOV A,L ANI 0C0H MOV L,A LEFT9 MOV A,M CPI ' ' JNZ LEFT8 MOV D,H MOV E,L INX D MVI A,63 LEFT7 XCHG MOV B,M XCHG MOV M,B INX D INX H DCR A JNZ LEFT7 MVI M,' ' LEFT8 POP B CALL CURS JMP SCRN * RIT PUSH B CALL CURS MOV A,L ANI 0C0H MOV L,A MVI A,63 ADD L MOV L,A MOV A,M CPI ' ' JNZ RIT9 MOV D,H MOV E,L DCX D MVI A,63 RIT1 XCHG MOV B,M XCHG MOV M,B DCX D DCX H DCR A JNZ RIT1 MVI M,' ' RIT9 CALL CURS POP B JMP SCRN * OUTSTR MOV A,M ORA A RZ CALL CONOUT INX H JMP OUTSTR * DELAY LXI B,0800H DELY1 DCX B PUSH B CALL CONTST POP B RNZ MOV A,C ORA B JNZ DELY1 RET * ERROR LXI H,ERMSG CALL OUTSTR * ABORT CALL CURS JMP EXIT * ERMSG ASCZ /ERROR: EXPECTED A NAME/ * WRTIT DW 1024 DW VDM * DB 'V' DW 0404H DB 0 BUFFR DS 20 FNUM DS 1 POLAR DS 1 TEMP DS 2 EXTMP DS 2 FLAG DS 1 STORE DS 64 * CR EQU 0DH LF EQU 0AH ESC EQU 1BH SCRLC EQU 0C8H SCRLS EQU 0FEH VDM EQU 0CC00H