.TITLE PLTSEG .GLOBL PLTSEG R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 .PSECT VXDES,RW,D,GBL,REL,OVR XFAC: .BLKW 2 XOFF: .BLKW 2 XTYPE: .BLKW 1 XMAXB: .BLKW 1 XSMINB: .BLKW 1 XSMAXB: .BLKW 1 XSNOWB: .BLKW 1 .PSECT .PSECT VXADES,RW,D,GBL,REL,OVR XAFDU: .BLKW 2 XADDU: .BLKW 2 XADDB: .BLKW 2 XAFDB: .BLKW 1 XANDB: .BLKW 1 XAIND: .BLKW 1 XAGRID: .BLKW 1 XANGB: .BLKW 1 XAING: .BLKW 1 XATICK: .BLKW 1 XANTB: .BLKW 1 XAINT: .BLKW 1 .PSECT .PSECT VXTDES,RW,D,GBL,REL,OVR XTA: .BLKW 1 XTL: .BLKW 1 XTOFFB: .BLKW 1 XTIND: .BLKW 1 .PSECT .PSECT VYDES,RW,D,GBL,REL,OVR YFAC: .BLKW 2 YOFF: .BLKW 2 YTYPE: .BLKW 1 YMINB: .BLKW 1 YMAXB: .BLKW 1 .PSECT .PSECT VYADES,RW,D,GBL,REL,OVR YAFDU: .BLKW 2 YADDU: .BLKW 2 YADDB: .BLKW 2 YAFDB: .BLKW 1 YAGRID: .BLKW 1 YATICK: .BLKW 1 .PSECT .PSECT VADES,RW,D,GBL,REL,OVR AMAX: .BLKW 1 ALAST: .BLKW 1 ALEN: .BLKW 1 A: .BLKW 1 .PSECT ANPTS=0 ATYPE=2 AXA=4 AXMIN=4 AXF=6 AXI=8. ADELX=6 AYA=10. AYF=12. AYI=14. AEA=16. AJOIN=18. AOFF=20. AXP=22. AYP=24. AEP=26. AXC=28. AYC=30. AEC=32. AXN=34. AYN=36. AEN=38. AIC=40. .PSECT VABORT,RW,D,GBL,REL,OVR ABORT: .BLKW 1 .PSECT .PSECT VPDP,RW,D,GBL,REL,OVR PSPP: .BLKW 1 PBUFL: .BLKW 1 PCY: .BLKW 1 PCYSPP: .BLKW 1 PBY: .BLKW 1 POFBY: .BLKW 1 PBPIY: .BLKW 2 PBPCY: .BLKW 2 PBCIX: .BLKW 2 .PSECT .PSECT VPNTBF,RW,D,GBL,REL,OVR RPSPP: .BLKW 1 PNTBUF: .BLKW 1 .PSECT VPLTBF,RW,D,GBL,REL,OVR PLTBUF: .BLKW 1 .PSECT VPLTYG,RW,D,GBL,REL,OVR PLTYGB: .BLKW 1 .PSECT .GLOBL VSINIT,VSBSET,VBSET,VXLAB,VXGRID,VPSYM,VIPLTB,VPLT .GLOBL VCNCT,VGETXY,VXTICK IOFF: .WORD 0 XL: .WORD 0 YL: .WORD 0 IYL: .WORD 0 XH: .WORD 0 YH: .WORD 0 IYH: .WORD 0 YPL: .WORD 0 YPH: .WORD 0 TIME: .WORD 0 ID: .WORD 0 DUMMY: .WORD 0 ALST0: .BYTE 0,0 ALST1: .BYTE 1,0 .WORD PLTYGB ALST2: .BYTE 1,0 .WORD YMINB ALST3: .BYTE 1,0 .WORD YMAXB ALST4: .BYTE 2,0 .WORD YMINB .WORD YMAXB ALST5: .BYTE 1,0 L2070: .WORD 0 ALST6: .BYTE 6,0 .WORD XL,YL,XH,YH,YPL,YPH ALST7: .BYTE 1,0 .WORD YPL ALST8: .BYTE 2,0 .WORD YPL,YPH ALST9: .BYTE 5,0 L2920: .WORD 0,ID,XH,YH,DUMMY PLTSEG: MOV #ALST0,R5 JSR PC,VSINIT CMP XSMAXB,XSMINB BGE L2010 JMP L5000 L2010: MOV XSMINB,XSNOWB ;INIT LOAD ;DO L4000 XSNOWB=XSMINB,XSMAXB LOOP: TST ABORT BEQ L2015 RTS PC L2015: TST YAGRID BEQ L2020 MOV XSNOWB,R0 BIT #1,R0 BNE L2020 MOV #ALST1,R5 JSR PC,VIPLTB BR L2035 L2020: MOV #ALST0,R5 JSR PC,VIPLTB L2035: MOV #ALST2,R5 JSR PC,VSBSET MOV #ALST3,R5 JSR PC,VSBSET TST XSNOWB BLE L2038 CMP XSNOWB,XMAXB BNE L2040 L2038: MOV #ALST4,R5 JSR PC,VBSET L2040: CMP XANDB,XSNOWB BEQ L2042 TST XTA BEQ L2045 CMP XTIND,XTL BGE L2045 CMP XTOFFB,XSNOWB BGT L2045 TST RPSPP BNE L2045 L2042: MOV #ALST0,R5 JSR PC,VXLAB L2045: CMP XANGB,XSNOWB BNE L2050 MOV #ALST0,R5 JSR PC,VXGRID L2050: CMP XANTB,XSNOWB BNE L2055 MOV #ALST0,R5 JSR PC,VXTICK L2055: CLR IOFF MOV XSNOWB,R0 ;DO L3000 IOFF=0.ALAST,ALEN LOOP2: CMP IOFF,ALAST BLE L2060 JMP L4000 L2060: MOV #A,R1 ADD IOFF,R1 ADD IOFF,R1 ;R1=ADDR(A(IOFF)) MOV R0,R2 ADD #2,R2 CMP AXC(R1),R2 BGT L2080 MOV R1,L2070 MOV R0,-(SP) MOV R1,-(SP) MOV #ALST5,R5 JSR PC,VPSYM MOV (SP)+,R1 MOV (SP)+,R0 L2080: TSTB AJOIN+1(R1) BNE L2090 JMP L3000 L2090: MOV AXP(R1),XL MOV AYP(R1),YL MOV AXC(R1),XH MOV AYC(R1),YH MOV #1,TIME L2100: CMP R0,XL BGE L2105 JMP L2900 L2105: CMP XH,#77777 BNE L2110 JMP L2900 L2110: CMPB AJOIN+1(R1),#2 BEQ L2200 MOV R0,-(SP) MOV R1,-(SP) MOV #ALST6,R5 JSR PC,VCNCT MOV (SP)+,R1 MOV (SP)+,R0 BR L2300 L2200: CMP R0,XH BEQ L2210 BGT L2220 L2205: MOV YL,YPL MOV YL,YPH BR L2300 L2210: MOV YL,YPL MOV YH,YPH CMP YPL,YPH BLE L2300 MOV YPL,R2 MOV YPH,YPL MOV R2,YPH BR L2300 L2220: MOV YH,YPL MOV YH,YPH L2300: MOV YL,IYL MOV YH,IYH CMP IYL,IYH BLE L2310 MOV IYL,R2 MOV IYH,IYL MOV R2,IYH L2310: CLR R2 ;R2=INC TSTB AJOIN(R1) BEQ L2320 MOV XL,R3 SUB #2,R3 CMP R0,R3 BLT L2315 ADD #4,R3 CMP R0,R3 BGT L2315 MOV #3,R2 BR L2320 L2315: MOV XH,R3 SUB #2,R3 CMP R0,R3 BLT L2320 ADD #4,R3 CMP R0,R3 BGT L2320 MOV #3,R2 L2320: MOV IYL,R3 ADD R2,R3 CMP YPL,R3 BGE L2325 MOV R3,YPL L2325: MOV IYH,R3 SUB R2,R3 CMP YPH,R3 BLE L2330 MOV R3,YPH L2330: CMP YPL,YMINB BGE L2335 MOV YMINB,YPL L2335: CMP YPH,YMAXB BLE L2340 MOV YMAXB,YPH L2340: MOV R0,-(SP) MOV R1,-(SP) CMP YPL,YPH BGT L2410 BLT L2400 MOV #ALST7,R5 JSR PC,VSBSET BR L2410 L2400: MOV #ALST8,R5 JSR PC,VBSET L2410: MOV (SP)+,R1 MOV (SP)+,R0 L2900: CMP XH,R0 BGT L3000 CMP TIME,#2 BEQ L2910 MOV #2,TIME MOV AXC(R1),XL MOV AYC(R1),YL MOV AXN(R1),XH MOV AYN(R1),YH MOV AIC(R1),ID INC ID JMP L2100 L2910: CMP ID,ANPTS(R1) BGT L3000 MOV XH,XL MOV YH,YL INC ID MOV R0,-(SP) MOV R1,-(SP) MOV R1,L2920 MOV #ALST9,R5 JSR PC,VGETXY MOV (SP)+,R1 MOV (SP)+,R0 JMP L2100 L3000: ADD ALEN,IOFF JMP LOOP2 L4000: MOV #ALST0,R5 JSR PC,VPLT INC XSNOWB CMP XSNOWB,XSMAXB BGT L4010 JMP LOOP L4010: MOV XSMAXB,R0 INC R0 MOV R0,XSMINB L5000: MOV ALEN,R0 NEG R0 MOV R0,ALAST RTS PC .END