ô > TUBE/src v1.10 4ô Source for *TUBE (ON|OFF|) by J.G.Harston 'ô v1.00 28-Jun-1992 Initial version (-ô v1.10 12-Jun-2016 added parameter 2: <OSARGS=&FFDA:OSBYTE=&FFF4 F.Þ mcode% &200:load%=&FFFF0900:ver$="v1.10" P: Z1host=&A8:num=&A9:lptr=&AA:tube=&27A:lang=&28C d ã P=0 ¸ 1 nP%=load%:O%=mcode% x[OPT P*3+4 ‚.go% Œ,LDA #0:LDX #1:JSR OSBYTE :\ Find MOS –$STX host:TXA:BNE TubeNotElectron   LDA #&FC ªDSTA TUBEIO0+2:STA TUBEIO2+2 :\ Adjust address of Tube registers ´STA TUBEIO3+2:STA TUBEIO6+2 ¾.TubeNotElectron ÈJLDA #1:LDX #lptr:JSR OSARGS :\ Get command line, Y=0 from above ÒBLDA (lptr),Y:CMP #13:BEQ TubeExit :\ No parameters, just exit ÜBLDX host :\ Prepare X=host for later æ1€ #&DF:CMP #—"@":BCC TubeNum :\ *TUBE ð: ú-CMP #—"O":BNE TubeExit :\ Not *TUBE O INY:LDA (lptr),Y:DEY:€ #&DF @LDY tube :\ Get Y=Tube enabled for later )CMP #—"N":BEQ TubeOn :\ *TUBE î ")CMP #—"F":BEQ TubeOff :\ *TUBE ‡ ,9BNE TubeExit :\ Not î or ‡, just exit 6: @ .TubeNum J3JSR ScanDecimal:TAY :\ Y=CPU to select TGPHP:CPX #3:BCC TubeBBCElk :\ Not Master, only a single Tube port ^BSEI:LDA &FE34 :\ Disable IRQs, get current Tube h<‚ #&10:STA &FE34:STY &FEE6 :\ Swap Tube, select Tube CPU r0‚ #&10:STA &FE34 :\ Swap Tube back |.TubeBBCElk † .TUBEIO6 ASTY &FEE6:PLP :\ Select Tube CPU, restore IRQs š .TubeExit ¤RTS ®: ¸ .TubeOff Â9TYA:BPL TubeExit :\ Tube already disabled Ì LDA lang Ö>CMP #&FF:BEQ errNoLang:PHA :\ Check current language ROM à5TAY:LDX #18:BNE Service :\ Reselect filing system H.ServiceInit R LDX #&37 \ .Service f1LDA #143:JMP OSBYTE :\ Issue service call p: z.ScanDecimal „#JSR CheckDigit:BCC errBadNumber Ž.ScanDecimalLp ˜ STA num ¢&JSR CheckDigit:BCC ScanDecimalDone ¬PHA:LDA num ¶,CMP #26:BCS errBadNumber :\ num*10>=260 À+ASL A:ASL A:ADC num:ASL A :\ num=num*10 ÊSTA num:PLA Ô1ADC num:BCC ScanDecimalLp :\ num=num*10+digit Þ.errBadNumber è&BRK:EQUB 252:EQUS "Bad number":BRK ò.ScanDecimalDone üLDA num:RTS : .CheckDigit LDA (lptr),Y $'CMP #—"9"+1:BCS ChkDigitBad :\ >'9' .'CMP #—"0":BCC ChkDigitBad :\ <'0' 8INY:€ #15:RTS B.ChkDigitBad L CLC:RTS V: ` EQUS ver$ j]:í tRñ"*SAVE TUBE "+Ã~mcode%+" "+Ã~O%+" "+Ã~(go%„&FFFF0000)+" "+Ã~(load%„&FFFF0000) ÿ