19781  > 6502.HostFS/srcTINTREM Source for Single Port Tube Client MOS for 6502TINTREM ===
15677 ========================================TINTREM This code ma
25954  freely reused, with acknowl
25959 mentsTINT:TINTREM This implements a Tube client communicating with a hostTINTREM via a single port, such 
24864  serial port, a parallel port,TINTREM or even a single Tube register, all in less than 2K.TINT:TINTREM The link is a tex
26723 annel that escapes out to se
25376 ommandsTINTREM and receive data transfers. This version assumes a clean,TINTREM error-free link channe
 2618 REM Ca
25954  built as a BBC filing syste
30496 ith code to accessTINTREM BBC memory map.TINT:
19781  v0.16 16-Nov-2010 J.G.HarstonTINTREM v0.17 09-Mar-2013 JGH: Added additional Tub
28261 try points,TINTREM             
 8224        EXECUTE enters code w
 8296 A=0/1, SEC/CLC.TINTREM v0.18 07-Apr-2013 JGH: Moved some code that overlapped I/O area.TINTREM       09-Nov-2016 JGH: 
29801 ed slightly to allow conversion to as65 source.TINTREM v0.19 11-Nov-2016 JGH: Added conditionals fo
26995 deways ROM code.TINTREM v0.20 1
24909 r-2017 JGH: Added option for local RDLINE
28783 timised OSCLI.TINTREM v0.21 23-
11618 2018 JGH: *HOSTFS ON sets WRCHV/RDCHV. REM                        Serv3 responds to returned boot
29808 ion.TINT:TINT:TINTREM Specify targetTINTREM ==============TINTver$="0.21":date$=" (23 Feb 2018)"TINTSWROM% =FALSE:REM Build 6
 8242 Client ROMTINTSWROM% =TRUE :REM Build sideways 
 8269 filing systemTINTRDLINE%=TRUE :REM Implement RDLINE locallyTINTRDLINE%=FALSE:REM 
29555  RDLINE to hostTINT:TINTREM BoilerplateTINTREM ===========TINTIF HIMEM>&FFFF:SYS "OS_GetEnv"TOA$:IFLEFT$(
13612 )<>"B6502":OSCLI"B6502"+MID$(A$,
21587 R(A$," "))TINTON ERROR REPORT:PRINT" at line ";ERL:ENDTINTDEFFNif(A%):IFA%:z%=-1
28783 t% ELSE z%=P%:=opt%TINTDEFFNendif:IFz%=-1:=opt% ELSE z%=P%-z
 9552 =P%-z%:O%=O%-z%:=opt%TINTDEFFNelse:IFz%=-1:z%=P%:=opt% EL
31264 %=P%-z%:P%=P%-z%:O%=O%-z%:z%=-1:=opt%TINTDIM mcode% &FFF, L% &7FTINT:TINTR
21280 ystem vectorsTINTREM ==============TINTUSERV=&200:BRKV =&202:IRQ1V=&204:IRQ2V=&
14902 CLIV =&208:BYTEV=&20ATINTWORDV=&20C:WRCHV=&20E:
18499 V=&210:FILEV=&212:ARGSV=&214:BGetV=&216TINTBPutV=&218:GBPBV=&21A:FI
15702 &21C:FSCV =&21E:EVNTV=&220TINT:TINTREM System addressesTINTREM ==========
15677 ==TINTROMSTART%=&F800         :REM Start of ROM code to copy
 8303 RAMTINTIOSPACE% =&FEF0         :REM Start of I/O spaceTINTERRBUF=&236             :REM Error bufferTINTINPBUF=&236:INPEND
12339 0 :REM Supervisor string bufferTINT:TINT
18255    =&EE:REM &EE/F = PROG   - Current programTINTNUM    =&F0:REM &F0/1 = NUM    - 
 8312 accumulatorTINTMEMTOP =&F2:REM &F2/3 = MEMTOP - top of memoryTINTTRANS  =&F4:REM &F4/5 = ADDR   - Data 
