.TITL BCPLU .TXTM 1 .RDX 8 .DUSR HALT = 63077 .ZREL .BLK 300-50 Z300: LQ0: MOVZR 0 0 SKP LQ1: MOVZR 1 1 SKP MOVZR 0 0 SKP MOVZR 1 1 SKP MOVZR 0 0 SKP MOVZR 1 1 SKP MOVZR 0 0 SKP MOVZR 1 1 SKP MOVZR 0 0 SKP MOVZR 1 1 SKP MOVZR 0 0 SKP MOVZR 1 1 JMP 0,3 Z315: SQ0: MOVZL 0 0 SKP SQ1: MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP MOVZL 0 0 SKP MOVZL 1 1 SKP JMP @ZSNQ0 JMP @ZSNQ1 ZSMAX: -1 ZSNXT: -1 ZSMIN: -1 Z340: IOR XOR EQV MULT DIVREM DIVREM LSH RSH Z350: BRANCH LOOKUP UTIL FINISH ABORT LONGJ GETLV MULPLUS ZSNQ0: SNQ0 ZSNQ1: SNQ1 LY01 LY10 SY01 SY10 RETURN STARGS Z370: GETFRM -1 -1 -1 LWB01 LWB10 SWB01 SWB10 .NREL FLAST = 0 FRET = 1 FTEMP = 2 FARGX = 3 FARG1 = 4 FARG2 = 5 FARG3 = 6 FARG4 = 7 FARG5 = 10 UTIL: .BLK 40 START: JSR .+2 41 LDA 1 .-1 SUB 1 3 STA 3 16 .SYSTEM .MEM HALT STA 0 37,3 STA 0 ZSMAX SUB 1 0 STA 3 16 .SYSTEM .MEMI HALT LDA 2 36,3 STA 2 ZSMIN LDA 1 KARG1 ADD 2 1 STA 1 ZSNXT STA 2 0,2 MOV 3 0 LDA 3 34,3 JSR 0,3 1 FINISH: .SYSTEM .RTN JMP .+1 ABORT: JSR ABMSG JMP ERROR LWB01: LWB10: SWB01: SWB10: NOTYET: JSR NYMSG JMP ERROR ERROR: LDA 0 0,3 MOVS 0 0, SNR JMP FINISH STA 3 16 .SYSTEM .PCHAR HALT MOVS 0 0, SNR JMP FINISH STA 3 16 .SYSTEM .PCHAR HALT INC 3 3 JMP ERROR ABMSG: JSR 0,3 .TXT "<15><12>ABORT<15><12><0><0>" KARG1: FARG1 NYMSG: JSR 0,3 .TXT "<15><12>STRUCTURE ROUTINES NOT LOADED<15><12><0><0>" GETFRM: STA 3 FTEMP,2 MOV 2 3 LDA 2 ZSNXT STA 3 FLAST,2 STA 0 FARG1,2 STA 1 FARG2,2 LDA 0 @FTEMP,3 ADD 2 0 STA 0 ZSNXT LDA 1 ZSMAX SUBZ# 0 1, SNC JMP GFOFL LDA 0 @FRET,3 LDA 1 K3 SUBL# 1 0, SNC JMP GFGE3 GFLE2: LDA 3 FTEMP,3 JMP 2,3 GFGE3: SUB 0 1, SZR JMP GFGR3 GFEQ3: LDA 1 FARGX,3 STA 1 FARG3,2 LDA 3 FTEMP,3 JMP 2,3 GFGR3: LDA 1 FARGX,3 ADD 3 1 LDA 3 FTEMP,3 JMP 1,3 K3: 3 GFOFL: JSR OFMSG JMP ERROR OFMSG: JSR 0,3 .TXT "<15><12>FRAME SPACE OVERFLOW<15><12><0><0>" RETURN: STA 2 ZSNXT LDA 2 FLAST,2 LDA 3 FRET,2 JMP 1,3 STARGS: STA 3 FRET,2 MOV 1 3 STA 0 FTEMP,2 LDA 1 K3 SUB 0 1 LDA 0 3,3 STA 0 FARG3,2 LDA 0 4,3 STA 0 FARG4,2 INC 1 1, SZR JMP STAR0 LDA 0 FTEMP,2 JMP @FRET,2 STAR0: LDA 0 KARG5 ADD 2 0 STA 0 FARGX,2 STARL: LDA 0 5,3 STA 0 @FARGX,2 INC 3 3 ISZ FARGX,2 INC 1 1, SZR JMP STARL LDA 0 FTEMP,2 JMP @FRET,2 KARG5: FARG5 LONGJ: LDA 1 0,3 ADD 1 3 JMP 0,3 BRANCH: LDA 1 0,3 SUBZ 0 1, SNC JMP BR2 STA 3 FRET,2 LDA 3 1,3 ADCZ# 1 3, SNC JMP BR1 LDA 3 FRET,2 ADD 1 3 LDA 1 2,3 ADD 1 3 JMP 2,3 BR1: MOV 3 1 LDA 3 FRET,2 ADD 1 3 JMP 2,3 BR2: LDA 1 1,3 ADD 1 3 JMP 2,3 LOOKUP: LDA 1 0,3 STA 1 FRET,2 LK0: INC 3 3 INC 3 3 LDA 1 -1,3 SUB 0 1, SNR JMP LK1 DSZ FRET,2 JMP LK0 JMP 1,3 LK1: LDA 1 0,3 ADD 1 3 JMP 0,3 RSH: STA 3 FRET,2 LDA 3 K16 RSH0: SUBZ 3 1, SZC JMP RSH9 JSR .+1 SUB 1 3 JMP 1,3 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 MOVZR 0 0 JMP @FRET,2 RSH9: MOVL# 1 1, SZC ADD 3 1, SKP SUB 0 0, SKP NEG 1 1, SKP JMP @FRET,2 JMP LSH0 LSH: STA 3 FRET,2 LDA 3 K16 LSH0: SUBZ 3 1, SZC JMP LSH9 JSR .+1 SUB 1 3 JMP 1,3 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 MOVZL 0 0 JMP @FRET,2 LSH9: MOVL# 1 1, SZC ADD 3 1, SKP SUB 0 0, SKP NEG 1 1, SKP JMP @FRET,2 JMP RSH0 K16: 20 GETLV: STA 3 FRET,2 GLV0: MOV 0 3 MOVL# 3 3, SNC JMP @FRET,2 LDA 0 0,3 JMP GLV0 IOR: COM 1 1 AND 1 0 ADC 1 0 JMP 0,3 XOR: STA 3 FRET,2 MOV 0 3 ANDZL 1 3 ADD 1 0 SUB 3 0 JMP @FRET,2 EQV: STA 3 FRET,2 MOV 0 3 ANDZL 1 3 ADD 1 0 SUB 3 0 COM 0 0 JMP @FRET,2 MULT: STA 3 FRET,2 MOV 2 3 MOV 0 2 MOVL 0 0, SZC NEG 2 2 MOVL# 1 1, SZC NEGC 1 1 SUBC 0 0 MUL MOV 3 2, SNC JMP @FRET,2 NEGZ 1 1, SZC NEG 0 0, SKP COM 0 0 JMP @FRET,2 DIVREM: STA 3 FRET,2 MOV 2 3 MOV 1 2 MOVL 1 1, SZC NEG 2 2 MOV 0 1 MOVR 0 0 STA 0 FTEMP,3 MOVL# 1 1, SZC NEG 1 1 SUB 0 0 DIV MOV 3 2 LDA 3 FTEMP,2 MOVL 3 3, SZC NEG 1 1 MOVL 3 3, SNC JMP @FRET,2 NEG 1 1 NEG 0 0 JMP @FRET,2 MULPLUS:STA 3 FRET,2 MOV 2 3 LDA 2 @FRET,2 MUL MOV 1 0 MOV 3 2 MOV 0 3 ISZ FRET,2 JMP @FRET,2 SNQ0: STA 3 FRET,2 STA 1 FTEMP,2 LDA 1 0,3 AND 1 0 LDA 3 FTEMP,2 LDA 3 0,3 COM 1 1 AND 3 1 ADD 1 0 LDA 3 FTEMP,2 STA 0 0,3 LDA 3 FRET,2 JMP 1,3 SNQ1: STA 3 FRET,2 STA 0 FTEMP,2 LDA 0 0,3 AND 0 1 LDA 3 FTEMP,2 LDA 3 0,3 COM 0 0 AND 3 0 ADD 0 1 LDA 3 FTEMP,2 STA 1 0,3 LDA 3 FRET,2 JMP 1,3 LY01: STA 3 FRET,2 MOVL# 1 1, SZC MOVOR 1 3, SKP MOVZR 1 3, SKP ADDC 0 3, SKP ADD 0 3 LDA 1 0,3 LDA 0 K377R MOV# 0 0, SNC MOVS 0 0, SKP AND 1 0, SKP ANDS 1 0 JMP @FRET,2 SY01: STA 3 FRET,2 MOVL# 1 1, SZC MOVOR 1 3, SKP MOVZR 1 3, SKP ADDC 0 3, SKP ADD 0 3 STA 3 FTEMP,2 LDA 3 0,3 LDA 1 FARGX,2 LDA 0 K377R MOV# 0 0, SZC AND 0 1, SKP AND 0 3, SKP MOVS 0 0, SKP ANDS 1 0, SKP AND 3 0, SKP ADD 3 0, SKP ADD 1 0 LDA 3 FTEMP,2 STA 0 0,3 JMP @FRET,2 LY10: STA 3 FRET,2 MOVL# 0 0, SZC MOVOR 0 3, SKP MOVZR 0 3, SKP ADDC 1 3, SKP ADD 1 3 LDA 0 0,3 LDA 1 K377R MOV# 1 1, SNC MOVS 1 1, SKP AND 0 1, SKP ANDS 0 1 JMP @FRET,2 SY10: STA 3 FRET,2 MOVL# 0 0, SZC MOVOR 0 3, SKP MOVZR 0 3, SKP ADDC 1 3, SKP ADD 1 3 STA 3 FTEMP,2 LDA 3 0,3 LDA 0 FARGX,2 LDA 1 K377R MOV# 1 1, SZC AND 1 0, SKP AND 1 3, SKP MOVS 1 1, SKP ANDS 0 1, SKP AND 3 1, SKP ADD 3 1, SKP ADD 0 1 LDA 3 FTEMP,2 STA 1 0,3 JMP @FRET,2 K377R: 377 .END START