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