28257 sfer address (assembler doesn't like 'INC ADDR')TINTTRANShi=&F6:REM &F6/7 = ADDR+2 - Data transfer address high w
 2660 LPTR   =&F8:REM &F8/9 = String pointer, OSWORD control blockTINTCTRL   =&FA:REM &FA/B = CTRL   - OSFILE, OSGBPB c
29300 ol blockTINTCMD    =&FA:REM         CMD    - Address of command line parametersTINTTEXT   =&FA:REM &FA/B = TEXT 
 8237 PrText string pointerTINTIRQA  
17958 C:REM &FC   = IRQ A storeTINTFAULT  =&FD:REM &FD/E => last e
29295 TINTESCFLG =&FF:REM &FF   = Escape flagTINT:TINTREM I/O values, these are suitable for a 6850TINTREM =====================
15677 ================TINTTxStatus=&FEF0:TxRDY=2:TxData=&FEF1:TxIn
 9789 13:RxStop=&55:REM &13=Reset ACIA, &55=8N1, clock/16, RTS highTINTRxStatus=&FEF0:RxRDY=1:RxData=&FEF1:RxInit=&55:RxC
15732 &15:REM &55=RTS high, &15=RTS lowTINT:TINTREM Serial Tube system valuesTINTREM =========================TINTesc=&9BTINT:TINT
 8269 Declare code start and spaceTINTREM ============================TINTIF 
20306 M%=0:load%=&F800:name$="Serial65"TINTIF SWROM%  :load%=&8000:name$="HostFS"TINT:TINTFOR P=0 
12576 :opt%=P*3+4TINTP%=load%:O%=mcode%TINTPROCasmROMHeaderTINTPROCasmTubeCodeTINTNEXT:IF O%>
20538 RINT "ERROR: Code overrun"TINTOSCLI"
25974  "+name$+" "+STR$~mcode%+" "+STR$~O%+" "+STR$~load%+" "+STR$~load% ON ERROR ON ERROR OFF:END
21280 WROM%:OSCLI"SetType "+name$+" BBC"TINT*QuitTINTENDTINT:TINT:TINTDEFFNerror:IF SWR
14885 [OPT P*3+4:JSR Error:]:=opt% ELSE [OPT P*3+4:BRK:]:=opt%TINT:TINTDEFPROCasmTube
25956 TINT[OPT opt%TINT\ Start of Tube system codeTINT\ =========================TINT\ On hardware reset all of memory reads 
25965  from ROM, all writes go to RAM.TINT\ Accessing any I/O location pages ROM out of memory map, thence all reads
25376 ome from RAM.TINT\TINT.LF800TINTJMP RESETTINT.PrBannerTINTJSR PrTextTINT.BANNERTINTEQUB 13:EQUS "SERIAL TUBE 
12848  64K ":EQUS LEFT$(ver$+" ",5) EQUB 13:EQUB 0 RTS
21536 ube Client Startup CodeTINT\ ========================TINT.RESETTINTSEI:LDX #&00               :\ 
24947 ble interuptsTINT.LF802TINTLDA &FF00,X:STA &FF00,X    :\ Copy entry block to RAMTINTDEX:BNE LF802TINTTINT\ The follo
26478  code copies the page with the I/O registers inTINT\ it without accessing the I/O registers. Modify IOSP
 9541  accordingTINT\ to where the I/O registers actually are.TINTTINTLDX #IOS
17731 % AND 255TINT.LF819TINTLDA &FDFF,X:STA &FDFF,X    :\ Copy &FE00-&FE
29728 o RAM, avoidingTINTDEX:BNE LF819              :\  IO space at &FEFxTINT:
22852  #ROMSTART% AND 255:STY LPTR+0 :\ Point to start of ROMTINTLDA #ROMSTART% D
12832 56:STA LPTR+1TINT.LF82A                     :\ Copy rest of ROM to RAMTINTLDA (LPTR),Y:S
10272 LPTR),Y  :\ Copy a page to RAMTINTINY:BNE LF82A              :\ 
28783  for 256 bytesTINTINC LPTR+1:LDA LPTR+1      :\ Inc. address high byteTINTCMP #&FE:BNE LF82A         :\ Loop up t
17958 DFFTINT:TINT.STARTUPTINTSEI:LDX #&35TINT
14406 0DTINTLDA LFF00,X:STA USERV,X    :\ Set up default vectorsTINTDEX:BPL LF80D:TX
 8224        :\  and clear stackTINTL
 8992 TxInit:STA TxStatus   :\ Initialise port and page ROM outTINTLDA
30802 Init:STA RxStatusTINT             
 8224           :\ Accessing I/O r
29545 ters will page ROM out if runningTINT                           :\ from RAM. Once ROM is paged out we 
 8302 do subroutineTINT                           :\ calls as we can now read from stack in RAM.TINTTINTLDA 
12336 :STA ESCFLG:STA MEMTOP+0    :\ Cle
17696 scape flagTINTLDA #ROMSTART% DIV 256:STA MEMTOP+1 :\ Set memtop to start of ROMTINTJSR InitError                    
14880 \ Claim error handlerTINTLDA PR
12331 :STA TRANS+0              :\ Copy PROG to TRANS addressTINTLDA PROG+1:
 8257 TRANS+1TINTTINT\ Tell the Host that we've restartedTINT\ --------------------------------
23562  Tube data  &18 &00 &FF &FF  --  Cy Y XTINT\
 8224         followed by stringTINT\
20000 ote for Host authors, Host MUST NOT respond by echoing back a SoftResetTINT\ as the Client 
27756  be trapped in an infinite STARTUP loop. If Host wantsTINT\ to read Client to determine CPU this will ch
25959  TRANS so must only beTINT\ done if a later transaction will set TRANS after a language transfer, egTINT\ on Har
25938 set.TINT\TINTLDX #0:LDA #&FF:TAY  
 8224   :\ As we are using a seria
26988 nk, send Soft ResetTINTJSR osFS
22612 A              :\ Sends A=&FF, X=0 Soft Reset, Y=&FF n
28514 otTINT.STARTUP2TINTPHA            
 8224         :\ Save returned Ack
29817 e, will be &00 if no responseTINTJSR PrBanner:JSR OSNEWL    :\ Display startup bannerTINTLDA #CmdPro
 8308 AND 255     :\ Next time RESET is soft entered,TINTSTA LF800+1                :\  banner not printedTINTLDA #CmdPr
29808  DIV 256TINTSTA LF800+2TINTPLA:CLC:JSR WaitCheckCode  :\ Check Ack code, if &80 enter code,TINT:                  
 8224     :\  else enter command p
28781 t loopTINTTINTTINT\ Supervisor Command promptTINT\ =========================TINT.CmdPromptTINTLDX #&FF:TXS:JSR InitError     
14880 \ Reset stack, claim error h
27748 erTINTLDA #CmdPrompt AND 255:STA PROG+0 :\ Make Command Prompt the current programTINTLDA #CmdPrompt DIV 256:STA
20306 G+1TINT.CmdOSLoopTINTLDA #ASC"*":JSR OSWRCH     :\ Print '*' promptTINTLDX #LF95D AND
13621 TINTLDY #LF95D DIV 256TINTLDA #&00:JSR OSWORD       
 8284 Read line to INPBUFTINTBCS CmdOSEscapeTINTLDX #INPBUF AND 25
17484 Y #INP
 8262 DIV 256        :\ Execute commandTINTJSR OS_CLI:JMP CmdOSLoop   :\  and loop back fo
28257 otherTINT.CmdOSEscapeTINTLDA #&7E:
 8274 OSBYTE        :\ Acknowledge Escape stateTINTOPT FNerror:EQUB 17:EQUS "Escape":BRK
 8284 Contro
27746 ock for command prompt input
11552 -------------------------------------TINT.LF95DTINTEQUW INPBUF                :\ Input text to
20558 BUFTINTEQUB INPEND-INPBUF         :\ Maximum number of charactersTINTEQUB &
17722 QUB &FF          :\ Min=&20, Max=&FFTINTTINTTINT\ Err
26656 andlerTINT\ =============TINT.InitErrorTINTLDA #ErrorHandler AND 255:STA BRKV+0 :\ Claim error handlerTINTLDA #ErrorHandle
18756 V 256:STA BRKV+1TINTRTSTINTTINT.Error
25710 lerTINTLDX #&FF:TXS               :\ Reset stackTINTJSR OSNEWLTINTLDX FAULT+0:LDY FAULT+1TINTINX:BNE P%+3
22862            :\ XY=>error stringTINTJSR PRSTRNG                :\ Print er
 8306 stringTINTJSR OSNEWL:JMP CmdPrompt   :\ Jump to command promptTINTTINTTINT\ Interrupt handlersTINT\ ==================TINT.IR
28257 dlerTINTSTA IRQA:PLA:PHA           :\ Save A, get flags from stackTINTAND 
12337 :BNE BRKHandler    :\ If BRK, jump
 8303 BRK handlerTINTJMP (IRQ1V)                :\ Continue via IRQ1V handlerTINT.IRQ1HandlerTINTJMP (IRQ2V)                :\ 
29555  on to IRQ2VTINT.BRKHandlerTINTTXA:PHA                    :\ Save XTINTTSX:LDA &0103,X            :\ G
24864 ddress from stackTINTCLD:SEC:SBC #&01:STA FAULT+0TINTLDA &0104,XTINTSBC #&00:STA FAULT+1       :\ &FD/E=>after BRK opcode
16716 :TAX:LDA IRQA           :\ Restore X, get saved ATINTCLI:JMP (BRKV)            
 8284 Restore IRQs, jump to Error HandlerTINT.IRQ2HandlerTINTLDA I
 8257                   :\ Restore saved ATINT.NMIHandlerTINTRTITINTTINTTINT\ Skip SpacesTINT\ ======
15677 =TINT.SkipSpaces1TINTINYTINT.SkipSpacesTINTLDA (LPTR),Y:CMP #&20:BEQ 
28777 Spaces1TINT.NullReturnTINTRTSTINTTINT\ Scan hexTINT\ ========TINT.ScanHexTINTLDX #&00:STX NUM+0:STX NUM+1 :\ Clear hex accum
29793 orTINT.LF98CTINTLDA (LPTR),Y                :\ Get current characterTINTCMP #&30:BCC LF9B1          :\ <'0', exit
20557  #&3A:BCC LF9A0          :\ '0'..'9', add to accumulatorTINTAND #&
21306 BC #&07:BCC LF9B1 :\ Convert letter, if <'A', exitTINTCMP #&40:BCS LF
 8241          :\ >'F', exitTINT.LF9A0TINTASL A:ASL A:ASL A:ASL A     :\ *
19466 DX #&03                    :\ Prepare to move 3+1 
29556 TINT.LF9A6TINTASL A:ROL NUM+0:ROL NUM+1   :\ Move bits into accumulatorTINTDEX:BPL LF9A6               :\ Loop
29295  four bits, no overflow checkTINTINY:BNE LF98C               :\ Move to next characterTINT.LF9B1TINTRTSTINTTINTTINT\
21327  INTERFACETINT\ ~~~~~~~~~~~~~TINT\TINT\TINT\ OSRDCH - Wait for character from input s
24933 mTINT\ =============================================TINT\ On exit, A =char, Cy=Escape flagTINT\TINT.osRDCHTINTJSR WaitByte:PH
 8224         :\ Wait for characte
17484 A ESCF
16698 SL A           :\ Get Escape flag to carryTINTPLA:RTS                 
14880 \ Get character to A and ret
 2670 TINTTINT\ OSRDCH - Request character via TubeTINT\ ===================================TINT\ On exit, A =char, Cy=Escape fl
23562 TINT\ Tube data  &00  --  Carry CharTINT\TINT.osRDCH_IOTINTLDA #&00:JSR SendCommand   :\ Send command &00 - OSR
 2632 .WaitCarryChar             :\ Wait for Carry and ATINTJSR WaitByte
19539  A         :\ Wait for carryTINTJMP WaitByteTINTTINTTINT\ OSCLI - Execute
28015 mandTINT\ =======================TINT\ On entry, XY=>command stringTINT\ On exit,  All registers corrupt
 2570 \ Local *commandsTINT\ ---------------TINT.CmdTableTINTEQUS "GO":EQUB &80TINTEQUS "HELP":EQUB &81TINTEQUB 0TINTTINT.o
18764 TINTSTX LPTR+0:STY LPTR+1      :\ LPTR=>command stringTINTLDY #&FFTINT.o
18764 lp0TINTJSR SkipSpaces1TINTCMP #ASC"*":BEQ osCLIlp0   :\ Skip spaces a
29472 tarsTINTCMP #ASC"A":BCC osCLI_IO   :\ Doesn't start with a letterTINTLDX #&FF:DEY               :\ Poi
29728 o before start of stringsTINT.osCLIlp1TINTTYA:PHA                    :\ Save start of command lineTINT.osCLIlp2TINTINX:INY  
 8224                  :\ Step to 
29816  charactersTINTLDA CmdTable,X:BMI osCLImatch :\ Check for end of commandTINTLDA (LPTR),YTINTCMP #ASC".":BE
29551 CLIskip     :\ EQ+CS = abbre
29793 ed commandTINTAND #&DF                      :\ Force upper caseTINTCMP CmdTable,X:BEQ osCLIlp2   :\ Check m
 8293 charactersTINTCLC                           :\ CC=skip this commandTINT.osCLIskipTINTINXTINTLDA CmdTable,X:BPL osCLIskip  
21280 tep to end of entryTINTBCS osCLIdot                  :\ CS=abbreviated commandTINT.osCLInomatc
19536 A:TAY 
 8224                   :\ Restore
28265 e pointerTINTLDA CmdTable+1,X:BNE osCLIlp1 :\ Not at end of tableTINTBEQ osCLI_IO                  :\ End of t
25964 , pass to TubeTINT.osCLImatchTINTLDA (LPTR),YTINTCMP #ASC"A":BCS osCLInomatch  :\ More letters, check n
 8308 entryTINTDEY                           :\ Prepare to skip any spacesTINT.osCLIdotTINTPLA:JSR SkipSpaces1        :\ Drop saved
26991 nter, step past dot, skip spacesTINTLDA CmdTable,X             :\ Get command byteTINTCMP #&81:BEQ CmdHelp       :
14374 1, jump to *HelpTINT           
 8224             :\ Fall through 
10784 GoTINTTINT\ *GO - call machine codeTINT\ -----------------------TINT.CmdGoTINTJSR ScanHex:JSR SkipSpaces   :\ Read hex val
24864 nd move past spacesTINTCMP #&0D:BNE osCLI_IO        :\ More parameters, pass to Tube to deal withTINTTX
17730 Q CmdGo2:LDX #NUM-PROG :\ If no parameters, jump to PR
 8236 else jump to NUMTINT.CmdGo2TINTLDA PROG+0,X:STA TRANS+0   :\ Set address 
27168 ump toTINTLDA PROG+1,X:STA TRANS+1TINTBCS SaveEnterCode          :\ CS set from CMP earlierTINTTINT\ *Help - Display he
26912 nformationTINT\ --------------------------------TINT.CmdHelpTINTJSR PrBanner               :\ Print help messageTINT    
 8224                    :\ Contin
29728 o pass '*Help' command to TubeTINTTINT\ OSCLI - Send command line to hostTINT\ ===========================
15677 ==TINT\ On entry, &F8/9=>command stringTINT\TINT\ Tube data  &02 s
28265 g &0D  --  &7F or &80TINT\TINT.osCLI_IOTINTLDA #&02:JSR SendCommand   :\ Send command &02 - OSCLITINTJSR SendStringF8     
 8224   :\ Send command string at 
21076 TINT:                          :\ Drop through to wait for Ack and enter codeTINTTINT
26977 tEnterCodeTINTJSR WaitByte:SEC           :\ Wait for Ack from TubeTINT.WaitCheckCodeTINTROL 
17218 C SaveEnterDone    :\ If <&80, exitTINTROR A             
 8224      :\ Restore Carry, CC=RE
11348  CS=OSCLITINT.SaveEnterCodeTINTLDA PROG+1:PHA:LDA PROG+0:PHA :\ Save cu
28261 t programTINTJSR EnterCode:\TAX            :\ Enter code, save return valueTINTPLA:STA PROG+0:STA MEMTOP+0   :\ Rest
 8293 current programTINTPLA:STA PROG+1:STA MEMTOP+1   :\  and set top of memory to itTINTLDA #0:\TXA                   :\
29245 eturn valueTINT.SaveEnterDoneTINTRTSTINTTINTTINT\ FSC - FSC FunctionsTINT\ ====
15677 ===========TINT\ On entry, A, X, Y=FSC parametersTINT\ On exit,
11329  X, Y=return valuesTINT\TINT\ Tube
29793 a  &18 X Y A  --  &FF Y X orTINT\                           &7F then string -- respsonseTINT\TINT.osFSCTINTP
19514 DA #&18:SEC:BCS ByteHi2TINTTINTTINT\ OSBYTE - Byte MOS functionsTINT\ ===
15677 ====================TINT\ On entry, A, X, Y=OSBYTE parameter
 8284 On exi
 8224 A  preservedTINT\           If A<&80, X=ret
25966 d valueTINT\           If A>&7F, X, Y, Carry=returned valuesTINT\TINT.osBYTETINTCMP #&80:BCS ByteHigh      :\ Jump for lon
21327 BYTEsTINT\TINT\ BYTELOTINT\ Tube data
12326 4 X A    --  XTINT\TINTPHA:LDA #&0
21322 R SendCommand  :\ Send command &04 - BYTELOTINTTXA:JSR Se
31042 te           :\ Send single parameterTINTPLA:PHA:JSR SendByte       :\ Send functionTINTJSR WaitByte:T
 8224          :\ Get return valueTINTPLA:RTS                    :\ Restore A and returnTINTTINT.By
26952 ghTINTCMP #&82:BEQ Byte82        :\ Read memory high wordTINTCMP #&83:BEQ Byte83        :\ Read bottom 
27936 emoryTINTCMP #&84:BEQ Byte84        :\ Read top of memoryTINT\TINT\ BYTEHITINT\ Tube data  &06 X Y A  --  Cy Y
23562 TINTPHA:LDA #&06:CLCTINT.ByteHi2TINTPHP:JSR SendCommand:PLP    :\ Send command &06 or &18 - B
18501 I or FSCTINTTXA:JSR SendByte           :\ Send first parameterTINTTYA:JSR SendByte    
 8224    :\ Send second parameterTINT
14913 JSR SendByte           :\ Send functionTINTBCS ByteHi3                :\ Sk
20256 SBYTE checksTINTCMP #&8E:BEQ WaitEnterCode :\ If select language, check to enter codeTINTCMP #&9D:BEQ LFAEF:CLC   
23610  Fast return with Fast BPUTTINT
29817 eHi3TINTPHA:JSR WaitByte:BCC ByteHi4 :\ Get Carry or byte/string 
28787 onseTINTASL A:BCC FSCString          :\ Jump to send FSC stringTINT.ByteHi4TINTASL A:JSR WaitByte:TAY     
18208 et return high byteTINTJSR WaitByte:TAX:PLA       :\ Get return low byteTINT.LFAEFTINTRTSTINTTINT.Byte8
17484 X MEMTOP+0:LDY MEMTOP+1:RTS :\ Read top of memoryTINT.Byt
14899 LDX #&00:LDY #&08:RTS  :\ Read bottom of memoryTINT.Byt
14898 LDX #&00:LDY #&00:RTS  :\ Return &0000 as memory hig
28535 rdTINTTINT.FSCStringTINTPLA:JSR SendS
28265 g         :\ Send stringTINTLDY #&FFTINT.FSCStrLp2TINTINY:LDA (LPTR),YTINTCMP #ASC"!":BCS FSCStrLp2  :\ Skip to ' ' or <cr
17732 YTINT\ Ch
 8299 - does this cope with *cmd *RUN */ *space/space ?TINT.FSCStrLp3TINTINY:LDA (LPTR),YTINTCMP #ASC" ":BEQ F
29779 rLp3  :\ Skip to non-' 'TINTTYA:CLC:ADC LPTR+0:STA CMD+0TINTLDA LPTR+
17473 C #0:STA CMD+1:\ Point to command parametersTINTJSR WaitE
29285 Code          :\ Wait for Ack, enter code if neededTINTBPL LFAEF                  :\ Response=<&40, all done, retur
25970 sponseTINT:                    
 8224   :\ Response=&40 (&80 at th
28704 oint), print textTINT.FSCStrChrTINTJSR WaitByte               :\ Wait for a characterTINTCMP #&00:BEQ LFAEF         :\ &
29728 erminates stringTINTJSR OSWRCH:JMP FSCStrChr   
20512 rint characterTINTTINTTINT\ OSWORD - Various functionsTINT\ ==========================TINT\ On entry, A
30054 nctionTINT\           XY=>control blockTINT\TINT.osWORDTINTSTX LPTR+0
22868  LPTR+1      :\ LPTR=>control blockTINTTAY:BEQ RDLINE             :\ OSWORD 0, jum
28532  read lineTINT\TINT\ Tube data  &0
 8257 in_length block out_length  
 8224 blockTINT\TINTPHA:PHA                    :\ Sav
30054 nctionTINTLDA #&08:JSR SendComm
 8292   :\ Send command &08 - OSWORDTINTPLA:JSR SendByte           :\ Send functionTINTTAX:BPL WordSendLow        :\ J
 8304 with functions<&80TINTLDY #&00:LDA (LPTR),Y      :\ Get send block length from control blockTINTTAY:JMP WordSen
 8224         :\ Jump to send cont
 8300 blockTINTTINT.WordSendLowTINTLDY WordLengthsTx-1,X      :\ Get send block length from tableTINTCPX #&15:BCC WordSend   
14880 \ Use this length for OSWORD
29728 o &14TINTLDY #&10                   :\ Send 16 b
29541  for OSWORD &15 to &7FTINT.WordSendTINTTYA:JSR SendByte           :\ Send send block lengthTINTDEY:BMI LFB45             
 8284 Zero or &81..&FF length, nothing to sendTINT.LFB38TINTLDA (L
10578 ,Y:JSR SendByte  :\ Send byte from control blockTINTDEY:BPL LFB38              :\ L
 8304 for number to be sentTINT.LFB45TINTTXA:BPL WordRecvLow        :\ Jump with functions<&80TINTLDY #&01:LDA (LPTR),Y   
14880 \ Get receive block length f
 8301 control blockTINTTAY:JMP WordRecv           :\ Jump to receive control blockTINTTINT.WordRecvLowTINTLDY WordLengthsRx-1
 8224     :\ Get receive length from tableTINTCPX #&15:BCC WordRecv      :\ Use this length f
20256 SWORD 1 to &14TINTLDY #&10                   :\ Receive 16 bytes for OSWORD &15 to &7FTINT.WordRecvTINTTYA:JSR SendByte
 8224        :\ Send receive block
28261 gthTINTDEY:BMI LFB71              :\ Zero of &81..&FF length, nothing to receiveTINT.LFB64TINTJSR WaitByte:STA (L
10578 ,Y  :\ Get byte to control blockTINTDEY:BPL LFB64              :\ Loop for number t
25970 ceiveTINT.LFB71TINTLDY LPTR+1:LDX 
21076 +0:PLA  :\ Restore registersTINTRTSTINTTINTTINT\ RDLINE - Read a line of textTINT\ ========
15677 ================TINT\ On entry, A =0TINT\           XY=>control
28524 ckTINT\ On exit,  A =undefinedTINT\           Y =length of returned stringTINT\           Cy=0 ok, Cy=1
25459 apeTINT\TINT\ Tube data  &0A block  --  &FF or &7F string &0DTINT\TINT.RDLINE
21584  FNif(RDLINE%)          :\ Perform RDLINE locallyTINTLDY #2TINTLDA (LPTR),Y:STA L
11090 2    :\ Copy control block to w/sTINTDEY:LDA (LPTR),Y:TAXTINTDEY:LDA (LPTR),YTINTSTA LPTR
21306 TX LPTR+1      :\ (LPTR)=>string buffer, LPT
15666 max lengthTINT.Word00Lp1TINTJSR OSRDCH:BCS Wo
12336 Esc   :\ Wait for characterTINTCMP #&7F:BNE Word00Char    :\ Not DeleteTINT.Word00DeleteTINTTYA:BEQ Word0
12656           :\ Nothing to deleteTINTLDA #&7F:JSR OSWRCH        :\ VDU 127TINTDEY
20557  Word00Lp1          :\ Dec. counter, loop backTINT.Word00CharTINTCMP #&08:BE
28503 rd00Delete  :\ BS is also De
25972 TINTCMP #&15:BNE Word00Ins     :\ Not Ctrl-UTINTTYA:BEQ Word00Lp1          :\ Nothing to deleteTINTLDA #&7
22318 ord00L
18954 SR OSWRCH:DEY             :\ Delete characters
17742  Word00Lp2TINTBEQ Word00Lp1              :\ Jump back to startTINT.W
12388 0InsTINTSTA (LPTR),Y               :\ Store characterTINTCMP #&0D:CLC:BEQ Word00cr  :\ Return - finishTINTCPY LPTR+2:BC
28503 rd00max   :\ Maximum lengthTINT
 8272 #&20:BCS Word00ctrl    :\ Control characterTINTDEY                        :\
28257 cel following INYTINT.Word00ctrlTINTINY:JSR OSWRCH             :\ Inc
28515 unter, print characterTINT.Word
24941 xTINTJMP Word00Lp1              :\ Loop for mor
22318 ord00c
21322 R OSNE
17210 LC             :\ Return with CC, Y=lengthTINT.Word00EscTINTRTSTINTOPT FNelseTINTLDA
12326 A:JSR SendCommand   :\ Send com
25710  &0A - RDLINETINTLDY #&04TINT.LFB7ETINTLDA (LPTR),Y:JSR SendByte  :\ Send control blockTINTDEY:CPY #&01:B
19488 FB7E     :\ Loop for 4, 3, 2TINTLDA #&07:JSR SendByte      :\ Send &
24864 s address high byteTINTLDA (LPTR),Y:PHA           :\ G
29728 ext buffer address high byteTINTDEY:TYA:JSR SendByte       :\ Send &00 as address low byteTINTLDA (LPTR),Y:PHA        
14880 \ Get text buffer address lo
31074 teTINTLDX #&FF:JSR WaitByte    
23610  Wait for responseTINTASL A:BCS
19556 ineEscape     :\ Jump if Escape returnedTINTPLA:STA LPTR+0:PLATINTSTA LPTR+1:LDY #&0
 8224      :\ Set &F8/9=>text buff
11786 RdLineLpTINTJSR WaitByte:STA (LPTR),Y  :\ Store returned characterTINTINY:CMP #&0D:BNE RdLineLp  :\ Loop until <cr>TINT
 8257 #&00:DEY:CLC:INX       :\ Return A=0, Y=len, X=00, Cy=0TINTRTSTINT.RdL
17765 scapeTINTPLA:PLA:LDA #&00           :\ Return A=0, Y=len, X=FF, Cy=1TINTRTSTINTOPT FNendifTINTTINT\ OSWORD control block 
26478 thsTINT\ ----------------------------TINT.WordLengthsTxTINTEQUB &00:EQUB &05:EQUB &00:EQUB &05TINTEQUB &04:EQ
 9760 05:EQUB &08:EQUB &0ETINTEQUB &04:EQUB &01:EQUB &01:EQUB &05TINTEQUB 
14896 EQUB &08:EQUB &20:EQUB &10TINTEQUB &0D:EQUB &00
21841 B &04:EQUB &80TINT.WordLengthsRxTINTEQUB &05:EQUB &00:EQUB &05:EQUB &00
21841 B &05:EQUB &00:EQUB &00:EQUB &00TINTEQUB &05:EQUB &09:EQUB &05:EQUB 
 2608 EQUB &08:EQUB &19:EQUB &00:EQUB &01TINTEQUB &0D
21841 B &80:EQUB &04:EQUB &80TINTTINTTINT\ OSARGS - Read info on open fileTINT\ ===
15677 ========================TINT\ On entry, A =functionTINT\       
 8224 X =>data word in zero pageTINT\
 8224        Y =handleTINT\ On exit, 
15648 returned valueTINT\           X  preservedTINT\           Y  preser
 2660 \TINT\ Tube data  &0C handle block function  --  result blockTINT\TINT.osARGSTINTPHA:LDA #&0C:JSR SendCommand
 8284 Send command &0C - OSARGSTINTTYA:JSR SendByte           :
25939 nd handleTINTLDA &03,X:JSR Send
25972      :\ Send data wordTINTLDA &02,X:JSR SendByteTINTLDA &01,X:JSR SendByteTINTLDA &00,X:JSR SendByteTINTPLA:JSR SendByte         
23610  Send functionTINTJSR WaitByte:
 8257           :\ Get and save resultTINTJSR WaitByte:STA &03,X     :\ Recei
25632 ata wordTINTJSR WaitByte:STA &02,XTINTJSR WaitByte:STA &01,XTINTJSR WaitByte:STA &00,XTINTPLA:RTS            
 8224     :\ Get result back and r
29301 nTINTTINTTINT\ OSBGET - Get a byte from open fileTINT\ ==================================TINT\ On entry, Y =handleTINT\ On exit,  
25149 yte ReadTINT\           Y =pres
25974 dTINT\           Cy set if EOFTINT\TINT\ Tube data  &0E handle --  Carry byteTINT\TINT.osBGETTINTLDA #&0E:JSR SendCommand   :\ S
 8292 command &0E - OSBGETTINTTYA:JSR SendByte           :\ Send handleTINTJMP WaitCarryChar          :\ Jump to wait 
 8306 Carry and byteTINTTINTTINT\ OSBPUT - Put a byte to an open fileTINT\ ===================================TINT\ On entry, A 
29817 e to writeTINT\           Y =handleTINT\ On exit,  A =preservedTINT\           Y =preservedTINT\TINT\ Tube da
 8224 &10 handle byte  --  &7FTINT\TINT.osBPUTTINTPHA:LDA #&10:JSR SendCommand :\ Send command &10 - OSBPUTTINT
14913 JSR SendByte           :\ Send handleTINTPLA:JSR SendByte           :\ Send byteTINTPHA:JSR
26977 tByte:PLA:RTS   :\ Wait for acknowledge and returnTINTTINTTINT\ OSFIND - Open or Close a fil
 8284 ======
15677 ===================TINT\ On entry, A =functionTINT\           Y
24936 ndle or XY=>filenameTINT\ On exit,  A =zero or handleTINT\TINT\ Tu
25632 ata  &12 function string &0D  --  handleTINT\            &12 &00 handle  --  &7FTINT\TINT.osFINDTINTPHA:LDA #
14898 JSR SendCommand :\ Send command &12 - OSFINDTINT
14913 JSR SendByte           :\ Send functionTINTCMP #&00:BNE OPEN          :\ If
12350 , jump to do OPENTINT\ CLOSETINTPHA:TYA:JSR SendByte       :\ 
25710  handleTINTJSR WaitByte:PLA:RTS       :\ Wait for acknowledge, restore regs and returnTINT.OPENTINTJSR Sen
29300 ing             :\ Send pathnameTINTJMP WaitByte               :\ Wait for and ret
 8302 handleTINTTINTTINT\ OSFILE - Operate on whole filesTINT\ ===============================TINT\ On entry, A =functionTINT\        
22560 Y=>control blockTINT\ On exit, 
15648 resultTINT\           control block updatedTINT\TINT\ Tube data  &14 b
27491  string <cr> function  --  result blockTINT\TINT.osFILETINTSTX CTRL+0:STY CTRL+1        :\ CTRL=>control blockTINTPHA:L
 8992 &14:JSR SendCommand :\ Send command &14 - OSFILETINTLDY #&11TINT.LF
 2630 LDA (CTRL),Y:JSR SendByte  :\ Send control blockTINT
14937 CPY #&01:BNE LFC5F     :\ Loop for &11..&02TINTDEY:LDA (CTRL),Y:TAXTINT
14937 LDA (CTRL),Y:TAY       :\ Get pathname address to XYTINTJSR SendString       
 8224   :\ Send pathnameTINTPLA:JSR S
16996 yte           :\ Send functionTINTJSR WaitByte:PHA           :\ Wait for resultTINTLDY #&11TINT.LFC7ETINTJSR WaitByte:
 8257 (CTRL),Y  :\ Get control block backTINTDEY:CPY #&01:BNE LFC7E     :\ Loop for &11..
 2610 LDY CTRL+1:LDX CTRL+0      :\ Restore regist
 2675 PLA:RTS                    :\ Get result and returnTINTTINTTINT\ OSGBPB - Multiple byte Read and writeTINT\ ==============
15677 ===================TINT\ On entry, A =functionTINT\           X
25406 ontrol blockTINT\ On exit,  A =returned valueTINT\             
28271 trol block updatedTINT\TINT\ Tube data  &16 block function  --   block Carry resultTINT\TINT.osGBPBTINTSTX CTR
14896 STY CTRL+1        :\ CTRL=>control bloc
18512 A:LDA 
13873 :JSR SendCommand :\ Send command &
11552  OSGBPBTINTLDY #&0CTINT.LFC9ATINTLDA (CTRL),Y:JSR SendByte 
 8284 Send control blockTINTDEY:BPL LFC9A              :\ Loop 
 8306 &0C..&00TINTPLA:JSR SendByte           :\ Send functionTINTLDY #&0CTINT.LFCA8TINTJSR WaitByte:STA (CTRL),Y  :\ Get cont
 8300 block backTINTDEY:BPL LFCA8              :\ Loop for &0C..&00TINTLDY CTRL+1:LDX CTRL+0      :\ Restore registersTINT
 8272 WaitCarryChar          :\ Jump to get Carry and resultTINTTINTTINT\ Tube I/O routi
 2675 \ =================TINTTINT\ Send a stringTINT\ -------------TINT.SendStringTINTSTX LPTR+0:STY LPTR+1      :\ Se
20556 TR=>stringTINT.SendStringF8TINTLDY
12326 0TINT.LF9B8TINTLDA (LPTR),Y:JSR SendB
 8293  :\ Send character to I/OTINTINY:CMP #&0D:BNE LF9B8     :\ Loop until <cr> sentTINTLDY LPTR+1:RTS             :\ Resto
22816  from &F9 and returnTINTTINTTINT\ OSWRCH - Send character to output streamTINT\ =============================
15677 =======TINT\ On entry, A =characterTINT\ On exit,  A =preserved
23562  Tube data  character  --TINT\TINT.osWRCH                    :\ WRCH is simply SendByteTINTTINTTINT\ Tu
17184 ore I/O RoutinesTINT\ ======================TINT\ Characters and commands are sent over the same single
29295 tTINT\ Outward commands are escaped, and inward responses are escapedTINT\TINT\ OutwardTINT\   x                 VDU xTINT\
25888 sc,esc           VDU escTINT\  
25459 ,n             MOS function, control block followsTINT\TINT\ InwardTINT\   x                 char/byte xTINT\
25888 sc,esc           char/byte e
23562    esc,&00           BRK, error number+text+null followsTINT\   esc,<&80          read returned co
28530 l block set lengthTINT\   esc,&8n           Escape change, b0=new stateTINT\   esc,&9x,Y,X,A     EventTINT\   esc,&Ax    
 8224    reserved for networkingTINT\
25888 sc,&Bx           end transfe
 8284   esc,
11384 addr      set addressTINT\   esc,&Dx,addr      execute addressTINT\  
25459 ,&Ex,addr      start load from addressTINT\   esc,&Fx,addr      start save from addressTINT\   All comm
29540  are data inward, except esc,&Fx which is data outwardTINTTINTTINT\ Send a byte, escaping it if neededTINT\ ----------
11565 --------------------TINT\ On entry, A=byte t
25971 ndTINT\ On exit,  A,P preserved
11786 SendByteTINTPHP:JSR SendData           :\ Send byteTINTCMP #esc:BNE SendByte2     :\ If not es
25632 oneTINTJSR SendData               :\ If esc
25971 nd twice to prefix itTINT.SendB
12901 TINTPLP:RTSTINTTINT\ Send an escaped commandTINT\ -----------------------TINT\ On entry, A=commandTINT\ On exit,  A,X,Y preserved,
25376 orruptedTINT.SendCommandTINTPHATINT.SendCmdLpTINTJSR ReadByte:BCS SendCmdLp :\ Flush inp
19466 DA #esc:JSR SendData      :\ Send esc prefixTINTPLA:JMP SendData           :\ Send command byte (always <&80)TINTTINT\ Ch
 8299 if a byte is waiting, and read it if thereTINT\ ------------------------------------------------TINT\
 8302 exit, P=EQ CC - nothing waitingTINT\          P=NE CS - byte waiting, returned
 8302 ATINT\TINT.ReadByteTINTJSR ReadData               :\ See if data presentTINTPHP:BCS WaitByte2          :\ Data pr
28261 t, continue with itTINTPLP:LDA #0:RTS             :\ No data presentTINTTINT\ Wait for a byte, decoding escaped dataTINT\ -
11565 ---------------------------------TINT\ On ex
 8236 A =byteTINT\          P =preservedTINT\TINT.WaitByteTINTPHPTINT.WaitByteLpTINTJSR WaitData               :\ Wait for data presentTINT
26977 tByte2TINTBNE WaitByteOk             :\ Not esc, return itTINTJSR WaitData:BEQ WaitByteOk
25888 sc,esc, return as escTINTPHA:TYA:PHA:TXA:PHA:TSX    :\ Save registersTINTLDA &103,X:JSR WaitCo
28257 d :\ Decode escaped commandTINTPLA:TAX:PLA:TAY:PLA        :\ Restore registersTINTJMP WaitByteLp             :\
28527 p back to wait for a byteTINT.WaitByteOkTINTPLP                        :\ Rest
 8293 flagsTINT.WaitByteOk2TINTRTS                        :\ Return byteTINTTINT\ Wait for raw byte of dataTINT\ ------------------
11565 ---TINT\ On exit, A =byteTINT\          P =EQ b
15717 esc, NE byte<>escTINT\TINT.WaitDataTINTJSR ReadData:BCC WaitData  :\ Loop until data presentTINTRTSTINTTINT\ Decode escaped comman
 8284 ------
11565 ------------TINT\ On entry, A=command, P set
25443 ordinglyTINT\ All registers can be trashedTINT\TINT.WaitCommandTINTBEQ WaitError              :\ esc,&00 
29285 rorTINTBMI WaitTransfer        
14880 \ esc,>&7F - data transferTINTTINT
29541 c,1..127 - read a control bl
 2667 \ ---------------------------------TINTTAY                        :\ Move count to YTINT.WaitLengthTINTJ
22304 aitByte               :\ Wait for a byteTINTDEY:STA (CTRL),Y           :\ Store i
20546 L Wait
26478 th:RTSTINTTINT\ esc,&00 - errorTINT\ ---------------TINT.WaitErrorTINTSTA ERRBUF:TAY             :\ Store error 
 2635 JSR WaitByte:STA ERRBUF+1  :\ Store error numberTINT.WaitErrorLpTINTJSR WaitByte:STA
21074 BUF+2,Y:\ Store error characterTINTINY:CMP #0:BNE WaitErrorLp :\ Loo
28277 til final &00TINT:TINT\\ This does
 8308 workTINT\\ .WaitErr1TINT\\ LDA #&1E:\JSR 
25710 Command   :\ Send a SYNC commandTINT\\ JSR ReadByte:\BCC WaitErr1  :\ Wait until Host respondsTINT\\ .W
17780 rr2TINT\\ JSR ReadByte:\BCS WaitErr2  :\ Flush everything from hostTINT:TINTLDX #16:TAYTINT.WaitErr1TINTDEY:BNE Wait
12658            :\ Pause a while to let HostTINTDEX:BNE WaitErr1           :\  reconnect after an errorTINT:TINTJSR WaitExit
25964 ase        :\ Release Tube, restore ScreenTINTLDA ERRBUF+1:ORA ERRBUF+2  :\ Check for error 0,""TINTBEQ
11045 5:JMP ERRBUF        :\ Jump to error, no returnTINTJMP STARTUP2               :
29253 ror 0,"" is RESETTINTTINT\ esc,&8n
17696 scape changeTINT\ -----------------------TINT.W
21620 ransferTINTCMP #&C0:BCS WaitStartTINTCMP #&A0:BCS WaitEndTINTCMP #&90:BCS WaitEventTINTLSR A:ROR ESCFLG:RTS      
 8284 Set error flag from b0TINTTINT\ esc,&9x - EventTINT\ ----------
11565 -TINT.WaitEventTINTJSR WaitByte:TAY           :
25926 tch event Y parameterTINTJSR Wa
31042 te:TAX           :\ Fetch event X parameterTINTJSR WaitByte               :\ Fetch event A parameterTINTJMP (EVNTV)   
 8224          :\ Dispatch to even
25974 ctorTINTTINT\ esc,&Ax - ReservedTINT\
11565 ---------------TINT.WaitEndTINTCMP #&B0:BCC Wai
27000 t      :\ Return to WaitByteTINTTINT\ esc,&Bx - End transferTINT\ --------
11565 ----------TINTPLA:PLA:PLA:PLA:PLA:PLA    :\ 
 8304 JSR WaitCommand, A,Y,X,ATINTPLA:PLA                    :\ Pop JSR Wait/ReadByte in Load/SaveLoopTINT.WaitExitSave
16716 :BPL WaitExitRelease    :\ Pop transfer flag, b0=0 - Tube releaseTINTROR A:BCS 
29801 ExitScreen   :\ b0=1, Screen releaseTINT.WaitExitTINTRTSTINT.WaitExitReleaseTINTOPT FNif(SWROM%)TINT  JSR Tu
25938 lChk           :\ Release if Tube presentTINTOPT FNendifTINT.WaitExitScreenTINTOPT FNif(SWROM%)TINT  LDY #0:J
30240 ramSelect    :\ Page in main memory, return to WaitByteTINTOPT FNelseTINT  RTSTINTOPT
25934 ndifTINTTINT\ esc,&C0+ - Start transferTINT\ -------------------------TINT.Wai
24948 rtTINTPHA:LDY #4                 :\ Save command, point to TRANSTINT.WaitStartLpTINTJSR 
29801 Byte:STA TRANS-1,Y :\ Wait for 4-byte data addressTINTDEY:BNE WaitStartLpTINTPLA:CMP #&D0:BCC WaitE
 8308  :\ esc,&Cx - set address for later entryTINT\CMP #&E0:\BCC CallCode    :\ esc,&Dx - enter code immediat
 2681 CMP #&E0:BCS TransData     :\ esc,&Ex - transfer dataTINTTINT\ esc,&D0+ - Enter codeTINT\ ---------------------TINT.
27756 CodeTINTLDA #&00:SEC:JMP (TRANS)   :\ Enter code with A=0, SECTINTTINT\ Decide what local memory to tr
26227 er data to/fromTINT\ -------------------------------------------------TINT\ A=&Ex/&Fx - Load/SaveTINT\TINT.TransDataTINTO
17952 Nif(SWROM%)TINT  LDX &27A:BPL WaitTransIO :\ No TubeTINT  LDX TRANS+3              :\ 
25445 k transfer addressTINT  INX:BNE WaitTransTube    :\ Tube present, ADDR<&FFxxxxxxTINTOPT FNendifTINT.WaitTrans
16650 ND #&F0                   :\ A=transfer flag with b7=1 for IO transferTINTOPT 
26217 (SWROM%)TINT  TAYTINT  LDX TRANS+2:INX:BEQ WaitIOGo :\ &FFFFxxxx - current IO me
31090 TINT  LDA &D0:INX:BEQ WaitIOScreen :\ &FFFExxxx - current display memoryTINT  INX:BNE WaitIOGo:LDA #16     :\ &FF
30840 xx - shadow screen memoryTINT  .WaitIOScreenTINT  AND #16:BEQ WaitIOGo
 8224      :\ Non-shadow screen di
24940 yed, jump with Y=&E0/&F0TINT  INY:JSR vramSelect           :\ Page in video RAM, Y is now &E1/&F1TINT  .WaitIOGoTINT 
16729 TINTOPT FNendifTINTPHA:LDY #0                 :\ Stack IO/Screen flag, init Y=0TINTCMP #&
16954 CS WaitSaveIO    :\ esc,&Fx - save dataTINTTINT\ L
 8292 data from remote hostTINT\ --------------------------TINT.WaitLoadIOTINTJSR WaitByte:STA (TRANS),Y :\ 
11363 &Ex - load dataTINTINY:BNE WaitLoadIOTINTINC TRANS+1:JMP WaitLoadIO :\ Loop until terminated by esc,&BxTINTTINT\ Save data 
29216 emote hostTINT\ ------------------------TINT.WaitSaveIOTINTLDA (TRANS),Y:JSR SendByte     :\ esc,&Fx - save dataTINTJSR
24933 dByte:BCS WaitSaveExit  :\ Poll input for terminationTINTINY:BNE WaitSaveIO      
 8224    :\ Update checksum for 25
31074 tesTINTINC TRANS+1:JMP WaitSave
 8224    :\ Loop until terminated by esc,&BxTINT.WaitSaveExitTINTJMP WaitExitSaveTINTTINT\ Tu
24864 nd ADDR<&FFxxxxxxTINT\ -----------------------TINTOPT FNif(SWROM%)TINT  .WaitTransTubeTINT  CLC:ADC #&10:ROL 
 8224     :\ Cy=1/0 for load/saveTINT
17484 A #0:ADC #0:PHA        :\ A=
 8240 for load/saveTINT  JSR TubeAction           :\
24940 im Tube and start transferTINT  PLA:PHA:BEQ WaitSaveTube :\ Leave 
26465  pushed with b7=0 for Tube transferTINT  .WaitLoadTubeTINT  JSR TubeDelayTINT  JSR WaitByte:STA &FEE5   :\ Fetch 
25972  and send to TubeTINT  JMP WaitLoadTube         :\ Loop until terminated by esc,&BxTINT  .WaitSaveTubeTINT  LDA &FEE5:JSR Send
25972          :\ Fetch byte from Tube and send itTINT  JSR ReadByte:BCS WaitSaveExit  :\ Poll input for terminationTINT  JSR Tub
27749 ayTINT  JMP WaitSaveTube               :\ Loop until terminated by 
11363 &BxTINTOPT FNendifTINTTINTTINTTINT\ Screen selection routinesTINT\ =========================TINTOPT FNif(SWROM%)TINT  .vramSelectTINT  TYA
16712 :AND #1:PHA:TAX   :\ A=0 main RAM, A=1 video RAMTINT  LDA #108:JSR OSBYTE      
16672 ttempt to select Master video RAMTINT  PLA:INX:BNE vramOk       :\ X<>255, successfulTINT  EOR
14897 TAX               :\ A=1 main R
 8236 A=0 video RAMTINT  LDA #111:JSR OSBYTE      :\ Attempt to select Aries/Watfo
21024 AMTINT  .vramOkTINT  PLA:TAY:RTSTINTOPT FNendifTINTTINT\ Tube communication routinesTINT\ ========================
 2621 OPT FNif(SWROM%)TINT  .TubeDelay               :\ Delay for 
29557 TINT  JSR TubeDelay2:JSR TubeDelay2:JSR TubeDelay2TINT
21550 ubeDelay2:RTSTINT  .TubeEnterCo
 8202  LDA #4                   :\ 4=EnterCodeTINT  .TubeActionTINT  PHATINT  .TubeClaimTINT  LDA #&C0+6:JSR &406  
 8224 :\ Claim with ID=6 (HostFS)TINT
17218 C TubeClaimTINT  LDX #TRANS AND
13621        :\ Point to transfer addressTINT  LDY #TRA
17440 IV 256TINT  PLA:JMP &406             :\ Start transfer actionTINT  .TubeRelChkTINT  BIT 
16695 :BMI P%+3:RTS    :\ If no Tube, returnTINT  .Tube
25964 aseTINT  LDA #&80+6:JMP &406      :\ Release with ID=6 (HostFS)TINTOPT FNendifTINTTINT\ Enter Code pointed to
 8313 TRANS transfer addressTINT\ ===============================================TINT\ Checks to see if co
26656 as a ROM header, and verifies itTINT\ if it has. CC=entered from RESET, CS=entered from OSCLITINT.Enter
25956 TINTOPT FNif(SWROM%)TINT  LDA &27A:BPL EnterCodeIO         :\ No Tube presentTINT  LDY TRANS+3:INY:BNE TubeEnterCode
16672 DDR<&FFxxxxxxTINTOPT FNendifTINT.EnterCodeIOTINTPHP:LDY #&07:LDA (TRANS),Y         :\ Get copyrig
28448 ffsetTINTCLD:CLC:ADC TRANS+0:STA FAULT+0TINTLDA #0:TAY:ADC TRANS+1:STA FAULT+1 :\ &FD/E=>copyright messageTINT\TINT\ Now che
26144 or &00,"(C)"TINTLDY #&00:LDX #3TINT.EnterCheckTINTLDA (FAULT),Y:CMP CheckCopy,X:BNE LF8FATINTINY:DEX:BPL EnterCheck
 8224          :\ Check for &00,"(
 2594 \TINT\ &00,"(C)" exists, check ROM type 
25972 TINT\ -------------------------------------TINTLDY #&06:LDA (TRANS),Y             :\ Get ROM typeTINTAND #&4F:CMP #&40:BCC Not
26478 uage  :\ b6=0, not a languageTINTAND #&0D:BNE Not6502Code           :\ type<>0 and <>2, not 6502
25711 eTINT.LF8FATINTTXA:ROL A:ROL A:AND #1             :\ A=0 - raw, A=1 - headerTINTLDX TRANS+0:LDY TRANS+1:
 8268 LF904  :\ Entered code<&8000, don't move memtopTINTSTX MEMTOP+0:STY MEMTOP+1   
 8224    :\ Set memtop to current 
26479 ramTINTSTX PROG+0:STY PROG+1              :\ Set current program to address enteredTINT.LF904TINTPLP:JMP (TRANS)       
 8224          :\ Enter code with 
24946 w/code, Cy=RESET/OSCLI flagTINT.CheckCopyTINTEQUS ")C(":EQUB 0TINT
 8284 Any ex
26996 ng error handler will probably have been overwrittenTINT\ So, set up new error handler before generating an errorTINT
29807 LanguageTINTOPT FNif(SWROM%=0)TINT  JSR InitErrorTINTOPT FNendifTINTOPT FNerror:EQUB 2
17722 QUS "This is not a language":EQUB 0TINTTINT.Not6502CodeTINTOPT
26958 f(SWROM%=0)TINT  JSR InitErrorTINTOPT FNendifTINTOPT FNerror:EQUB 249:EQUS 
26984 s is not 6502 code":EQUB 0 \ Low level I/O routines \ ====================== \
26984 s is where detailed playful frobbing is done to ensure a cleanTINT\ error-free reli
25964  link channel. All calling code assumes theseTINT\ routines are 100% error-free and reliable. Any
28257 dshaking,TINT\ retries, error correction, etc must be done at this level.TINTTINT\ Send a raw byte of dataTINT
11565 -------------------TINT\ On entry, A=byte to
28261 dTINT\ On exit,  A,X,Y preserved, P corruptedTINT\TINT.SendDataTINTPHATINT.SendWaitTINTLDA TxStatus               :\ Get StatusTINTA
 8992 TxRDY:BEQ SendWait    :\ Wait until data can be sentTINTPLA:STA TxD
14945 RTS         :\ Send dataTINTTINT\ Read raw dataTINT\ -------------TINT\ On exit, P =CC, no dataTINT\            =CS, data prese
 8236 EQ=esc, NE=not escTINT\TINT.ReadDataTINTPHP:SEI:TYA:PHA            :\ Speed up by disabling IRQsTINTLDY #RxCont:STY RxStatus
14880 \ Lower RTS to allow inputTINTL
 8992 RxStop:LDA RxStatus   :\ Get RxStatusTINTAND #RxRDY:BNE ReadDataOk  :\ Data presentTINTPLA:
 8281 RxStatus:TAY:PLP   :\ Raise RTS, restore Y,PTINTCLC:RTS                    :\ CC=No
29793 a presentTINT.ReadDataOkTINTPLA:STY RxStatus:TAY:PLP   :\ Raise RTS, restore Y,PTINTLDA RxData:CMP #esc:S
21050 TS:\ CS=Data present, EQ/NE=escTINTTINTTINT]:IF(P%>IOSPACE%)AND(SWROM%=0
21061 ROR 1,"Code overrun"TINT[OPT P*3+4TINT\ Spare spaceTINT\ ======
15677 =TINTOPT FNif(SWROM%=0)TINTEQUS STRING$((IOSPACE%-P%)AND255,CHR
13621 )TINTTINT\ I/O SpaceTINT\ =========TINTEQUS STRING$(8,CHR$
 2570 \ Tube I/O RegistersTINT\ ==============
15677 TINT.TubeS1 :\ &FEF8 :EQUB 0TINT.TubeR1 :\ &FEF9 :EQUB 0TINT.TubeS
23610  &FEFA :EQUB 0TINT.TubeR2 :\ &F
 8258 :EQUB 0TINT.TubeS3 :\ &FEFC :EQUB 0TINT.TubeR3 :\ &FEFD :EQUB 0TINT.TubeS4 
 9760 FEFE :EQUB 0TINT.TubeR4 :\ &FEFF :EQUB 0TINTOPT FNendifTINTTINTTINT\ DEFAULT VECTOR TABLETINT\ ===========
15677 =====TINT.LFF00TINTEQUW NullReturn      :\ &200 - USERVTINTEQUW Er
18546 andler    :\ &202 - BRKVTINTEQUW IRQ1Handler     :\ &204 - IRQ1VTINTEQUW IRQ2Handler     :\ &206 - IRQ2VTINTEQUW osC
 8224          :\ &208 - CLIVTINTEQUW osBYTE          :\ &20A - BYTEVTINTEQUW osW
 8260          :\ &20C - WORDVTINTEQUW osWRCH          :\ &20E - WRCHVTINTEQUW osRDCH     
 8224  :\ &210 - RDCHVTINTEQUW osFILE
 8224       :\ &212 - FILEVTINTEQUW o
18258 S          :\ &214 - ARGSVTINTEQUW osBGET          :\ &216 - BGe
17674 QUW osBPUT          :\ &218 - BPutVTINTEQUW osGBPB          :\ &21A - GBPBVTINTEQUW osFI
 8224         :\ &21C - FINDVTINTEQUW NullReturn      :\ &21E - FSCVTINTEQUW
27765 lReturn      :\ &220 - EVNTVTINTEQUW NullReturn      :\ &222 - UPTVTINTEQUW Null
30068 rn      :\ &224 - NETVTINTEQUW NullReturn      :\ &226 - VduVTINTEQUW NullReturn      :\ &228 - KEYVTINTEQ
20000 ullReturn      :\ &22A - INSVTINTEQUW NullReturn      :\ &22C - RemVTINTEQUW NullReturn  
 8224 :\ &22E - CNPVTINTEQUW NullRetu
 8224     :\ &230 - IND1VTINTEQUW NullReturn      :\ &232 - IND2VTINTEQUW NullReturn      :\ &234 - IND3VTINTTINT\ Print hex
28021 bersTINT\ =================TINT.PrHexXYTINTTYA:JSR PrHex:TXATINT.PrHexTINTPHA:LSR A:LSR A:LSR A:LSR ATINTJSR PrNybble:PLATINT.P
25209 bleTINTAND #15:CMP #10:BCC PrDigit:ADC #6TINT.PrDigitTINTADC #ASC"0":JMP OSWRCHTINTTINT
28265 t embedded stringTINT\ =====================TINT\ Mustn't use LPTR so can be called from OSCLITINT.PrTextTINTPLA:STA TEXT+
19536 A:STA TEXT+1 :\ CTRL=>embedded stringTINTJSR PrString2:JM
21544 EXT)      :\ Print string an
30058 mp back to codeTINT:TINT.PrStringTINT
 8280 TEXT+0:STY TEXT+1      :\ CTRL=>string at YXTINT.PrStringLpTINTLDY #&00:LDA (TEXT),Y  
 8224 :\ Get characterTINTBEQ PrStrin
19002 SR OSASCI   :\ Print character if not &00TINT.PrS
28265 g2TINTINC TEXT+0:BNE LFEA6:INC TEXT+1 :\ Increment addressTINT.LFEA6TINTTAY:BNE PrStringLp         :\ Loop back if not 
 2608 .NullReturnTINTRTSTINTTINTTINT\ Standard Tube entry poin
23562  ==========================TINT\ NB! All API entry points must be called in BINARY modeTINT\TINTOPT FNif(SWROM%=0)TINTEQUS 
18770 NG$((&FF95-P%)AND255,CHR$255)TINTOPT FNendifTINT.LFF95   :JMP NullReturn       :\ &FF9
19502 FF98  
19786 P NullReturn       :\ &FF98TINT.PRSTRNG :JMP PrString    
 8224  :\ &FF9B  Print zero-termin
25701  text at YX, returns A=0, Y corruptedTINT.LFF9E   :JMP NullReturn       :\ &FF9ETINT.SCANHEX :JMP ScanHex          :\ 
16710 1  Scan hex string at (&F8), returned in &F0/1TINT.DISKACC :JMP NullR
29301 n       :\ &FFA4TINT.DISKCCP :JMP NullReturn       :\ &FFA7  Quit current programTINT.PRHEX   :JMP PrHex            :\
17990 AA  Print A in hex, A corruptedTINT.P
17736 X  :JMP PrHexXY          :\ &FFAD  Print YX in
30821 , A corruptedTINT.USERINT :JMP NullReturn       :\ &FFB0TINT.PRTEXT  :JMP PrText           :\ &FFB3  Print
29285 o-terminated inline text, returns A=0, Y corruptedTINT.VECDEF  :EQUB &36:EQUW LFF00  :\ &FFB6TINT.OSQUIT  :JMP CmdPrompt    
 8224 :\ &FFB9  Enter supervisor *
28013 and promptTINT.OSERROR :JMP NullReturn       :\ &FFBCTINT.OSINIT  :JMP InitError        :\ &FFBF  Initialise MOS 
28530 r handler, A corruptedTINT.DISKRST :JMP NullReturn       :\ &FFC2TINT.LFFC5   :JMP NullReturn       :\ &FFC5TINT.NVRDCH
19002 MP osRDCH           :\ &FFC8
22094 WRCH  :JMP osWRCH           :\ &FFCBTINTTINT.OSF
 8260  :JMP (FINDV)          :\ &FFCETINT.OSGBPB  :JMP (GBPBV)          :\ &FFD1TINT.O
21840 T  :JMP (BPutV)          :\ &FFD4TINT.OSBGET  :JMP (BGetV)       
14880 \ &FFD7TINT.OSARGS  :JMP (ARGSV
 8224        :\ &FFDATINT.OSFILE  :JM
17960 ILEV)          :\ &FFDDTINTTINT.OS
18499   :JMP (RDCHV)          :\ &FFE0TINT.OSASCI  :CMP #&0D:BNE _OSWRCH 
 9760 FFE3TINT.OSNEWL  :LDA #&0A:JSR OSWRCH  :\ &FFE7TINT.OSWRCR  :LDA #&0D             :\ &FFECTINT._O
17234 HTINT.OSWRCH  :JMP (WRCHV)          :\ &FFEETINT.OSWORD  :JMP (WORDV)          :\ &FFF1TINT.
22850 TE  :JMP (BYTEV)          :\ &FFF4TINT.OS_CLI  :JMP (CLIV)           :\ &FFF7TINTTINT.NM
 8224   :EQUW NMIHandler      :\ &FFFA  NMI VectorTINT.RESETV  :EQUW RESET           :\ &FF
 8224 RESET VectorTINT.IRQV    :EQUW IRQHandler      :\ &FFFE  IRQ Vecto
14941 ENDPRO
 2618 :TINTDEFP
24899 smROMHeaderTINTIF NOT SWROM%:ENDPROCTINT:TINTREM OS Entry AddressesTINTREM ============
15677 ==TINTOSFIND=&FFCE:OSGBPB=&FFD1:OSBPUT=&FFD4:OSBGET=&FFD7TINTOS
21319 =&FFDA:OSFILE=&FFDDTINTOSRDCH=&FFE0:OSASCI=&FFE3:OSNEWL=&FFE7:OSWRCH=&FFECTINTOSWRCH
17990 EE:OSWORD=&FFF1:OSBYTE=&FFF4:OS_CL
17958 FF7TINT:TINTREM Filing System valuesTINTREM ====================TINTm
15731 9:chanlo=&80:chanhi=&9FTINT:TINTREM Memory addresses for filing systemTINTREM =============================
15677 =TINTERRBUF=&100:INPBUF=&100:INPEND=&180TINT:TINTREM &A0-&A7 and &
11568 &D5F is NMI space and must be claimed with S
12662 2 and released on Serv11TINTREM &B0-&BF is temporary filing system workspace (trashable between calls)TINTREM &C0-&C
29545  persistant filing system wo
28787 ace (persistant between calls)TINTPROG   =&C0:REM &EE/F = PROG   - Current programTINTNUM    =&C2:REM &F0/1 =
19797     - hex accumulatorTINTMEMTOP =&C4:REM &F2/3 = MEMTOP - top of memoryTINTTRANS
 9789 C6:REM &F4/5 = ADDR   - Data
24946 nsfer address (assembler doesn't like 'INC ADDR')TINTTRANShi=&C8:REM &F6/7 = ADDR+2 - Data transfer address high wo
19466 PTR   =&CA:REM &F8/9 = String pointer, OSWORD control blockTINTCTRL   =&CC:REM &FA/B = CTRL   - OSF
11333  OSGBPB control blockTINTCMD    =&CE:REM         CMD    - Address of comman
26988 ne parametersTINTTEXT   =&F6:RE
17958 A/B = TEXT   - PrText string
26991 nterTINTIRQA   =&FC:REM &FC   = IRQ A storeTINTFAULT  =&FD:REM &FD/E => last errorTINTESCFLG =&FF:REM &FF   = Escape 
26465 TINT:TINTREM I/O values for on-board 6850 serial portTINTREM ========================================TINTTxStatus=&F
14904 TxRDY=2:TxData=&FE09:TxInit=&13:RxInit=&55:R
 9760 13=Reset ACIA, &55=8N1, clock/16, RTS highTINTRxStatus=&FE08:RxRDY=1:RxData=
12357 9:RxStop=&55:RxCont=&15:REM &55=RTS high, &15=RTS lowTINT:TINT[OPT opt%TINT
11565 --------TINT\ ROM HEADERTINT\ ----
11565 --TINTJMP Language:JMP ServiceTINTEQUB &82:EQUB
28783 yright-&8000TINTEQUB VAL LEFT$(ver$,3)TINTEQUS "HostFS:Serial":EQUB 0
21841 S ver$+date$TINT.CopyrightTINTBRK:EQUS "(C)J.G.Harston":BRKTINTTINT.LanguageTINT
 8274 HostFSOn:JMP STARTUP2   :\ Enter with A=0TINTTINT\ ----------------TINT\ SERVICE ROUTINE
 8284 ------
11565 ------TINT.ServiceTINTCMP #3:BEQ Serv3TINTCMP #4:B
21280 erv4TINTCMP #&09:BNE P%+5:JMP Serv9TINTCMP #&12:BNE P%+5:JMP Serv12TINTCMP #&25:BNE P%
19002 MP Serv25TINTRTSTINTTINT\ --------------------------------
11565 ---TINT\ SERVICE 3 - Boot filing system on B
27489 TINT\ ---------------------------------------TINT.Serv3TINTTYA:PHA:LDA #&7A:JSR OSBYTE :\ Get key pressedTINT
 8280 #&FF:BEQ Serv3Select    :\ Nothing pressedTINTCPX #&60:BEQ Serv3Select    :\ TA
29250 eakTINTPLA:TAY:LDA #3:RTSTINT.Serv3SelectTINTLDA #
14904 JSR OSBYTE         :\ Clear keypressed infoTINTJSR Sel
18036 S:JSR Serv9a     :\ Select FS, print titleTINTJSR OSNEWL:PLA:\BNE Serv3Ok :\ No bootTINTTAY:LDX &28D:
 8257 #&FF       :\ A=&FF, X=Break Type, Y=0 to bootTINTJSR CallFSCV     
 8224        :\ Pass 'Booting' to 
29811 TINTTYA:AND #3:BEQ Serv3Ok      :\ Y=0, no Boot neededTINTTAY:LDA Serv3Boot-1,Y:TAX   :\ XY=>Boot commandTINTLDY #Se
16947 oot DIV 256TINTJSR OS_CLITINT.Serv3OkTINTLDA #0:RTS                  :\ ClaimTINTTINT.Serv3BootTINTEQUB (Serv3Boot+3) AND 255TINTEQUB (
30322 3Boot+5) AND 255TINTEQUB (Serv3Boot+11) AND 255TINTEQUS "L.!BOOT":EQUB 13      :\ Opt 1 and 2TINTEQUS "E.!
21583 ":EQUB 13      :\ Opt 3 \ -------------------- \ SERVICE 4 - *Command \ --
11565 --------------TINT.Serv4TINTTYA:PHA:DEY:LDX #&F
21294 erv4Lp
22606 :INY:LDA (&F2),YTINTCMP #ASC".":BEQ Serv4DotTINTCMP #ASC"!":BCC Serv4EndTINTCM
25939 rv25Table,X:BEQ Serv4Lp :\ M
26723  with Filing System commandTINTEOR #&20TINTCMP Serv25Table,X:BEQ Serv4LpTINT.Serv4QuitTINTPLA:TAY:LDA #4:RTSTINT.Serv4EndTINTLDA S
12918 5Table,XTINTCMP #32:BNE Serv4Quit       :\ Check for end of commandTINTDEYTINT.Serv4DotTINTINY:LDA (&F2),YTINTCMP #32:BEQ Ser
28484 t        :\ Skip spacesTINTAND #&DFTINTCMP #ASC"O":BNE
29285 v4FS     :\ Not *HostFS Oxxx, select HostFSTINTINY:LDA (&F2),Y:AND #&DFTINTCMP #ASC"N
17730 Q HostFSOn    :\ *HostFS ONTINTCMP #ASC"F":BEQ HostFSOff 
23610  *HostFS OFF .Serv4FS JSR Se
29795 FS:PLA:LDA #0:RTSTINTTINT\ -----------------TINT\ SERVICE 9 - *HelpTINT\ -----------------TINT.Serv9TINTLDA (&F2),Y
20557  #13:BNE Serv9Exit       :\ Not *Help<cr>TINTJSR OSNEWLTINT.Serv9aTINTLD
12323 TINT.Serv9LpTINTLDA &8009,X:BNE Se
17209 hk    :\ Display ROM titleTINTLDA #ASC" ":BNE Serv9CharTINT.Serv9ChkTINTCMP #ASC" ":BEQ Serv9DoneTINT.Serv9CharTINTJSR OSWRCH:INX
17742  Serv9LpTINT.Serv9DoneTINTJSR OSNEWLTINT.Serv9ExitTINTLDA #9:RTSTINTTINT\ ------
11565 -------------------------------------TINT\ *
29811 FS ON|OFF command - connect as Tube clientTINT\ -----------------------------------------------TINT\ NB, *HostFS 
25632 oesn't catch errors correctlyTINT\TINT.HostFSOffTINTPLA:LDA #0:RTS              :\ 
30063 ld disconnectTINT.HostFSOnTINTPLATINT\LDX #0:\LDY #12:\LDA #10   :\ CLIV-RDCHVTINT\LDX #6:\LDY #21:\LDA #8    :\
29557 t WRCHVTINT LDX #6: LDY #21: LDA #10   :\ WRCHV-RDCHVTINT\LDX #8:\LDY #24:\L
 8992 10   :\ Just RDCHVTINTJSR SetVectors              :\ Set vectors
20805  Serv12Serial            :\ Take over Serial systemTINT\BEQ Serv1
27749 ect           :\ Select HOSTFSTINT\LDA &F4:\STA &190+252      :\ ROM to enter on B
23562 PHA:\JMP Serv4FSTINTTINT\ ----------------------------------TINT\ SERVICE &12 - 
25964 ct filing systemTINT\ ----------------------------------TINT.Serv12TINTCPY Serv25Table+10:BNE Serv12QuitTINT.
30322 12SelectTINTLDA #6:JSR CallFSCV         :\ New filing system taking overTINTLDX #10:LDY #27:LDA #24    
 8284 Set FILEV-FSCVTINTJSR SetVectors              :\ Set vect
 2675 LDA #143:LDX #15:JSR OSBYTE :\ Vectors changedTINT.Serv12Serial               :\ We're taking over Serial systemTINT
 8257 #156:LDX #RxInit:LDY #0:JSR OSBYTE  :\ Disable ACIA IRQs, raise 
 2643 LDA #232:LDX #0:LDY #0:JSR OSBYTE       :\ Mask out all ACIA IRQsTINTLDA #0        
 8224           :\ Claim callTINT.Ser
20786 uitTINTRTSTINT.CallFSCVTINTJMP (FSCV)TINTTINT.SetVectorsTINTSTA
12358 TINT.SetVectorLpTINTTYA:STA CLIV+0,X    
 8224      :\ Vect->ExVecTINTLDA #&FF
16724  CLIV+1,XTINTLDA Vectors+0,X:STA &D9F,Y   :\ ExVec->MyRoutineTINTLDA Vectors+1,X:STA 
12353 ,YTINTLDA &F4:STA &DA1,YTINTINY:INY:INY:INX:INXTINTCPX &F0:BNE SetVectorL
21586 STINTTINT\ -
11565 ----------------------------------TINT\ SERV
 8261 &25 - Filing system informationTINT\ -----------------------------
11565 ------TINT.Serv25TINTLDX #0TINT.Serv25LpTINTLDA Serv2
25185 le,XTINTSTA (&F2),Y:INY:INXTINTCPX #11:BNE Serv25LpTINTLDA #&25:RTSTINT.Serv25TableTINTEQUS "HO
21318   " EQUB chanlo:EQUB chanhi:EQUB myfs \ ------------------ \ Filing system code
11552 -----------------TINT.SelectFSTINTLDY Serv25Table+10:LDX #18TINTLDA #143:JMP OSBYTETINTTINT\ ----------
11565 --------------TINT\ I/O system routine addre
29541 TINT\ ----------------------------TINT.VectorsTINT.IOVectorsTINTEQUW osCLITINTEQUW osBYTE:EQUW osWORDTINTEQUW osWRCH:EQUW osRDCH_
23562  Need some way of seeing that Host has not actionedTINT\ a CLI/BYTE/WORD and p
 8307 them on locally.TINT\ BYTE could use b6 of returned Carry byte for A>&7FTINT\ This would mirror b6 of FSC reply indic
28265 g I/OTINTTINT\ -------------------------------TINT\ Filing system routine addressesTINT\ -------------------------------TINT.FS
29795 orsTINTEQUW osFILE:EQUW HostARGS:EQUW osBGETTINTEQUW osBPUT:EQUW osGBPB:EQUW HostFINDTINTEQUW HostFSCTINTTINT\ -
11565 -------------------------TINT\ Precheck OSAR
26144 or local infoTINT\ ------------------------------TINT\ Need to return filing system n
25954 r and address ofTINT\ command line parameters locally. Master FileSwitchTINT\ does this check itself, so these 
 8303 calls are neverTINT\ passed here.TINT\TINT.HostARGSTINTCPY #0:BNE TubeARGSTINTCMP #1:BCC HostARGS0TINTBEQ HostARGS1TINT.TubeARGSTINTJMP osA
 2643 TINT\ OSARGS 0,0 - Return FS numberTINT\ -----------------------------TINT
30068 rn fs=HostFSTINT.HostARGS0TINTLDA Serv25Table+10:RTSTINTTINT\ OSARGS 1,0 - Return command line addressTINT\ ----
11565 --------------------------------TINT.HostARG
19466 DA CMD+0:STA 0,XTINTLDA CMD+1:STA 1,XTINTLDA #&FF:S
12832 ,X:STA 3,XTINTLDA #&00:RTSTINTTINT\ ---------------------------TINT\ Prec
27491  OSFIND for CLOSE#0TINT\ ---------------------------TINT.HostFINDTINTCMP #0:BNE TubeFind         :\ Not CL
 2629 CPY #0:BNE TubeFind         :\ Not CLOSE#0TINTTXA:PHA:LDA #&77:JSR OSBYTE :\ Close
25976 c and Spool filesTINTPLA:TAX:LDA #0:TAY          :\ Restore for CLOS
 2608 .TubeFindTINTJMP osFINDTINTTINT\ -------
11565 -----TINT\ Precheck for FSCTINT\ --------------
23562  Need to find parameters on *commands to 
30068 rnTINT\ later with OSARGS 1,0. Master FileSwitch doesTINT\ this itself, client does this within FSC.TINT.H
18036 SCTINTCMP #6:BEQ HostFSC6TINTCMP #7:BEQ HostFSC7TINTCMP #8:BEQ HostFSCQuitTINTJMP osFSCTINT.HostFSC6TINT\LDA #&77:\JSR OSBYTE    
14880 \ Close Exec/SpoolTINTLDA #156:
 8280 #&56:LDY #0:JSR OSBYTE  :\ Release the Serial systemTINTLDA #232:LD
12835 55:LDY #0:JSR OSBYTE  :\ Pas
17217 IA IRQs back to MOSTINT.HostFSC
17484 X Serv
24916 ble+8           :\ Lowest handleTINTLDY Serv25Table+
 8224         :\ Highest handleTINT.H
18036 SCQuitTINTRTSTINTTINT\ -----------------------------TINT\ Generate a sideways ROM errorTINT\ -----------------------------TINT.Er
 2674 PLA:STA FAULT+0:PLA:STA FAULT+1TINTLDY #0:STY ERRBUFTINTINY:LDA (FAULT),Y:STA ERRBUF,YTINT.ErrorLpTINTINY:LDA (FAULT),Y
16724  ERRBUF,YTINTBNE ErrorLp:JMP ERRBUFTINTTINT\ ----------TINT\ Debug codeTINT\ ----------TINT.PrSta
23562 PHP:\PHA:\TXA:\PHA:\TSXTINT\LDA &106,X:\JSR PrHexTINT\LDA &107,X:\JSR PrHexTINT\LDA &108,X:\JSR PrHexTINT\LDA &109,
19036 SR PrHexTINT\LDA &10A,X:\JSR PrHexTINT\LDA &10B,X:\JSR PrHex
17484 A &10C,X:\JSR PrHexTINT\LDA &10D,X:\JSR PrHexTINT\LDA &10E,X:\JSR PrHexTINT\LDA &10F,X:\JSR PrHex
19536 A:\TAX:\PLA:\PLP:\RTSTINTTINT]TINTIF (opt%AND3):IF (Serv3Boot AND 255)>&F4:PRINT"WARNING: Serv3Bo
28448 verlaps" ENDPROC