ORG 100H XEQ 100H LXI SP,0CBFFH MVI A,9 STA KILL MVI A,7FH STA RUBO XRA A STA MODE LXI H,SYSGLO+GLLOW MOV A,M MOV E,A INX H MOV A,M MOV D,A XCHG SHLD MMAX CALL CLRS IDON LXI H,EDMS CALL OUTR CMRT MVI A,'>' CALL TVTO CALL DTIN CALL SCNB JC INMD SCRH PUSH B LXI D,CTB4 LHLD IPNT SHLD ADDS MVI A,4 STA NCHR MVI B,N4C5 CALL CTSH JZ MTCH MVI A,1 STA NCHR MVI B,N1C5 CALL CTSH JNZ WHAT MTCH SHLD TEMP LDA NCHR MOV C,A MVI B,0 LHLD IPNT DAD B SHLD IPNT MOV A,M CPI ' '+1 JNC WHAT MTGO CALL SCNB SHLD IPNT LHLD TEMP POP B EXCT LXI D,CMRT PUSH D PCHL EDMS ASC 'EDIT' DB 8DH KILL DS 1 RUBO DS 1 MODE DS 1 MMAX DS 2 ADDS DS 2 IPNT DS 2 OUTR MOV A,M MVI B,2 ORA A JP OTCH SUI 80H DCR B OTCH PUSH B MOV B,A CALL TVTO POP B DCR B JZ OTCL INX H JMP OUTR OTCL MVI A,1AH CALL TVTO RET TVTO PUSH B PUSH D PUSH H PUSH PSW CPI 7FH JZ T1 CPI 9 JZ T2 CPI 0DH JZ T3 MOV B,A CALL 0C019H T4 POP PSW POP H POP D POP B RET T1 MVI B,1 CALL 0C019H JMP T4 T2 MVI B,0DH CALL 0C019H JMP T4 T3 MVI B,0AH CALL 0C019H MVI B,0DH CALL 0C019H JMP T4 DTIN LXI H,IBUF SHLD IPNT LDA KILL MOV E,A LDA RUBO MOV D,A LXI B,100H NXCH CALL TVTI CMP E JZ DTIN CMP D JNZ STOR DCR C JM DTIN DCR B DCX H JMP NXCH STOR MOV M,A CPI 0DH RZ MOV A,C CPI CMAX JZ NXCH MOV A,M INX H INR C INR B CPI TAB JNZ NXCH DCR B CALL TBST JMP NXCH IBUF DS 64 TVTI PUSH D PUSH B PUSH H TVT2 CALL 0C01FH JZ TVT2 ANI 7FH PUSH PSW CALL TVTO POP PSW POP H POP B POP D RET CMAX EQU 64 TAB EQU 9 TBST MOV A,B SUI 6 JNC $-5 PUSH D MOV D,A MVI A,' ' CALL DTOT INR B INR D JNZ $-8 POP D RET DTOT PUSH H PUSH D PUSH B PUSH PSW DTO1 CALL TVTO POP PSW POP B POP D POP H RET NXTC LXI B,2 JC NXUP PUSH B CPI '-' JNZ CNVV POP B MVI B,1 PUSH B LHLD IPNT INX H SHLD IPNT CNVV LHLD IPNT MOV B,H MOV C,L CALL DBCV DCR H JP WHAT POP B MOV C,L INR C MOV A,B ORA A JZ NXUP MOV A,L NXBK STA TEMP LHLD TOPL XCHG LHLD PNTR NATP DCX H DCX H CALL OVTS JC NAOK XCHG SHLD PNTR JMP NDON NAOK MOV A,M CPI 0DH JNZ NATP+1 INX H SHLD PNTR LDA TEMP DCR A JNZ NXBK JMP NDON NXUP DCR C JZ NDON CALL NLST JC BOTM SHLD PNTR JMP NXUP NDON LDA MODE LHLD PNTR ORA A JNZ LIST CALL CLRS JMP LNOT DBCV LXI H,0 DBC1 LDAX B CPI 0DH RZ MOV D,H MOV E,L DAD H DAD H DAD D DAD H SUI 48 CPI 10 CMC JC WHAT MOV E,A MVI D,0 DAD D INX B JMP DBC1 WHAT LXI H,WTMS LXI SP,0CBFFH CALL OUTR JMP CMRT WTMS ASC 'WHAT?' DB 8DH TEMP DS 2 TOPL DS 2 PNTR DS 2 OVTS MOV A,E SUB L MOV A,D SBB H RET NLST LHLD PNTR MOV A,M INX H CPI 0DH RZ JNC NLST+3 DCX H RET BOTM LXI SP,0CBFFH LHLD EFPN SHLD PNTR LXI H,BTMS CALL OUTR JMP CMRT BTMS ASC 'BOTTOM' DB 8DH WAIT CALL 0C01FH JZ WAIT CPI ' ' JZ CONT EFPN DS 2 LIST LHLD PNTR CALL CLRS CALL CRLF MVI D,16 NLS1 DCR D RZ CALL LNOT CALL 0C01FH JZ CONT CPI ' ' JZ WAIT CONT JMP NLS1 CLRS PUSH B PUSH D PUSH H PUSH PSW CALL 0C0D5H POP PSW POP H POP D POP B RET CRLF PUSH B PUSH D PUSH H PUSH PSW MVI A,0DH CALL TVTO MVI A,0AH CALL TVTO POP PSW POP H POP D POP B RET LNOT MVI B,1 MOV A,M CPI 2 RC INX H CPI TAB JNZ LNO1 CALL TBST JMP LNOT+2 LNO1 INR B CALL DTOT CPI 0DH RZ JMP LNOT+2 MSCR LHLD IPNT MOV A,M CPI 'P' JZ STMD CPI 'L' JNZ WHAT XRA A STMD STA MODE RET TOPR LHLD TOPL SHLD PNTR LDA MODE ORA A JNZ LIST TPLE CALL CLRS JMP LNOT KLRT LHLD IPNT MOV A,M CPI ' '+1 JC WHAT STA KILL RET NEWF LXI H,BF SHLD PNTR SHLD EFPN SHLD TOPL MVI M,1 CALL CRLF JMP INMD INMD LXI SP,STAK LXI H,INMS CALL OUTR INLP CALL DTIN LXI H,IBUF MOV A,M CPI 0DH JZ IDON CALL NLST SHLD PNTR SHLD MVAD CALL CENT JMP INLP STAK EQU 0CBFFH INMS ASC 'INPUT' DB 8DH MVAD DS 2 CENT LHLD EFPN INR C MVI B,0 DAD B XCHG LHLD MMAX CALL OVTS JNC MOFL MSOK LHLD EFPN CALL RMOV LHLD EFPN DAD B SHLD EFPN LHLD IPNT DCR C DAD B SHLD MVAD LHLD IPNT XCHG LHLD PNTR CALL LMOV RET MOFL LXI H,OFMS LXI SP,STAK CALL CRLF CALL OUTR JMP CMRT OFMS ASC 'MEM OVERFLOW' DB 8DH RMOV PUSH B MOV B,H MOV C,L LHLD MVAD NXRM LDAX B STAX D MOV A,L CMP C JNZ RMCT MOV A,H CMP B JZ RDON RMCT DCX B DCX D JMP NXRM RDON POP B RET LMOV PUSH B MOV B,D MOV C,E XCHG LHLD MVAD XCHG LMLP LDAX B MOV M,A MOV A,C CMP E JNZ LMCT MOV A,B CMP D JZ LDON LMCT INX H INX B JMP LMLP LDON POP B RET EDCR LXI H,BF SHLD PNTR SHLD TOPL CALL EFFN SHLD EFPN LHLD PNTR LDA MODE ORA A JNZ LIST CALL CLRS JMP LNOT EFFN LHLD MMAX XCHG LHLD PNTR EFF1 CALL OVTS JC MOFL MOV A,M CPI 1 RZ INX H JMP EFF1 INSL JC INMD DCR C DCR C LXI H,IBUF+2 SHLD IPNT CALL NLST SHLD MVAD SHLD PNTR CALL CENT RET DELE MVI C,2 JC DLOC LHLD IPNT MOV B,H MOV C,L CALL DBCV MOV C,L INR C DCR H JP WHAT DLOC DCR C RZ LHLD EFPN SHLD MVAD CALL NLST JC BOTM XCHG LHLD PNTR CALL LMOV SHLD EFPN JMP DLOC APND MOV A,C SUI 3 JC WHAT DCR C DCR C CALL NLST JC BOTM DCX H SHLD TEMP LXI H,IBUF+1 SHLD TEM1 MVI B,0 JMP CNGO TEM1 DS 2 CNGO MOV A,B CMP C JZ EQUL JNC LESS LHLD TEMP ADD L MOV L,A MOV A,H ACI 0 MOV H,A MOV A,C SUB B SHLD MVAD LHLD EFPN PUSH B MOV C,A MVI B,0 DAD B XCHG LHLD MMAX CALL OVTS JNC MOFL LHLD EFPN CALL RMOV LHLD EFPN DAD B SHLD EFPN POP B JMP EQUL EQUL LHLD TEMP XCHG LHLD TEM1 INX H EQLP DCR C JM CCDN MOV A,M STAX D INX H INX D JMP EQLP CCDN LHLD PNTR LDA MODE ORA A JZ LNOT JMP LIST LESS LHLD TEMP MOV A,L ADD C MOV L,A MOV A,H ACI 0 MOV H,A XCHG LHLD EFPN SHLD MVAD LHLD TEMP MOV A,L ADD B MOV L,A MOV A,H ACI 0 MOV H,A XCHG CALL LMOV SHLD EFPN JMP EQUL CCRT JC WHAT LHLD IPNT MOV D,M MVI B,0 CCR1 INX H MOV A,M CPI 0DH JZ WHAT CMP D JZ LSTR INR B JMP CCR1 LSTR SHLD TEM1 LHLD IPNT INX H SHLD IPNT LHLD PNTR STSH MOV C,B SHLD TEMP XCHG LHLD IPNT CALL SEAR JZ STMT LHLD TEMP MOV A,M CPI 0DH JZ CCDN JC BOTM INX H JMP STSH SEAR LDAX D CMP M RNZ INX H INX D DCR C JNZ SEAR RET STMT LHLD TEM1 MVI C,0 STM1 INX H MOV A,M CPI 0DH JZ CNGO INR C JMP STM1 LOC1 LXI H,IBUF+1 MVI B,-2 LNCX MOV A,M CPI 0DH JZ LOC2 INR B INX H JMP LNCX LOC2 MOV A,B ORA A JM WHAT INR B RET LOCT CALL LOC1 LXI H,IBUF+2 SHLD IPNT CALL NLST JC BOTM LNCH MOV C,B SHLD TEMP XCHG LHLD IPNT CALL SEAR JZ LMTH LHLD TEMP INX H MOV A,M CPI 1 JZ BOTM JMP LNCH LMTH LHLD TEMP DCX H MOV A,M CPI 0DH JNZ LMTH+3 INX H SHLD PNTR LMT1 LDA MODE ORA A JNZ LIST CALL CLRS JMP LNOT PRTN MVI C,2 JC PLP1 LHLD IPNT MOV B,H MOV C,L CALL DBCV MOV C,L DCR H JP WHAT MOV A,C INR C ORA A PLP1 CNZ CLRS LHLD PNTR PLP2 DCR C RZ SHLD PNTR CALL LNOT JC BOTM JMP PLP2 CTB4 ASC 'EDIT' DW EDCR ASC 'CLRS' DW CLRS ASC 'PAGE' DW LIST ASC 'NEWF' DW NEWF ASC 'BOTM' DW BTMM ASC 'MODE' DW MSCR ASC 'LIST' DW LCHR ASC 'DLOD' DW DLOD ASC 'DSAV' DW DSAV ASC 'A' DW APND ASC 'D' DW DELE ASC 'I' DW INSL ASC 'E' DW EDCR ASC 'L' DW LOCT ASC 'N' DW NXTC ASC 'C' DW CCRT ASC 'T' DW TOPR ASC 'P' DW PRTN ASC 'F' DW FIND ASC 'R' DW RLCR ASC 'Q' DW MONT FIND CALL LOC1 LXI H,IBUF+2 SHLD IPNT FIN1 CALL NLST SHLD PNTR JC BOTM MOV C,B XCHG LHLD IPNT CALL SEAR LHLD PNTR JZ LMT1 JMP FIN1 BTMM LHLD EFPN SHLD PNTR RET RLCR MOV A,C SUI 3 JC WHAT DCR C DCR C LXI H,IBUF+1 SHLD TEM1 LHLD PNTR SHLD TEMP MVI B,0 LNGT MOV A,M CPI 13 JZ CNGO JC BOTM INX H INR B JMP LNGT LCHR CALL CLRS LHLD TOPL CALL LNOT JNC LCHR+6 RET SCNB LHLD IPNT MOV A,M CPI ' ' RNZ INX H SHLD IPNT JMP SCNB+3 INAD INX D DCR C JNZ INAD INR C RET CTSH LHLD ADDS LDA NCHR MOV C,A CALL SEAR CNZ INAD LDAX D MOV L,A INX D LDAX D MOV H,A RZ INX D DCR B JNZ CTSH INR B RET N4C5 EQU 9 N1C5 EQU 12 NCHR DS 1 MONT EQU 0C004H DSAV LXI H,SVMS CALL OUTR PUSH B PUSH D PUSH H MVI A,PSCO LXI D,DSKB CALL PSCAN JC DR JZ DR MOV A,E CPI 0FFH JZ DR STA FNUM JMP DSAV2 DB 0AEH DW 4C0H DB 0 DSKB DS 20 DSAV2 LDA FNUM LXI B,6FFFH LXI D,BF MVI L,01 CALL SYS DB DWROP JMP DR JMP 100H FNUM DS 1 DR POP H POP D POP B JMP DSAV DLOD LXI H,LDMS CALL OUTR PUSH B PUSH D PUSH H MVI H,PSOP LXI D,DSKB CALL PSCAN JC DL JZ DL MOV A,E CPI 0FFH JZ DL STA FNUM LXI B,6FFFH LXI D,BF MVI L,01 CALL SYS DB DRDOP JMP DL POP H POP D POP B JMP EDIT DL POP H POP D POP B JMP DLOD SVMS ASC 'ENTER NAME OF SAVE FILE -C/R-' LDMS ASC 'ENTER NAME OF LOAD FILE -C/R-' COPY NPTDEFS EDIT EQU 100H BF EQU $ END