10 REM Light pen test by C.J.Richardson for 8BS 20 DEFFNS="LightPn" 30 M%=0:REM MODE 40 PROCsetup:REM SETUP INTERRUPT 50 MODEM%:REM SET MODE 60 VDU23;8202;0;0;0;:REM SWITCH OF CURSOR 70 VDU19,0,3,0,0,0:REM SET YELLOW BACKGROUND 80 VDU19,1,1,0,0,0:REM SET RED FOREGROUND 90 OX%=0 100 OY%=0 110 REPEAT 120 A%=!&74:REM READ PEN POSITION 130 IF A%<>0 A%=A%-O%-Offset%:PRINTTAB(X%,Y%);" ";:REM IF PEN DETECTED SUBTRACT OFFSETS AND BLANK OUT OLD POSITION 140 X%=A%MOD80:REM WORK OUT NEW X AND Y 150 Y%=A%DIV80 160 PRINTTAB(X%,Y%);"*" 170 UNTILFALSE 180 DEFPROCsetup:REM INTERRUPT PUTS PEN POSITION INTO !&74 190 FORL%=0TO2STEP2 200 P%=&900 210 [:OPTL%:.i SEI 220 LDA#f MOD256:STA&206:LDA#f DIV256:STA&207 230 LDA#&88:STA&FE4E:CLI:RTS 240 .f LDA&FC:PHA:TXA:PHA:TYA:PHA 250 LDA&FE4D:AND#&88:CMP#&88:BNEout 260 LDA&FE40:LDX#16:STX&FE00:INX 270 LDA&FE01:CMP&71:STA&71 280 BNEd:STX&FE00:LDA&FE01 290 TAY:SBC&70:CLC:ADC#1:BMIe 300 CMP#3:BCSe:STY&74:LDA&71 310 STA&75:JMPout 320 .d STX&FE00:LDY&FE01 330 .e STY&70:LDA#0:STA&74:STA&75 340 .out PLA:TAY:PLA:TAX:PLA:STA&FC:RTI:] 350 NEXT 360 !&70=0:!&74=0 370 *FX20,1 380 CALLi:*FX233,247 390 IFM%=0 O%=&606:C%=80:R%=32:E%=1:G%=&3000:N%=16 400 IFM%=1 O%=&606:C%=40:R%=32:E%=2:G%=&3000:N%=16 410 IFM%=2 O%=&606:C%=20:R%=32:E%=4:G%=&3000:N%=32 420 IFM%=3 O%=&806:C%=80:R%=25:E%=1:G%=&4000:N%=8 430 IFM%=4 O%=&B04:C%=40:R%=32:E%=1:G%=&5800:N%=16 440 IFM%=5 O%=&B04:C%=20:R%=32:E%=2:G%=&5800:N%=32 450 IFM%=6 O%=&C04:C%=40:R%=25:E%=1:G%=&6000:N%=16 460 IFM%=7 O%=&2808:C%=40:R%=25:E%=1:G%=&7C00:N%=16 470 Offset%=1:REM ALTER THIS TO GET THE * UNDER THE PEN 480 ENDPROC