ENTRY EQU 40H STKPR EQU 100H PBUFE EQU 7FFFH LINE EQU 40H VIDEO EQU 0C019H MNTR EQU 0C004H ORG ENTRY LXI SP,STKPR CALL CLRS JMP JB CLRS PUSH B PUSH D PUSH H PUSH PSW CALL 0C0D5H POP PSW POP H POP D POP B RET JB LXI H,CHO SHLD OUTADR LXI H,STA1 CALL DSPLY LXI H,STA2 CALL DSPLY LXI H,STA3 CALL DSPLY LXI H,STA4 CALL DSPLY PUSH B PUSH D PUSH H JIM CALL 0C01FH JZ JIM POP H POP D POP B CPI 0DH JZ START CPI 49H JZ INF PTD MVI A,255 CALL SYS DB CAOP NOP NOP NOP CALL SYS DB RESOP COPY NPTDEFS ORG STKPR CI JMP CHI CO JMP CHO RI JMP CHI LO JMP CHO PO JMP CHO EXIT JMP PTD EDIT JMP EDTR ASCAN JMP BASIC TOPP DW 0 HLSAV DW 0 HLLSAV DW 0 HL2SAV DW 0 DESAV DW 0 LLSAV DW 0 RETSAV DW 0 DW 0 DW 0 DW 0 DW 0 DW 0 DW 0 DW 0 APTR DW 0 EPTR DW 0 CPTR DW 0 IPTR DW 0 MPTR DW 0 MEMTP DW 0 OUTADR DW 0 SCANB DW 0 CHMAX DS 1 LEVEL DS 1 LNSKP DS 1 MBRCH DS 1 SCNT DS 1 TEMP DS 1 VARSAV DS 1 YNSW DS 1 TSAVE DS 81 EBUFF DS 81 MSAVE DS 81 LABSAV DS 12 LASTOP DS 11 NVAR DS 53 WORD DS 81 START CALL CLRS LXI SP,STKPR LXI H,PBUFE-1 SHLD APTR LXI H,IOJMP LXI D,CI MVI C,18H CALL BLKTFR JMP RSTRT IOJMP JMP CHI JMP CHO JMP CHI JMP CHO JMP CHO JMP PTD JMP EDTR JMP BASIC RSTRT LXI SP,STKPR CALL INIT CALL SCAN JMP RSTRT STA1 ASC '020677' DB 0DH STA2 ASC 'PILOT-8080, 1.1' DB 0DH STA3 ASC 'COPYRIGHT (C) 1977,J.A.STARKWEATHER' DB 0DH STA4 ASC 'C/R TO CONTINUE - I FOR HELP - ANY OTHER TO ABORT' DB 0DH INIT LXI H,IBUFF SHLD IPTR SHLD SCANB LXI H,PBUFE SHLD MEMTP CALL NEWN CALL INITV MVI M,1 MVI A,LINE STA CHMAX XRA A STA LEVEL STA LNSKP LXI H,CO SHLD OUTADR RET SCAN LHLD IPTR MOV A,M CPI 1 RZ CPI 0DH JNZ CKEND INX H JMP SCAN+3 CKEND CALL CNTLN CPI 1 RZ INX H SHLD IPTR DCX H CALL BACKUP CALL SKLN CALL GETCH CPI ':' CZ CONTIN JZ SCAN CPI '*' CZ GETWD JZ SCAN+3 CALL OPS JMP SCAN CONTIN INX H SHLD HLSAV LXI H,LASTOP SHLD LLSAV MVI B,':' CALL INDX CALL OLDOP XRA A RET OPS SHLD LLSAV CALL SAVOP LHLD LLSAV MVI B,':' CALL INDX MOV A,C ORA A JZ ALTSC INX H SHLD HLSAV DCX H OLDOP DCX H CALL YNCHK ORA A RZ CALL VARCHK RZ LHLD LLSAV CALL GETCTL CALL CTLMCH CPI 1 RNZ ALTSC LHLD LLSAV CALL ASCAN RZ LHLD LLSAV SHLD HLSAV CALL TOP RET TXTCK LXI H,PBUFF CALL CNTLN INX H MOV A,M CPI 0AH JNZ CKLC CALL CNTLN INX H MOV A,M CPI 0AH JNZ CKLC LDA LNSKP ADI 1 STA LNSKP CKLC LXI H,PBUFF CALL CNTLN INX H CALL SKLN MOV E,M MVI D,0 DCX D DAD D MOV A,M CPI 0DH JNZ CKLN INX H CALL SKLN MOV E,M DCX D DAD D MOV A,M CPI 0DH JNZ CKLN LDA LNSKP ADI 1 STA LNSKP CKLN LXI H,PBUFF+1 CALL CNTLN INX H CALL SKLN MOV A,M CALL NUM RNZ LDA LNSKP ADI 4 STA LNSKP RET NUM CPI '0' RM CPI '9'+1 JM YNUM ORA H RET YNUM XRA A RET SKLN LDA LNSKP ORA A RZ INX H DCR A JMP SKLN+3 YNCHK CALL GETLCH CPI 'Y' JZ YCHK CPI 'N' JZ NCHK ORA A RET YCHK LDA YNSW ORA A JZ DONT ORA H RET NCHK LDA YNSW ORA A JNZ DONT ORA H RET DONT XRA A RET VARCHK CPI ')' JZ VCHK ORA H RET VCHK DCX H DCX H MOV A,M CPI '(' JNZ BADFRM INX H MOV B,M CALL VARMCH CPI 1 JZ BADFRM INX H MOV A,M CPI 01 JM VOFF ORA H RET VOFF XRA A RET BADFRM LHLD LLSAV CALL TOP+3 LXI H,EXPMSG CALL ERROR RET VARMCH LXI H,NVAR MOV A,M CPI 1 RZ CMP B RZ INX H INX H JMP VARMCH+3 CTLMCH LXI D,CTLST CALL LSTMCH CPI 1 RZ XCHG INX H LXI D,RTRN PUSH D MOV E,M INX H MOV D,M PUSH D RET RTRN XRA A RET LSTMCH LXI H,WORD CALL CMPR ORA A RNZ INX H XCHG INX H INX H INX H MOV A,M CPI 1 RZ XCHG JMP LSTMCH CTLST DB 'T',0DH DW TOP DB 'A',0DH DW AOP DB 'M',0DH DW MOP ASC 'MC' DB 0DH DW MC DB 'J',0DH DW JOP DB 'R',0DH DW ROP DB 'C',0DH DW COP DB 'U',0DH DW UOP DB 'E',0DH DW EOP DB 'Y',0DH DW TOP DB 'N',0DH DW TOP ASC 'LOAD' DB 0DH DW LOAD ASC 'INMAX' DB 0DH DW INMAX ASC 'NEW$' DB 0DH DW NEWN ASC 'DP' DB 0DH DW DPRG ASC 'PRINT' DB 0DH DW LPRG ASC 'DSAVE' DB 0DH DW DSAVE ASC 'IEP' DB 0DH DW IEP ASC 'BYE' DB 0DH DW EXIT ASC 'EDIT' DB 0DH DW EDIT ASC 'CLOAD' DB 0DH DW CLOAD ASC 'DLOAD' DB 0DH DW DLOAD ASC 'CSAVE' DB 0DH DW CSAVE ASC 'NEDIT' DB 0DH DW NEDIT DB 1 NEDIT CALL BLKBF MVI A,01 LXI H,PBUFB MOV M,A JMP EDIT IEP LXI H,PBUFF SHLD IPTR SHLD SCANB CALL TXTCK RET INMAX CALL NMCTL MOV A,E CPI 65 JM INMX2 MVI A,64 MOV E,A INMX2 LXI H,CHMAX MOV M,E RET NMCTL LHLD HLSAV CALL GETCH CPI 0DH RZ CALL GETWD DCX H SHLD HLSAV LXI H,WORD CALL LETTER JNZ CVNUM MOV B,M CALL VARMCH CPI 1 CZ BADFRM RZ INX H MOV E,M JMP CVNUM+3 CVNUM CALL GETNM MOV A,E ORA A RP MVI E,0 RET JOP LHLD HLSAV CALL GETCH CPI '*' JZ JOP2 MVI A,'*' STA WORD LXI D,WORD+1 LHLD HLSAV CALL WDTFR JMP JOP2+3 JOP2 CALL GETWD LHLD SCANB CALL LOOKL CPI 1 CZ NTFND RZ INX H SHLD IPTR RET NTFND LXI H,WORD CALL DSPLY LXI H,BLMSG CALL ERROR RET UOP CALL SAVRET JMP JOP BLKSET MOV M,B INX H MOV A,C SUI 1 MOV C,A JNZ BLKSET RET BLKBF LHLD APTR XCHG LXI H,PBUFF MVI B,' ' BLKB2 MOV M,B INX H CALL ADRCMP JNZ BLKB2 RET ADRCMP MOV A,H CMP D RM RNZ MOV A,L CMP E RET GETNM MVI E,0 INX H CALL BRCHAR JZ SDIG CPI '+' JZ SDIG CPI '-' JZ SDIG DCX H MOV A,M CPI '0' RM CPI '9'+1 RP SUI '0' ADD A MOV E,A ADD A ADD A ADD E MOV E,A INX H UNITS MOV A,M CPI '0' RM CPI '9'+1 RP SUI '0' ADD E MOV E,A RET SDIG DCX H JMP UNITS PUTNM MVI C,0 MOV A,E ORA A CM NEG CPI 10 JM FRMCH SUI 10 MOV E,A MOV A,C ADI 1 MOV C,A JMP PUTNM+2 FRMCH MOV A,C ADI '0' CPI '0' JZ FRMU MOV M,A INX H FRMU MOV A,E ADI '0' MOV M,A INX H MVI A,0DH MOV M,A RET NEG MVI A,'-' MOV M,A INX H XRA A SUB E MOV E,A RET LOOKS XRA A STA TEMP JMP LOOK LOOKL ORA H STA TEMP CALL SKLN LOOK CALL GETCH CPI 1 RZ CPI '*' JZ CHK CPI '$' JZ CHK CALL CNTLN INX H LDA TEMP ORA A JZ LOOK JMP LOOK-3 CHK SHLD HLSAV CALL CNTWD MOV A,C CPI 13 JM MVLAB MVI C,12 MVLAB LHLD HLSAV LXI D,LABSAV CALL BLKTFR XCHG DCX H MVI A,0DH MOV M,A LXI H,LABSAV LXI D,WORD CALL CMPR ORA A JNZ LFND LHLD HLSAV CALL CNTWD JMP LOOK LFND LHLD HLSAV CALL CNTWD RET CMPR MOV A,M CPI 0DH JZ XEND MOV C,A INX H XCHG MOV A,M CPI 0DH JZ YENDB CMP C JNZ NOMCH INX H XCHG JMP CMPR XEND XCHG MOV A,M CPI 0DH JZ MCH CALL CNTWD XCHG XRA A RET NOMCH CALL CNTWD YENDB XCHG CALL CNTWD XRA A RET MCH XCHG ORA H RET GETCH MOV A,M CPI 20H RNZ INX H JMP GETCH GETLCH MOV A,M CPI 20H RNZ DCX H JMP GETLCH GETWD CALL GETCH LXI D,WORD CALL WDTFR RET CNTWD MVI C,1 CALL BRCHAR RZ MOV A,C ADI 1 MOV C,A INX H JMP CNTWD+2 WDTFR MVI C,1 CALL BRCHAR JZ MVBR INX H XCHG MOV M,B MOV A,C ADI 1 MOV C,A INX H XCHG JMP WDTFR+2 MVBR INX H XCHG MVI A,0DH MOV M,A INX H XCHG XRA A RET GETCTL LXI D,WORD CALL WDTFR MOV A,C CPI 3 RM MOV H,D MOV L,E DCX H DCX H CALL GETLCH CPI 'Y' JZ YNOUT CPI 'N' RNZ YNOUT MVI A,0DH MOV M,A RET SAVOP MVI B,':' CALL INDX LHLD LLSAV LXI D,LASTOP CALL BLKTFR RET CNTLN MVI C,1 MOV A,M CPI 0DH RZ CPI 1 RZ MOV A,C ADI 1 MOV C,A INX H JMP CNTLN+2 BACKUP MOV A,C CPI 1 RZ SUI 1 MOV C,A DCX H JMP BACKUP BRCHAR MOV A,M MOV B,A CPI ' ' RZ CPI 0DH RZ CPI ',' RZ CPI ';' RZ CPI ':' RZ CPI '.' RZ CPI '?' RZ CPI 21H RZ CPI '"' RZ CPI '(' RZ CPI ')' RZ CPI 27H RZ CPI 1 RET INDEX XRA A STA SCNT INDE2 LHLD HLSAV XCHG LHLD HLLSAV MOV B,M INX H XCHG CALL INDX MOV A,C ORA A RZ SHLD HLSAV LDA SCNT ADD C STA SCNT LHLD HLLSAV COPY PILO2:S/1