TITLE NDTEST A==1 B==2 C==3 XMT==41 DEFINE NEXT A,B DSZ NTIMES JMP .+10 SUBZL 0,0 ;R0 _ 1 STA 0,NTIMES READS 0, MOVZL% 0,0(SZR) JMP B MOVL% 0,0(SNC) JMP A TERMIN DEFINE PAUSE A LDA C,A STA C,PTIMES LDA B,CADDR JSR SDLIST DSZ PTIMES JMP .-2 TERMIN LOC 40 SDLIST: STA A,SVA LDA A,BUSYSW MOV A,A(SNR) JMP TDS SKPBZ XMT JMP .-1 TDS: LDA A,DELSW MOV A,A(SNR) JMP SDL LDA A,DEL1 STA A,D1 LDA A,DEL2 STA A,D2 DSZ D2 JMP .-1 DSZ D1 JMP .-5 SDL: LDA A,(B) DOB A,XMT LDA A,1(B) NEG A,A DOCS A,XMT LDA A,SVA JMP (C) SVA: 0 BDL: STA 0,@27 ;BUILD DISPLAY LIST ISZ @BDLIA ;STORE WORD THEN INC. THE WORD COUNT JMP (C) IBDL: LDA A,(B) ;INIT BDL STA A,27 DSZ 27 STA B,BDLIA ISZ BDLIA SUBC A,A STA A,@BDLIA JMP (C) D1: 0 D2: 0 DEL1: 190 LLSP==40_10 DEL2: 1 BUSYSW: 1 DELSW: 0 SWSW: 0 RSP: 40 FFC: 14 LSP: 40_10 CRC: 15 LFC: 12 SPSP: 40_10+40 RQUES: "?_10 NLPS: 10 ;NO. LINES PER SENT. NCPL: 20 ;NO. CHARS PER LINE NL: 0 NC: 0 NCHR: 0 RETADD: 0 CADDR: CADD1 BADDR: BADD1 BDLIA: 0 ;BDL INCR ADDR, POINTS TO WORD COUNT XST: 101000 YST: 121000 ARCNT: 777 HDCNT: 77 FLSTAD: CMALST-1 NSEG: -4 SEGCNT: 1 SVB: 0 REM: 0 CXYB: 142200 CIB: 146000 4INC: 177700 N7: 7 ONES: -1 SV27: 0 NIX: IX NIY: IY INCS: 0 RTBOX: 0 RTADGN: 0 M02.15: 037777 M14.15: 3 XLBOX: 0 YLBOX: 0 ADC1: ADC1L-1 ADC2: ADC2L-1 ADC3: ADC3L-1 NTIMES: 0 ;FOR NEXT PTIMES: 0 ;FOR PAUSE ISTART: 10000 ;FOR START ASTART: START APMTST: PMTST LOC 400 START: LDA A,ISTART STA A,NTIMES START1: LDA A,SWSW READS 0, MOV A,A(SZR) STA 0,DLIST LDA B,BADDR JSR SDLIST MOV A,A(SZR) JMP START1 NEXT BCDL,START JMP START1 BADD1: DLIST 13. CRLF==15_8+12 LFCR=12_8+15 AB="A_8+"B DLIST: 14_8+14 77_8+77 CRLF AB CRLF AB LFCR AB LFCR AB CRLF AB CRLF BCDL: LDA A,NLPS ;BUILD CHAR DISPLAY LIST STA A,NL LDA B,CADDR JSR IBDL LDA 0,FFC JSR BDL LDA A,LSP STA A,NCHR BCDL1: LDA A,NCPL STA A,NC BCDL2: LDA 0,NCHR JSR CKCHR JSR BDL PAUSE BCDLP ISZ NCHR DSZ NC JMP BCDL2 LDA 0,CRC JSR BDL LDA 0,LFC JSR BDL JSR BDL DSZ NL JMP BCDL1 LDA A,BCDLN STA A,NTIMES BCDL3: JSR SDLIST NEXT @APMTST,BCDL JMP BCDL3 CKCHR: STA C,RETADD LDA A,NQC STA A,NQCC LDA A,AQCL STA A,20 CK1: LDA A,@20 SUB% 0,A(SNR) JMP CKEQ DSZ NQCC JMP CK1 JMP @RETADD CKEQ: LDA C,20 LDA A,RSP ADD A,C JMP @(C) BCDLN: 400 BCDLP: 10 ;FOR PAUSE NQC: 14. AQCL: QCL-1 NQCC: 0 QCL: LLSP+1 ;COMPL CHAR SET LLSP+16 LLSP+17 LLSP+14 LLSP+12 LLSP+15 LLSP+5 LLSP+35 LLSP+36 LLSP+177 LLSP+10 LLSP+34 LLSP+137 LLSP+0 ;NULL LOC QCL+40 REPEAT 10.,SIN BOX BOX UNLN NULLC BLOCK 100 SIN: LDA 0,SPSP JMP @RETADD UNLN: JSR BDL LDA 0,RBKQ JMP @RETADD BOX: JSR BDL LDA 0,RQUES JMP @RETADD NULLC: JSR BDL JMP @RETADD RBKQ: 10_10+"? PMTST: LDA A,PMIST STA A,NTIMES PMT3: LDA B,CADDR JSR IBDL LDA 0,XST JSR BDL LDA 0,YST JSR BDL LDA 0,ARCNT STA 0,NL PMT1: JSR SDLIST ISZ 2(B) ISZ 3(B) DSZ NL JMP PMT1 LDA 0,2(B) JSR BDL LDA 0,3(B) JSR BDL LDA 0,HDCNT STA 0,NL PMT2: DSZ 3(B) DSZ 4(B) JSR SDLIST DSZ NL JMP PMT2 NEXT CMAR,PMTST JMP PMT3 PMIST: 400 CMAR: LDA B,CADDR JSR IBDL SUBC 0,0 ;START OFF WITH TWO NULLS JSR BDL LDA 0,XST JSR BDL LDA 0,YST JSR BDL LDA 0,FLSTAD STA 0,20 SUBZL 0,0 STA 0,SEGCNT CMAR1: LDA B,M14.15 JSR GNSEG AND% 0,B(SNR) JMP CMAR2 LDA A,NSEG CMAR4: JSR BDL PAUSE CMARP INC A,A(SZR) JMP CMAR4 JMP CMAR1 CMAR2: JSR BDL PAUSE CMARP MOV 0,0(SZR) JMP CMAR1 LDA A,CMAST STA A,NTIMES CMAR3: LDA B,CADDR JSR SDLIST NEXT CPASA,CMAR JMP CMAR3 GNSEG: DSZ SEGCNT JMP (C) SUBZL 0,0 STA 0,SEGCNT LDA 0,@20 MOVL% 0,0(SZC) JMP (C) STA 0,SEGCNT LDA 0,@20 JMP (C) CMARP: 100 ;FOR PAUSE CMAST: 2000 IX==152525 IY==165252 IB==177777 CX==142000 CY==144000 CI==146000 CXYI==142214 CYI==144300 CMALST: CI IB IX 2 IY 2 IX 2 IY 2 IX CX IB 2 IX CY IB 2 IY CX IB 2 IX CY IB 4 IY IX IB CX IX CXYI IB CYI IY CI 0 0 CPASA: LDA 0,ADC1 JSR CPAS0 LDA 0,CPAAD STA 0,NTIMES CPASA1: JSR SDLIST NEXT CPASB,CPASA JMP CPASA1 CPASB: LDA 0,ADC2 JSR CPAS0 LDA 0,CPABD STA 0,NTIMES CPASB1: JSR SDLIST NEXT CPASC,CPASB JMP CPASB1 CPASC: LDA 0,ADC3 JSR CPAS0 LDA 0,CPACD STA 0,NTIMES CPASC1: JSR SDLIST NEXT @ASTART,CPASC JMP CPASC1 CPAAD: 10000 CPABD: 100000 CPACD: 10000 CPAS0: STA C,RTCPA STA 0,25 LDA B,CADDR JSR IBDL JMP CPAS3 CPAS1: PAUSE CPAP CPAS3: SUBZR 1,1 MOVOR 1,1 ;SET TWO HIGH BITS OF R1 LDA 0,@25 MOVL% 0,0(SNC) JMP CPAS2 ;CHARS ANDL% 0,1(SNR) JMP CPAS2 ;;POINT LDA 1,M02.15 AND 1,0(SNR) ;DONE JMP @RTCPA ;YES STA 0,XLBOX LDA 0,@25 STA 0,YLBOX JSR RBOX JMP CPAS1 CPAS2: JSR BDL JMP CPAS1 CPAP: 400 RTCPA: 0 RBOX: STA C,RTBOX ;GET X LENGTH LDA A,XLBOX LDA 0,CXYB ;MOVE SW JSR BDL LDA 0,4INC JSR BDL LDA 0,CXYB JSR BDL LDA CIB JSR BDL LDA 0,27 STA 0,SV27 LDA 0,NIX STA 0,INCS JSR GENSID LDA 0,NIY STA 0,INCS LDA A,YLBOX JSR GENSID BOX2: LDA 0,SV27 ;CODE FOR FIRST TWO SIDES WILL DO FOR STA 0,26 ;3RD AND 4TH IF X AND Y DIRECTIONS ARE CHANGED LDA 1,27 SUB 0,1 STA 1,REM LDA 0,CXYB ;CHANGE A AND Y DIR'S JSR BDL LDA 0,@26 JSR BDL DSZ REM JMP .-3 LDA 0,CIB JSR BDL LDA 0,CXYB JSR BDL LDA 0,4INC JSR BDL JMP @RTBOX GENSID: STA C,RTADGN ;R1=LENGTH OF SIDE SUBO 0,0 STA B,SVB LDA B,N7 DIV ;R0,,R1/R2 ANSWER IN R1, REMAINDER IN R0 SUB 0,B MOV 0,0(SNR) SUB B,B STA B,REM LDA B,SVB LDA 0,INCS NEGZ A,A(SZC) ;NEGATE ANSWER JMP GENS1 ;ANS WAS ZERO JSR BDL INC A,A(SZR) JMP .-2 GENS1: LDA A,REM ;GET REMAINDER MOV A,A(SNR) JMP @RTADGN ;WAS ZERO LDA A,ONES ;GENERATE MASK MOVZL A,A MOVZL A,A DSZ REM JMP .-3 AND A,0 JSR BDL JMP @RTADGN XPT==100000 YPT==122000 YPTI==120000 CODEM==140000 BX==CODEM ADC1L: XPT+776 YPT+1574 BX+13 15 "N XPT+1423 YPT+1427 BX+22 15 0 "N_10+"E XPT+1574 YPT+775 BX+13 15 "E XPT+1423 YPT+346 BX+22 15 0 "S_10+"E XPT+776 YPT+165 BX+13 15 "S XPT+335 YPT+346 BX+22 15 0 "S_10+"W XPT+165 YPT+775 BX+13 15 "W XPT+335 YPT+1427 BX+22 15 0 "N_10+"W BX+00 ADC2L: XPT+1000 YPTI+1600 XPT+1417 YPTI+1417 XPT+1600 YPTI+1000 XPT+1417 YPTI+361 XPT+1000 YPTI+200 XPT+361 YPTI+361 XPT+200 YPTI+1000 XPT+361 YPTI+1417 BX+00 ADC3L: XPT+200 YPT+1600 BX+40 20 XPT+1400 YPT+400 ASCII /OVER HERE DUMMY!/ BX+00 CADD1: CDLIST 0 CDLIST: BLOCK 300 END START