10moveabs=4 20linerel=1 21TRIrel=linerel+80 30moverel=0 40DIM ox 3,oy 3 50DIM Code 511 60PROCassemble 70PROC_init 80PROC_main 90END 100DEFPROC_cursor 110 MOVE OX,OY 120 VDU 128 130ENDPROC 140 150DEFPROC_init 160OX = 0:OY = 0:X = 0:Y = 0:!ox=OX:!oy=OY 170MODE1 180 VDU 5,18,3,1,23,128,0,24,60,126,24,24,24,0 190ENDPROC 200 210DEFPROC_track 220 X=ADVAL(1): Y=ADVAL(2) 230 X = (1024 - (X DIV 64)) * 1280 DIV 1024: Y = Y DIV 64 240 X = X DIV 16 * 16: Y = Y DIV 20 * 20 250ENDPROC 260 270DEFPROC_main 280 REPEAT 290 A%=USR(cursor) 300 !ox = X:!oy = Y 310 REPEAT PROC_track: UNTIL X<>!ox OR Y<>!oy 320 IF (ADVAL(0) AND 1) <> 0 THEN A%=USR(cursor) 330 A%=USR(cursor) 340 !ox = X:!oy = Y 350 UNTIL FALSE 360ENDPROC 370DEFPROCassemble 380FOR Pass=0 TO 2 STEP 2 390OSWRCH=&FFEE 400P%=Code 410[OPT Pass 420.cursor 430] 440PROCplot(moveabs):PROCvar(ox):PROCvar(oy) 442PROCplot(linerel):PROCconst(50):PROCconst(0) 444PROCplot(linerel):PROCconst(0):PROCconst(-50) 448PROCplot(linerel):PROCconst(-50):PROCconst(0) 450PROCplot(linerel):PROCconst(0):PROCconst(50) 600 [OPT Pass:Rts:] 610NEXT Pass 620ENDPROC 630 640DEFPROCvar(Addr) 650[OPT Pass 660 Lda Addr 670 Jsr OSWRCH 680 Lda Addr+1 690 Jsr OSWRCH 700] 710ENDPROC 720 730DEFPROCvdu(C%) 740[OPT Pass 750 Lda #C% 760 Jsr OSWRCH 770] 780ENDPROC 790 800DEFPROCplot(plotcode) 810 PROCvdu(25) 820 PROCvdu(plotcode) 830ENDPROC 840 850DEFPROCconst(X%) 860X% = (X% AND &FFFF) 870 PROCvdu(X% MOD 256) 880 PROCvdu(X% DIV 256) 890ENDPROC