REM > AtEco350.lst REM Source for Acorn Atom Econet 3.50 NMIV =&0200:BRKV =&0202:IRQV =&0204:CLIV=&0206 WRCHV=&0208:RDCHV=&020A:LOADV=&020C:SAVEV=&020E RDARV=&0210:STARV=&0212:BGETV=&0214:BPUTV=&0216 FINDV=&0218:SHUTV=&021A:IND1V=&021C:IND2V=&021E REM Workspace: REM &224 = URD REM &225 = CSD REM &226 = LIB REM &227 = Random access sequence number REM &228-9 = Notifying station REM &22A-B = &A8F9 - report error REM &22C-D = File server 0.254 REM &22E-F = Print server 0.235 REM &230-1 = current receive block REM &232-3 = interupt address for receive REM &234 REM &238-9 = &A0BA - Remote Procedure Call address REM &23A = flags, b7=receive block open, b6=HALTed REM &23B = 00 - protection mask REM &23C = 02 REM &23D = Entry to NetTransmit, JMP LA2EE REM I/O locations Atom System REM keyboard B000 0E20 REM 6854 register 1 B400 1940 REM 6854 register 2 B401 1941 REM 6854 register 3 B402 1942 REM 6854 Tx/Rx Data reg. B403 1943 REM Station identification B404 1944 load%=&A000 DIM mcode% &1014 FOR P=0 TO 1 P%=load%:O%=mcode% [OPT P*3+4 \ RESET - Called by Atom Kernel at reset \ ====================================== .LA000 BIT &B001 :\ Read keyboard BMI LA00F :\ Jump if SHIFT not pressed \ SHIFT pressed at RESET, disable Econet \ -------------------------------------- JSR LA095 :\ A005 20 95 A0 . LDA #&C0 :\ A008 A9 C0 )@ STA &B400 :\ A00A 8D 00 B4 ..4 PLA :\ A00D 68 h RTI :\ A00E 40 @ \ SHIFT not pressed at RESET \ -------------------------- .LA00F TYA:PHA:TXA:PHA LDX #&08 .LA015 LDA LA07D-1,X:STA &0238-1,X :\ Copy some settings to &238-&23F DEX:BNE LA015 LDA &0204:STA &021C :\ Copy old IRQV to IND1V LDA &0205:STA &021D LDA #LA0DC AND 255:STA &0204 :\ Hook into IRQV LDA #LA0DC DIV 256:STA &0205 JSR LA095 LDX #&0B :\ Poke startup message into screen .LA039 LDA LA085-1,X:STA &800A,X DEX:BNE LA039 \ Poke station number into screen memory CLD :\ Ensure binary mode LDA &B404 :\ Get station number LDX #&2F:SEC .LA049 SBC #&64:INX:BCS LA049 :\ Count hundreds ADC #&64:STX &801D :\ Poke 100s digit LDX #&2F .LA055 SBC #&0A:INX:BCS LA055 :\ Count tens ADC #&3A:STX &801E :\ Poke 10s digit STA &801F :\ Poke units digit LDA #&20:AND &B401 :\ Check ADLC status BEQ LA074 :\ Jump if clock present LDX #&05 :\ Poke 'NOCLK' into screen memory .LA06B LDA LA090-1,X:STA &8016,X DEX:BNE LA06B .LA074 JSR LA700 :\ Claim vectors and set default settings PLA:TAX:PLA:TAY :\ Restore registers PLA:RTI :\ Return to kernel reset code \ Default Econet settings \ ----------------------- .LA07D TSX :\ A07D BA : LDY #&00 :\ A07E A0 00 . BRK :\ A080 00 . EQUB &02 :\ A081 02 . JMP LA2EE :\ Entry to Network Transmit \ Econet startup message - bytes poked into screen memory \ ------------------------------------------------------- \ Changes startup message from ACORN ATOM to ACORN ATOM ECONET 3.50 \ .LA085 EQUB &05:EQUB &03:EQUB &0F :\ "ECO" EQUB &0E:EQUB &05:EQUB &14 :\ "NET" EQUS " 3.50" :\ " 3.50" .LA090 EQUB &8E:EQUB &8F:EQUB &83 :\ "NOC" EQUB &8C:EQUB &8B :\ "LK" .LA095 LDA #&C2:STA &B2 :\ (&B2)=>&FFC2, so (&B2),&F2=>&00B4 LDA #&FF:STA &B3 :\ LDA #&01:STA &B0 :\ &B0=1, expecting scout .LA0A1 LDA #&C1:STA &B400 :\ Reset Rx and Tx, select secondary registers LDA #&1E:STA &B403 :\ 8-bit words, combined open/close flags LDA #&80:STA &B401 :\ Set control register 3 .LA0B0 LDA #&02:STA &B400 :\ Enable receive interupts, select main registers .LA0B5 LDA #&63:STA &B401 :\ 2-byte transfers, clear Rx and Tx .LA0BA RTS :\ A0BA 60 ` .LA0BB LDA #&10 :\ A0BB A9 10 ). .LA0BD BIT &B400 :\ A0BD 2C 00 B4 ,.4 BEQ LA0BD :\ A0C0 F0 FB p{ RTS :\ A0C2 60 ` .LA0C3 JMP (&021C) :\ Pass on to old IRQV .LA0C6 LDA #&04 :\ Bit 2 = IDLE AND &B401:BNE LA0D0 :\ Line has gone idle, reset ADLC and exit .LA0CD JSR LA0A1 :\ Go idle .LA0D0 JSR LA0B5 :\ Reset ADLC PLA:RTI :\ Exit from IRQ \ Not for me, ignore this frame \ ----------------------------- .LA0D5 LDA #&22:STA &B400 :\ Set RxFrameIgnore, RxIRQEnable PLA:RTI :\ Return from interupt \ Econet IRQ handler \ ================== .LA0DC BIT &B400:BPL LA0C3 :\ No ADLC interupt, pass on LDA #&01 :\ bit 0 = ADDRESS BIT &B401:BEQ LA0C6 :\ Bit 0 clear, not ADDRESS field, go idle LDA &B402 :\ Get data byte, ADDRESS byte CMP &B404 :\ Compare with my station number BNE LA0D5 :\ No match, jump to ignore this frame LDA #&01 :\ Wait for network number .LA0F2 BIT &B400:BPL LA0F2 :\ No ADLC interupt, loop back BEQ LA0CD :\ No data, go idle LDA &B402 :\ Get second data byte, NETWORK byte BNE LA0D5 :\ Not &00, not my network, jump to ignore this frame \ A frame that is destined for us \ ------------------------------- \ Frame is: \ flag dest.stn dest.net src.stn src.net ctrl port \ &B6 &B7 &B8 &B9 \ TYA:PHA:TXA:PHA :\ Save registers TSX:STX &FF :\ Save stack pointer LDX #&00 LDY #&F4:JSR LA295 :\ Receive header to &B6-&BF LDA &B9:BNE LA120 :\ Jump if port<>0, not immediate operation LDA #&B6:STA &B4 :\ Point &B4/5 => header at &00B6 LDA #&00:STA &B5 LDY #&02 JSR LA53D .LA11D JMP LA242 :\ Reset receive pointer and ALDC and return \ Not an immediate reception \ -------------------------- .LA120 LDA &0230:STA &B4 :\ Point &B4/5=>current receive block LDA &0231:STA &B5 JSR LA1AA :\ A12A 20 AA A1 *! TYA :\ A12D 98 . PHA :\ A12E 48 H JSR LA24B :\ A12F 20 4B A2 K" JSR LA1DE :\ A132 20 DE A1 ^! LDY &B1 :\ A135 A4 B1 $1 JSR LA295 :\ A137 20 95 A2 ." JSR LA24B :\ A13A 20 4B A2 K" PLA :\ A13D 68 h TAY :\ A13E A8 ( DEY :\ A13F 88 . LDA &B3 :\ A140 A5 B3 %3 STA (&B4),Y :\ A142 91 B4 .4 DEY :\ A144 88 . LDA &B2 :\ A145 A5 B2 %2 STA (&B4),Y :\ A147 91 B4 .4 DEY :\ A149 88 . DEY :\ A14A 88 . DEY :\ A14B 88 . LDA &B7 :\ A14C A5 B7 %7 STA (&B4),Y :\ A14E 91 B4 .4 DEY :\ A150 88 . LDA &B6 :\ A151 A5 B6 %6 STA (&B4),Y :\ A153 91 B4 .4 DEY :\ A155 88 . LDA &B9 :\ A156 A5 B9 %9 STA (&B4),Y :\ A158 91 B4 .4 DEY :\ A15A 88 . LDA &B8 :\ A15B A5 B8 %8 ORA #&80 :\ A15D 09 80 .. STA (&B4),Y :\ A15F 91 B4 .4 BNE LA11D :\ A161 D0 BA P: .LA163 LDA #&FD :\ A163 A9 FD )} PHA :\ A165 48 H LDA #&00 :\ A166 A9 00 ). PHA :\ A168 48 H PHA :\ A169 48 H LDY #&E7 :\ A16A A0 E7 g .LA16C LDA #&04 :\ A16C A9 04 ). BIT &B401 :\ A16E 2C 01 B4 ,.4 BEQ LA182 :\ A171 F0 0F p. LDA &B400 :\ A173 AD 00 B4 -.4 LDA #&67 :\ A176 A9 67 )g STA &B401 :\ A178 8D 01 B4 ..4 LDA #&10 :\ A17B A9 10 ). BIT &B400 :\ A17D 2C 00 B4 ,.4 BNE LA19C :\ A180 D0 1A P. .LA182 LDA #&67 :\ A182 A9 67 )g STA &B401 :\ A184 8D 01 B4 ..4 TSX :\ A187 BA : INC &0101,X :\ A188 FE 01 01 ~.. BNE LA16C :\ A18B D0 DF P_ INC &0102,X :\ A18D FE 02 01 ~.. BNE LA16C :\ A190 D0 DA PZ INC &0103,X :\ A192 FE 03 01 ~.. BNE LA16C :\ A195 D0 D5 PU LDX #&80 :\ A197 A2 80 ". JMP LA3A6 :\ A199 4C A6 A3 L&# .LA19C STY &B401 :\ A19C 8C 01 B4 ..4 LDY #&44 :\ A19F A0 44 D STY &B400 :\ A1A1 8C 00 B4 ..4 LDX #&80 :\ A1A4 A2 80 ". PLA :\ A1A6 68 h PLA :\ A1A7 68 h PLA :\ A1A8 68 h RTS :\ A1A9 60 ` .LA1AA BIT &023A :\ A1AA 2C 3A 02 ,:. BPL LA1DB :\ A1AD 10 2C ., LDY #&00 :\ A1AF A0 00 . .LA1B1 LDA (&B4),Y :\ A1B1 B1 B4 14 BEQ LA1DB :\ A1B3 F0 26 p& BMI LA228 :\ A1B5 30 71 0q INY :\ A1B7 C8 H LDA (&B4),Y :\ A1B8 B1 B4 14 BEQ LA1C0 :\ A1BA F0 04 p. CMP &B9 :\ A1BC C5 B9 E9 BNE LA229 :\ A1BE D0 69 Pi .LA1C0 INY :\ A1C0 C8 H LDA (&B4),Y :\ A1C1 B1 B4 14 BNE LA1CC :\ A1C3 D0 07 P. INY :\ A1C5 C8 H LDA (&B4),Y :\ A1C6 B1 B4 14 BEQ LA1D7 :\ A1C8 F0 0D p. BNE LA1D3 :\ A1CA D0 07 P. .LA1CC CMP &B6 :\ A1CC C5 B6 E6 BNE LA22A :\ A1CE D0 5A PZ INY :\ A1D0 C8 H LDA (&B4),Y :\ A1D1 B1 B4 14 .LA1D3 CMP &B7 :\ A1D3 C5 B7 E7 BNE LA22B :\ A1D5 D0 54 PT .LA1D7 INY :\ A1D7 C8 H JMP LA443 :\ A1D8 4C 43 A4 LC$ .LA1DB JMP LA235 :\ A1DB 4C 35 A2 L5" .LA1DE BIT &B400 :\ A1DE 2C 00 B4 ,.4 BPL LA1DE :\ A1E1 10 FB .{ LDA #&01 :\ A1E3 A9 01 ). BIT &B401 :\ A1E5 2C 01 B4 ,.4 BEQ LA212 :\ A1E8 F0 28 p( LDA &B402 :\ A1EA AD 02 B4 -.4 BEQ LA1F4 :\ A1ED F0 05 p. CMP &B404 :\ A1EF CD 04 B4 M.4 BNE LA211 :\ A1F2 D0 1D P. .LA1F4 JSR LA218 :\ A1F4 20 18 A2 ." LDA &B402 :\ A1F7 AD 02 B4 -.4 BNE LA210 :\ A1FA D0 14 P. LDA &B402 :\ A1FC AD 02 B4 -.4 CMP &B6 :\ A1FF C5 B6 E6 BNE LA20F :\ A201 D0 0C P. JSR LA218 :\ A203 20 18 A2 ." LDA &B402 :\ A206 AD 02 B4 -.4 CMP &B7 :\ A209 C5 B7 E7 BNE LA20E :\ A20B D0 01 P. RTS :\ A20D 60 ` .LA20E INX :\ A20E E8 h .LA20F INX :\ A20F E8 h .LA210 INX :\ A210 E8 h .LA211 INX :\ A211 E8 h .LA212 TXA :\ A212 8A . BPL LA235 :\ A213 10 20 . JMP LA39C :\ A215 4C 9C A3 L.# .LA218 LDA #&01 :\ A218 A9 01 ). .LA21A BIT &B400 :\ A21A 2C 00 B4 ,.4 BPL LA21A :\ A21D 10 FB .{ BEQ LA222 :\ A21F F0 01 p. RTS :\ A221 60 ` .LA222 TXA :\ A222 8A . BEQ LA23F :\ A223 F0 1A p. JMP LA3A6 :\ A225 4C A6 A3 L&# .LA228 INY :\ A228 C8 H .LA229 INY :\ A229 C8 H .LA22A INY :\ A22A C8 H .LA22B INY :\ A22B C8 H INY :\ A22C C8 H INY :\ A22D C8 H INY :\ A22E C8 H INY :\ A22F C8 H BEQ LA235 :\ A230 F0 03 p. JMP LA1B1 :\ A232 4C B1 A1 L1! .LA235 INX :\ A235 E8 h INX :\ A236 E8 h INX :\ A237 E8 h INX :\ A238 E8 h .LA239 INX :\ A239 E8 h INX :\ A23A E8 h .LA23B INX :\ A23B E8 h .LA23C INX :\ A23C E8 h .LA23D INX :\ A23D E8 h INX :\ A23E E8 h .LA23F LDX &FF :\ A23F A6 FF &. TXS :\ A241 9A . .LA242 JSR LA095 :\ Reset receive pointer and ADLC PLA:TAX:PLA:TAY :\ Restore registers PLA:RTI :\ Return from IRQ .LA24B LDA #&44 :\ A24B A9 44 )D STA &B400 :\ A24D 8D 00 B4 ..4 LDA &B400 :\ A250 AD 00 B4 -.4 LDA #&D7 :\ A253 A9 D7 )W STA &B401 :\ A255 8D 01 B4 ..4 LDA &B6 :\ A258 A5 B6 %6 .LA25A BIT &B400 :\ A25A 2C 00 B4 ,.4 BPL LA25A :\ A25D 10 FB .{ BVC LA239 :\ A25F 50 D8 PX STA &B402 :\ A261 8D 02 B4 ..4 LDA &B7 :\ A264 A5 B7 %7 STA &B402 :\ A266 8D 02 B4 ..4 .LA269 BIT &B400 :\ A269 2C 00 B4 ,.4 BPL LA269 :\ A26C 10 FB .{ BVC LA239 :\ A26E 50 C9 PI LDA &B404 :\ A270 AD 04 B4 -.4 STA &B402 :\ A273 8D 02 B4 ..4 LDA #&00 :\ A276 A9 00 ). STA &B402 :\ A278 8D 02 B4 ..4 LDA #&3B :\ A27B A9 3B ); STA &B401 :\ A27D 8D 01 B4 ..4 .LA280 BIT &B400 :\ A280 2C 00 B4 ,.4 BPL LA280 :\ A283 10 FB .{ BVC LA239 :\ A285 50 B2 P2 LDA #&02 :\ A287 A9 02 ). STA &B400 :\ A289 8D 00 B4 ..4 JMP LA0B5 :\ A28C 4C B5 A0 L5 .LA28F TXA :\ A28F 8A . BEQ LA23D :\ A290 F0 AB p+ JMP LA3A4 :\ A292 4C A4 A3 L$# \ Receive frame \ ------------- \ Opening flag and destination station have been matched \ Y=offset from (&B2) to receive frame \ If Y=&F4 and (&B2)=&FFC2, receives header to &B6-&BF \ X=? \ &B0=what frame is being expected \ .LA295 LDA &B400 :\ Read ADLC status to clear things LDA #&43:STA &B401 :\ Clear Tx, 2-byte words, set PSE .LA29D LDA #&01 :\ Bit 0 = RxData present .LA29F BIT &B400:BPL LA29F :\ Loop until ADLC IRQ present BEQ LA2BC :\ No more data present LDA &B402:STA (&B2),Y :\ Get data byte and store it INY:BEQ LA2B6 :\ Increment address LDA &B402:STA (&B2),Y :\ Get another data byte and store it INY:BNE LA29D :\ Loop back for more data .LA2B6 INC &B3 :\ Increment address high byte DEC &B0 :\ Decrement number of pages BNE LA29D :\ Loop back for more data .LA2BC TXA:BNE LA2C6 LDA #&84:STA &B401 :\ Set idle and RTS BNE LA2CB .LA2C6 LDA #&04:STA &B401 :\ Set idle and no RTS .LA2CB LDA #&02 :\ Bit 1 = VALID BIT &B401:BEQ LA28F :\ Frame not valid, CLC:BPL LA2E0 :\ All data received TYA ORA &B0 BEQ LA28F LDA &B402:STA (&B2),Y :\ Get final byte SEC :\ SEC to add one extra .LA2E0 CLD:TYA :\ Update &B2/3 to point to end address ADC &B2:STA &B2 :\ &B2/3=&B2/3+Y LDY &B3:BCC LA2EB:INY .LA2EB STY &B3 RTS \ Network Transmit \ ================ \ XY=>control block \ XY+0/1 flag \ XY+2/3 dest stn \ XY+4/5 start address \ XY+6/7 end address \ XY+8/9 immediate parameters .LA2EE PHP :\ A2EE 08 . PHA :\ A2EF 48 H TYA :\ A2F0 98 . PHA :\ A2F1 48 H TXA :\ A2F2 8A . PHA :\ A2F3 48 H CLD :\ A2F4 D8 X SEI :\ A2F5 78 x STX &B4:STY &B5 :\ &B4/5=>control block TSX:STX &FF :\ Save current Stack Pointer LDA #&20 :\ A2FD A9 20 ) AND &B401 :\ A2FF 2D 01 B4 -.4 BEQ LA307 :\ A302 F0 03 p. JMP LA39B :\ A304 4C 9B A3 L.# .LA307 JSR LA163 :\ A307 20 63 A1 c! LDY #&04 :\ A30A A0 04 . JSR LA443 :\ A30C 20 43 A4 C$ LDY #&01 :\ A30F A0 01 . LDA (&B4),Y :\ A311 B1 B4 14 BNE LA31C :\ A313 D0 07 P. TAY :\ A315 A8 ( JSR LA494 :\ A316 20 94 A4 .$ JMP LA32C :\ A319 4C 2C A3 L,# .LA31C JSR LA40D :\ A31C 20 0D A4 .$ SEC :\ A31F 38 8 JSR LA351 :\ A320 20 51 A3 Q# JSR LA415 :\ A323 20 15 A4 .$ CLC :\ A326 18 . LDY &B1 :\ A327 A4 B1 $1 JSR LA336 :\ A329 20 36 A3 6# .LA32C LDY #&00 :\ A32C A0 00 . TXA :\ A32E 8A . STA (&B4),Y :\ A32F 91 B4 .4 JMP LA3B0 :\ A331 4C B0 A3 L0# .LA334 INC &B3 :\ A334 E6 B3 f3 .LA336 LDA (&B2),Y :\ A336 B1 B2 12 .LA338 BIT &B400 :\ A338 2C 00 B4 ,.4 BPL LA338 :\ A33B 10 FB .{ BVC LA36A :\ A33D 50 2B P+ STA &B402 :\ A33F 8D 02 B4 ..4 INY :\ A342 C8 H BEQ LA34D :\ A343 F0 08 p. LDA (&B2),Y :\ A345 B1 B2 12 STA &B402 :\ A347 8D 02 B4 ..4 INY :\ A34A C8 H BNE LA336 :\ A34B D0 E9 Pi .LA34D DEC &B0 :\ A34D C6 B0 F0 BNE LA334 :\ A34F D0 E3 Pc .LA351 LDA #&3F :\ A351 A9 3F )? STA &B401 :\ A353 8D 01 B4 ..4 .LA356 BIT &B400 :\ A356 2C 00 B4 ,.4 BPL LA356 :\ A359 10 FB .{ BVC LA36A :\ A35B 50 0D P. TXA :\ A35D 8A . BMI LA363 :\ A35E 30 03 0. JMP LA0B0 :\ A360 4C B0 A0 L0 .LA363 LDA #&00 :\ A363 A9 00 ). STA &B400 :\ A365 8D 00 B4 ..4 BEQ LA3BA :\ A368 F0 50 pP .LA36A TXA :\ A36A 8A . BNE LA3A3 :\ A36B D0 36 P6 JMP LA23C :\ A36D 4C 3C A2 L<" .LA370 LDY &B404 :\ A370 AC 04 B4 ,.4 .LA373 PHA :\ A373 48 H PHA :\ A374 48 H PHA :\ A375 48 H PLA :\ A376 68 h PLA :\ A377 68 h PLA :\ A378 68 h INY :\ A379 C8 H BNE LA373 :\ A37A D0 F7 Pw TXA :\ A37C 8A . BNE LA3A2 :\ A37D D0 23 P# JMP LA23B :\ A37F 4C 3B A2 L;" .LA382 JSR LA385 :\ A382 20 85 A3 .# .LA385 JSR LA388 :\ A385 20 88 A3 .# .LA388 LDA (&B4),Y :\ A388 B1 B4 14 BCC LA38F :\ A38A 90 03 .. LDA &00B6,Y :\ A38C B9 B6 00 96. .LA38F BIT &B400 :\ A38F 2C 00 B4 ,.4 BPL LA38F :\ A392 10 FB .{ BVC LA370 :\ A394 50 DA PZ INY :\ A396 C8 H .LA397 STA &B402 :\ A397 8D 02 B4 ..4 RTS :\ A39A 60 ` .LA39B INX :\ A39B E8 h .LA39C INX :\ A39C E8 h INX :\ A39D E8 h INX :\ A39E E8 h INX :\ A39F E8 h INX :\ A3A0 E8 h .LA3A1 INX :\ A3A1 E8 h .LA3A2 INX :\ A3A2 E8 h .LA3A3 INX :\ A3A3 E8 h .LA3A4 INX :\ A3A4 E8 h INX :\ A3A5 E8 h .LA3A6 LDY #&00 :\ A3A6 A0 00 . TXA :\ A3A8 8A . ORA #&40 :\ A3A9 09 40 .@ STA (&B4),Y :\ A3AB 91 B4 .4 LDX &FF :\ A3AD A6 FF &. TXS :\ A3AF 9A . .LA3B0 JSR LA095 :\ A3B0 20 95 A0 . PLA :\ A3B3 68 h TAX :\ A3B4 AA * PLA :\ A3B5 68 h TAY :\ A3B6 A8 ( PLA :\ A3B7 68 h PLP :\ A3B8 28 ( RTS :\ A3B9 60 ` .LA3BA LDA #&82 :\ A3BA A9 82 ). STA &B400 :\ A3BC 8D 00 B4 ..4 PHP :\ A3BF 08 . TXA :\ A3C0 8A . ORA #&20 :\ A3C1 09 20 . TAX :\ A3C3 AA * LDA #&01 :\ A3C4 A9 01 ). .LA3C6 BIT &B400 :\ A3C6 2C 00 B4 ,.4 BPL LA3C6 :\ A3C9 10 FB .{ BIT &B401 :\ A3CB 2C 01 B4 ,.4 BEQ LA3A1 :\ A3CE F0 D1 pQ LDA &B402 :\ A3D0 AD 02 B4 -.4 CMP &B404 :\ A3D3 CD 04 B4 M.4 BNE LA3A1 :\ A3D6 D0 C9 PI .LA3D8 LDA &B401 :\ A3D8 AD 01 B4 -.4 BEQ LA3D8 :\ A3DB F0 FB p{ BPL LA3A1 :\ A3DD 10 C2 .B LDA &B402 :\ A3DF AD 02 B4 -.4 BNE LA3A1 :\ A3E2 D0 BD P= .LA3E4 LDA &B401 :\ A3E4 AD 01 B4 -.4 BEQ LA3E4 :\ A3E7 F0 FB p{ BPL LA3A1 :\ A3E9 10 B6 .6 LDA &B402 :\ A3EB AD 02 B4 -.4 LDA &B402 :\ A3EE AD 02 B4 -.4 LDA #&02 :\ A3F1 A9 02 ). BIT &B401 :\ A3F3 2C 01 B4 ,.4 BEQ LA3A1 :\ A3F6 F0 A9 p) JSR LA0BB :\ A3F8 20 BB A0 ; TXA :\ A3FB 8A . ORA #&10 :\ A3FC 09 10 .. TAX :\ A3FE AA * PLP :\ A3FF 28 ( BCC LA40C :\ A400 90 0A .. .LA402 LDA #&44:STA &B400 LDA #&E7:STA &B401 .LA40C RTS :\ A40C 60 ` .LA40D JSR LA415 :\ A40D 20 15 A4 .$ LDY #&00 :\ A410 A0 00 . JMP LA385 :\ A412 4C 85 A3 L.# .LA415 LDY #&02 :\ A415 A0 02 . CLC :\ A417 18 . .LA418 JSR LA385 :\ A418 20 85 A3 .# LDA &B404 :\ A41B AD 04 B4 -.4 JSR LA38F :\ A41E 20 8F A3 .# LDA #&00 :\ A421 A9 00 ). JMP LA397 :\ A423 4C 97 A3 L.# .LA426 SEC :\ A426 38 8 LDA &BA :\ A427 A5 BA %: SBC &BE :\ A429 E5 BE e> STA &B1 :\ A42B 85 B1 .1 LDA &BB :\ A42D A5 BB %; SBC #&00 :\ A42F E9 00 i. STA &B3 :\ A431 85 B3 .3 LDA &BE :\ A433 A5 BE %> STA &B2 :\ A435 85 B2 .2 LDA &BF :\ A437 A5 BF %? SEC :\ A439 38 8 SBC &B3 :\ A43A E5 B3 e3 STA &B0 :\ A43C 85 B0 .0 INY :\ A43E C8 H INY :\ A43F C8 H INY :\ A440 C8 H INY :\ A441 C8 H RTS :\ A442 60 ` .LA443 SEC :\ A443 38 8 LDA (&B4),Y :\ A444 B1 B4 14 INY :\ A446 C8 H INY :\ A447 C8 H SBC (&B4),Y :\ A448 F1 B4 q4 STA &B1 :\ A44A 85 B1 .1 DEY :\ A44C 88 . LDA (&B4),Y :\ A44D B1 B4 14 SBC #&00 :\ A44F E9 00 i. STA &B3 :\ A451 85 B3 .3 INY :\ A453 C8 H LDA (&B4),Y :\ A454 B1 B4 14 STA &B2 :\ A456 85 B2 .2 INY :\ A458 C8 H LDA (&B4),Y :\ A459 B1 B4 14 SEC :\ A45B 38 8 SBC &B3 :\ A45C E5 B3 e3 STA &B0 :\ A45E 85 B0 .0 INY :\ A460 C8 H LDA (&B4),Y :\ A461 B1 B4 14 STA &BA :\ A463 85 BA .: INY :\ A465 C8 H LDA (&B4),Y :\ A466 B1 B4 14 STA &BB :\ A468 85 BB .; INY :\ A46A C8 H LDA (&B4),Y :\ A46B B1 B4 14 STA &BC :\ A46D 85 BC .< INY :\ A46F C8 H LDA (&B4),Y :\ A470 B1 B4 14 STA &BD :\ A472 85 BD .= SEC :\ A474 38 8 LDA &BA :\ A475 A5 BA %: SBC &B1 :\ A477 E5 B1 e1 STA &BE :\ A479 85 BE .> LDA &BB :\ A47B A5 BB %; SBC #&00 :\ A47D E9 00 i. CLC :\ A47F 18 . ADC &B0 :\ A480 65 B0 e0 STA &BF :\ A482 85 BF .? LDA &BC :\ A484 A5 BC %< ADC #&00 :\ A486 69 00 i. STA &C0 :\ A488 85 C0 .@ LDA &BD :\ A48A A5 BD %= ADC #&00 :\ A48C 69 00 i. STA &C1 :\ A48E 85 C1 .A DEY :\ A490 88 . DEY :\ A491 88 . DEY :\ A492 88 . RTS :\ A493 60 ` .LA494 LDA (&B4),Y :\ A494 B1 B4 14 TAY :\ A496 A8 ( CPY #&81 :\ A497 C0 81 @. BCC LA4A8 :\ A499 90 0D .. CPY #&89 :\ A49B C0 89 @. BCS LA4A8 :\ A49D B0 09 0. LDA LA432,Y :\ A49F B9 32 A4 92$ PHA :\ A4A2 48 H LDA LA42A,Y :\ A4A3 B9 2A A4 9*$ PHA :\ A4A6 48 H RTS :\ A4A7 60 ` .LA4A8 JMP LA39B :\ A4A8 4C 9B A3 L.# TSX :\ A4AB BA : INC &18,X :\ A4AC F6 18 v. CLC :\ A4AE 18 . CLC :\ A4AF 18 . BIT &34,X :\ A4B0 34 34 44 TSX :\ A4B2 BA : LDY &A4 :\ A4B3 A4 A4 $$ LDA &A5 :\ A4B5 A5 A5 %% LDA &A5 :\ A4B7 A5 A5 %% LDA &A4 :\ A4B9 A5 A4 %$ LDY #&04 :\ A4BB A0 04 . JSR LA443 :\ A4BD 20 43 A4 C$ JSR LA40D :\ A4C0 20 0D A4 .$ LDY #&04 :\ A4C3 A0 04 . SEC :\ A4C5 38 8 JSR LA382 :\ A4C6 20 82 A3 .# LDY #&08 :\ A4C9 A0 08 . SEC :\ A4CB 38 8 JSR LA382 :\ A4CC 20 82 A3 .# LDA #&3F :\ A4CF A9 3F )? STA &B401 :\ A4D1 8D 01 B4 ..4 .LA4D4 BIT &B400 :\ A4D4 2C 00 B4 ,.4 BPL LA4D4 :\ A4D7 10 FB .{ BVS LA4DE :\ A4D9 70 03 p. JMP LA3A3 :\ A4DB 4C A3 A3 L## .LA4DE JSR LA0B0 :\ A4DE 20 B0 A0 0 JSR LA0A1 :\ A4E1 20 A1 A0 ! LDY #&02 :\ A4E4 A0 02 . LDA (&B4),Y :\ A4E6 B1 B4 14 STA &B6 :\ A4E8 85 B6 .6 INY :\ A4EA C8 H LDA (&B4),Y :\ A4EB B1 B4 14 STA &B7 :\ A4ED 85 B7 .7 JSR LA1DE :\ A4EF 20 DE A1 ^! .LA4F2 LDY &B1 :\ A4F2 A4 B1 $1 JMP LA295 :\ A4F4 4C 95 A2 L." LDY #&04 :\ A4F7 A0 04 . JSR LA443 :\ A4F9 20 43 A4 C$ JSR LA40D :\ A4FC 20 0D A4 .$ LDY #&04 :\ A4FF A0 04 . SEC :\ A501 38 8 JSR LA382 :\ A502 20 82 A3 .# LDY #&08 :\ A505 A0 08 . SEC :\ A507 38 8 JSR LA382 :\ A508 20 82 A3 .# SEC :\ A50B 38 8 JSR LA351 :\ A50C 20 51 A3 Q# JSR LA415 :\ A50F 20 15 A4 .$ CLC :\ A512 18 . LDY &B1 :\ A513 A4 B1 $1 JSR LA336 :\ A515 20 36 A3 6# RTS :\ A518 60 ` LDY #&04 :\ A519 A0 04 . JSR LA443 :\ A51B 20 43 A4 C$ JSR LA40D :\ A51E 20 0D A4 .$ LDY #&08 :\ A521 A0 08 . CLC :\ A523 18 . JSR LA382 :\ A524 20 82 A3 .# SEC :\ A527 38 8 JSR LA351 :\ A528 20 51 A3 Q# JSR LA415 :\ A52B 20 15 A4 .$ CLC :\ A52E 18 . LDY &B1 :\ A52F A4 B1 $1 JSR LA336 :\ A531 20 36 A3 6# RTS :\ A534 60 ` JSR LA40D :\ A535 20 0D A4 .$ CLC :\ A538 18 . JSR LA351 :\ A539 20 51 A3 Q# RTS :\ A53C 60 ` \ Do an immediate operation \ ------------------------- \ src.stn src.net ctrl port addr addr addr addr \ &B6 &B7 &B8 &B9 &B8 &B9 &BA &BB \ .LA53D LDY &B8 :\ Get control byte CPY #&81:BCC LA56D :\ Too low, ignore CPY #&89:BCS LA56D :\ Too high, ignore CPY #&87:BCS LA562 :\ CONT and PING, ignore protection check LDA &B6 :\ Get station number CMP #&F0:BCS LA562 :\ Priviledged station, ignore protection check TYA:SEC:SBC #&81:TAY :\ Y=immediate operation 0-7 LDA &023B :\ Get protection mask .LA559 ROR A:DEY:BPL LA559 :\ Rotate mask to get appropriate bit BCC LA562 :\ Bit is clear, do the immediate JMP LA56E :\ Action is protection, \ Call immediate routine \ ---------------------- .LA562 LDY &B8 :\ Get control byte LDA LA47B-&81,Y:PHA :\ Stack destination address LDA LA473-&81,Y:PHA RTS :\ Jump to it .LA56D INX :\ A56D E8 h .LA56E INX :\ A56E E8 h TXA :\ A56F 8A . JMP LA235 :\ A570 4C 35 A2 L5" \ Immediate operation dispatch addresses \ -------------------------------------- .LA573 EQUB (LA594-1) AND 255 :\ &81 - PEEK EQUB (LA5AD-1) AND 255 :\ &82 - POKE EQUB (LA5D6-1) AND 255 :\ &83 - RJSR EQUB (LA5C1-1) AND 255 :\ &84 - RPC EQUB (LA5CA-1) AND 255 :\ &85 - ROSC EQUB (LA614-1) AND 255 :\ &86 - HALT EQUB (LA630-1) AND 255 :\ &87 - CONT EQUB (LA583-1) AND 255 :\ &88 - PING .LA57B EQUB (LA594-1) DIV 256 :\ &81 - PEEK EQUB (LA5AD-1) DIV 256 :\ &82 - POKE EQUB (LA5D6-1) DIV 256 :\ &83 - RJSR EQUB (LA5C1-1) DIV 256 :\ &84 - RPC EQUB (LA5CA-1) DIV 256 :\ &85 - ROSC EQUB (LA614-1) DIV 256 :\ &86 - HALT EQUB (LA630-1) DIV 256 :\ &87 - CONT EQUB (LA583-1) DIV 256 :\ &88 - PING \ Immediate &88 - PING \ --------------------- .LA583 CLC LDA #LA712 AND 255:STA &BA :\ Point to Machine Type block LDA #LA712 DIV 256:STA &BB LDA #LA716 AND 255:STA &BE LDA #LA716 DIV 256:STA &BF \ \ Fall through to PEEK to return machine type block \ Immediate &81 - PEEK \ --------------------- .LA594 LDY #&04 JSR LA426 :\ &B0/1=length of reply block LDA &B400 :\ Flush anything from ADLC JSR LA402 :\ A59C 20 02 A4 .$ LDY #&00 :\ A59F A0 00 . SEC :\ A5A1 38 8 JSR LA418 :\ A5A2 20 18 A4 .$ LDY &B1 :\ A5A5 A4 B1 $1 JSR LA336 :\ A5A7 20 36 A3 6# JMP LA0BB :\ A5AA 4C BB A0 L; LDY #&04 :\ A5AD A0 04 . JSR LA426 :\ A5AF 20 26 A4 &$ JSR LA24B :\ A5B2 20 4B A2 K" JSR LA1DE :\ A5B5 20 DE A1 ^! LDY &B1 :\ A5B8 A4 B1 $1 JSR LA295 :\ A5BA 20 95 A2 ." JSR LA24B :\ A5BD 20 4B A2 K" RTS :\ A5C0 60 ` \ Immediate &84 - Remote Procedure Call \ ------------------------------------- .LA5C1 LDA &0238:LDY &0239 :\ Get RPC address JMP LA5CE :\ Call this address \ Immediate &85 - Remote OS Call \ ------------------------------ .LA5CA LDA #LA70C AND 255 :\ Call ROSCall filing system entry LDY #LA70C DIV 256 .LA5CE STY &BB LDY &BA:STY &BC :\ Move data from &BA to &BC STA &BA :\ &BA/B=dest address \ Immediate &83 - Remote JSR - address is in received frame \ --------------------------------------------------------- .LA5D6 LDA #&F8:STA &B1 :\ &B0/1=>&01F8 LDA #&01:STA &B0 LDA #&CA:STA &B2 :\ &B2/3=&FFCA so (&B2),&F0=>&00BA LDA #&FF:STA &B3 JSR LA24B :\ A5E6 20 4B A2 K" JSR LA1DE :\ A5E9 20 DE A1 ^! LDY &B1 :\ A5EC A4 B1 $1 JSR LA295 :\ A5EE 20 95 A2 ." JSR LA24B :\ A5F1 20 4B A2 K" LDA #&1C :\ Temporarily set protection mask ORA &023B:STA &023B JSR LA095 :\ A5FC 20 95 A0 . CLI :\ A5FF 58 X LDA &B8 :\ Get immediate control byte back CMP #&83:BEQ LA60B :\ Jump if it was RJSR LDA &BC JMP LA60D .LA60B LDA &C2 :\ A60B A5 C2 %B .LA60D LDY &B7:LDX &B6 :\ Get parameters from frame header JMP (&00BA) :\ Jump to routine \ Immediate &86 - HALT \ -------------------- .LA614 JSR LA24B :\ Send Acknowledge LDA #&40 :\ Test bit 6 BIT &023A:BNE LA62F :\ Already halted, exit ORA &023A:STA &023A :\ Set 'halted' JSR LA095 :\ Set 'no receive block open' CLI :\ Enable IRQs so system continues LDA #&40 :\ Test bit 6 .LA62A BIT &023A:BNE LA62A :\ Loop until somebody CONTs me .LA62F RTS \ Immediate &87 - CONT \ -------------------- .LA630 JSR LA24B :\ Send Acknowledge LDA #&BF AND &023A:STA &023A :\ Clear 'Halted' bit RTS .LA63C EQUB &43 :\ A63C 43 C EQUB &42 :\ A63D 42 B AND &20,X :\ A63E 35 20 5 SEC :\ A640 38 8 EOR (&46,X) :\ A641 41 46 AF ORA &2A3B :\ A643 0D 3B 2A .;* .LA646 JSR &2020 :\ A646 20 20 20 JSR &2020 :\ A649 20 20 20 JSR &2020 :\ A64C 20 20 20 JSR &2020 :\ A64F 20 20 20 JSR &2020 :\ A652 20 20 20 EOR &6E :\ A655 45 6E En EQUB &67 :\ A657 67 g .LA658 JSR LA7F7 :\ A658 20 F7 A7 w' .LA65B JSR LA6BC :\ A65B 20 BC A6 <& .LA65E JSR LA66D :\ A65E 20 6D A6 m& LDA &011A :\ A661 AD 1A 01 -.. BEQ LA669 :\ A664 F0 03 p. JMP LA83C :\ A666 4C 3C A8 L<( .LA669 LDA &0119 :\ A669 AD 19 01 -.. RTS :\ A66C 60 ` .LA66D JSR LA69B :\ A66D 20 9B A6 .& .LA670 LDY #&D0 :\ A670 A0 D0 P LDA #&0F :\ A672 A9 0F ). .LA674 STA &DC :\ A674 85 DC .\ LDA #&00 :\ A676 A9 00 ). STA &DB :\ A678 85 DB .[ .LA67A LDA &0000,Y :\ A67A B9 00 00 9.. BMI LA690 :\ Jump to close receive block INC &DA :\ A67F E6 DA fZ BNE LA67A :\ A681 D0 F7 Pw INC &DB :\ A683 E6 DB f[ BNE LA67A :\ A685 D0 F3 Ps DEC &DC :\ A687 C6 DC F\ BNE LA67A :\ A689 D0 EF Po LDA #&02 :\ A68B A9 02 ). JMP LA83C :\ A68D 4C 3C A8 L<( .LA690 PHA:LDA &023A AND #&7F:STA &023A :\ Set Receive block closed PLA:RTS .LA69B LDX #&08 :\ A69B A2 08 ". .LA69D LDA LA6B3,X :\ A69D BD B3 A6 =3& STA &D0,X :\ A6A0 95 D0 .P DEX :\ A6A2 CA J BPL LA69D :\ A6A3 10 F8 .x JSR LA80D :\ A6A5 20 0D A8 .( JMP LA85D :\ A6A8 4C 5D A8 L]( .LA6AB BRA LA646 :\ A6AB 80 99 .. BRK :\ A6AD 00 . BRK :\ A6AE 00 . ASL &01,X :\ A6AF 16 01 .. ROR &01 :\ A6B1 66 01 f. .LA6B3 EQUB &7F :\ A6B3 7F . DEY :\ A6B4 88 . BRK :\ A6B5 00 . BRK :\ A6B6 00 . ORA &FF01,Y :\ A6B7 19 01 FF ... EQUB &FF :\ A6BA FF . BRK :\ A6BB 00 . .LA6BC LDY #&07 :\ A6BC A0 07 . .LA6BE LDX LA6AB,Y :\ A6BE BE AB A6 >+& STX &D0,Y :\ A6C1 96 D0 .P DEY :\ A6C3 88 . BPL LA6BE :\ A6C4 10 F8 .x JSR LA80D :\ A6C6 20 0D A8 .( LDA #&60 :\ A6C9 A9 60 )` LDY #&30 :\ A6CB A0 30 0 JMP LA818 :\ A6CD 4C 18 A8 L.( JSR LAFF1 :\ A6D0 20 F1 AF q/ LSR &FE :\ A6D3 46 FE F~ JMP LA83C :\ A6D5 4C 3C A8 L<( .LA6D8 LDX #&03 :\ A6D8 A2 03 ". .LA6DA LDA LA774,X :\ A6DA BD 74 A7 =t' STA &0208,X :\ A6DD 9D 08 02 ... DEX :\ A6E0 CA J BPL LA6DA :\ A6E1 10 F7 .w RTS :\ A6E3 60 ` \ Default settings for &228-&22F \ ------------------------------ .LA6E4 BRK :\ A6E4 00 . BRK :\ A6E5 00 . EQUB &F9 :\ A6E6 F9 EQUB &A8 :\ A6E7 A8 EQUW &00FE :\ File server 0.254 EQUS &00EB :\ Print server 0.235 .LA6EC PHA :\ A6EC 48 H ORA (&4D,X) :\ A6ED 01 4D .M ORA (&00,X) :\ A6EF 01 00 .. \ Check for end of line \ --------------------- .LA6F1 PHA JSR &F876 :\ Skip spaces CMP #&0D :\ Check for end of line BEQ LA6FC :\ No more parameters, ok JMP &FA7D :\ Print 'SYN?' and abort .LA6FC PLA:RTS .LA6FE TSB &04 :\ A6FE 04 04 .. \ Entry jump block to NFS filing system \ ===================================== .LA700:JMP LA732 :\ Claim filing system vectors .LA703:JMP LA750 :\ A703 4C 50 A7 LP' .LA706:JMP LA75C :\ A706 4C 5C A7 L\' .LA709:JMP LA658 :\ A709 4C 58 A6 LX& .LA70C:JMP LA716 :\ Remote OS Call .LA70F:JMP LA81A \ Machine Type information block \ ------------------------------ .LA712 EQUW &0002 :\ Acorn Atom EQUW &3450 :\ Version 3.450 (should be &0350) \ Remote OS Call \ -------------- .LA716 PHA LDA &023B :\ Get protection mask AND #&E3:STA &023B :\ Disable remote calls PLA CMP #&01:BNE LA72B :\ Not 'start of notify' STX &0228:STY &0229 :\ Store notifying station .LA72A RTS .LA72B CMP #&02:BNE LA72A :\ Not &02 JMP LAD6B :\ Jump to do 'start of remote' \ Claim filing system vectors \ --------------------------- .LA732 LDA #&70 :\ A732 A9 70 )p EOR #&60 :\ A734 49 60 I` STA &8015 :\ Poke 'P' on top of '0' of '3.50' LDX #&15 :\ Claim filing system vectors .LA73B LDA LA772,X:STA &0206,X DEX:BPL LA73B .LA744 LDX #&07 :\ Copy default file system settings .LA746 LDA LA6E4,X:STA &0228,X DEX:BPL LA746 RTS \ *COS - copy default filing system vectors \ ========================================= .LA750 LDX #&15 :\ A750 A2 15 ". .LA752 LDA &FF9C,X :\ A752 BD 9C FF =.. STA &0206,X :\ A755 9D 06 02 ... DEX :\ A758 CA J BPL LA752 :\ A759 10 F7 .w RTS :\ A75B 60 ` .LA75C LDX #&10 :\ A75C A2 10 ". .LA75E LDA &FFA1,X :\ A75E BD A1 FF =!. STA &020B,X :\ A761 9D 0B 02 ... DEX :\ A764 CA J BNE LA75E :\ A765 D0 F7 Pw INX :\ A767 E8 h JSR LA6DA :\ A768 20 DA A6 Z& JSR LA744 :\ A76B 20 44 A7 D' LDX #&01 :\ A76E A2 01 ". BNE LA752 :\ A770 D0 E0 P` \ Filing system vectors \ --------------------- .LA772 EQUW LACF9 :\ COMVEC Command line EQUW LAF48 :\ WRCVEC Write character EQUW LAE93 :\ RDCVEC Read character EQUW LAA95 :\ LODVEC Load file EQUW LA9BB :\ SAVVEC Save file EQUW LABC3 :\ RDRVEC Read channel info EQUW LABA3 :\ STRVEC Set channel info EQUW LAB7B :\ BGTVEC Get byte EQUW LAB5E :\ BPTVEC Put byte EQUW LAB25 :\ FNDVEC Open file EQUW LABE5 :\ SHTVEC Close file .LA788 LDX #&00 :\ A788 A2 00 ". .LA78A LDA &011A,X :\ A78A BD 1A 01 =.. BMI LA79E :\ A78D 30 0F 0. BNE LA793 :\ A78F D0 02 P. LDA #&0D :\ A791 A9 0D ). .LA793 JSR &FFE9 :\ OSASCI INX :\ A796 E8 h BNE LA78A :\ A797 D0 F1 Pq .LA799 LDA #&20 :\ A799 A9 20 ) BIT &B001 :\ A79B 2C 01 B0 ,.0 .LA79E RTS :\ A79E 60 ` \ *. *I. *command - pass to file server \ ===================================== .LA79F LDY #&00 :\ A79F A0 00 . .LA7A1 LDA &0100,Y :\ A7A1 B9 00 01 9.. INY :\ A7A4 C8 H CMP #&0D :\ A7A5 C9 0D I. BNE LA7A1 :\ A7A7 D0 F8 Px .LA7A9 LDA &0100,Y :\ A7A9 B9 00 01 9.. STA &011B,Y :\ A7AC 99 1B 01 ... DEY :\ A7AF 88 . BPL LA7A9 :\ A7B0 10 F7 .w INY :\ A7B2 C8 H JSR LA658 :\ A7B3 20 58 A6 X& BEQ LA7C3 :\ A7B6 F0 0B p. ASL A :\ A7B8 0A . TAX :\ A7B9 AA * LDA LA7CF,X :\ A7BA BD CF A7 =O' PHA :\ A7BD 48 H LDA LA7CE,X :\ A7BE BD CE A7 =N' PHA :\ A7C1 48 H RTS :\ A7C2 60 ` .LA7C3 LDX #&2F :\ A7C3 A2 2F "/ PHA :\ A7C5 48 H LDA #&0D :\ A7C6 A9 0D ). .LA7C8 STA &0110,X :\ A7C8 9D 10 01 ... DEX :\ A7CB CA J BPL LA7C8 :\ A7CC 10 FA .z .LA7CE PLA :\ A7CE 68 h .LA7CF RTS :\ A7CF 60 ` STZ &71A9,X :\ A7D0 9E A9 71 .)q TAX :\ A7D3 AA * ORA (&AC),Y :\ A7D4 11 AC ., BIT #&AC :\ A7D6 89 AC ., AND &39A9,Y :\ A7D8 39 A9 39 9)9 LDA #&BE :\ A7DB A9 BE )> LDY LACB1 :\ A7DD AC B1 AC ,1, CMP &AC :\ A7E0 C5 AC E, .LA7E2 LDA #&05 :\ A7E2 A9 05 ). .LA7E4 TAY :\ A7E4 A8 ( .LA7E5 LDA (&00,X) :\ A7E5 A1 00 !. STA &0116,Y :\ A7E7 99 16 01 ... CMP #&0D :\ A7EA C9 0D I. BEQ LA80C :\ A7EC F0 1E p. INY :\ A7EE C8 H INC &00,X :\ A7EF F6 00 v. BNE LA7E5 :\ A7F1 D0 F2 Pr INC &01,X :\ A7F3 F6 01 v. BNE LA7E5 :\ A7F5 D0 EE Pn .LA7F7 LDX #&88 :\ A7F7 A2 88 ". STX &0116 :\ A7F9 8E 16 01 ... STY &0117 :\ A7FC 8C 17 01 ... PHA :\ A7FF 48 H LDX #&02 :\ A800 A2 02 ". .LA802 LDA &0224,X :\ A802 BD 24 02 =$. STA &0118,X :\ A805 9D 18 01 ... DEX :\ A808 CA J BPL LA802 :\ A809 10 F7 .w PLA :\ A80B 68 h .LA80C RTS :\ A80C 60 ` .LA80D LDA &022C :\ A80D AD 2C 02 -,. STA &D2 :\ A810 85 D2 .R LDA &022D :\ A812 AD 2D 02 --. STA &D3 :\ A815 85 D3 .S RTS :\ A817 60 ` \ Do Network Transmit from &00D0 .LA818 LDX #&D0 \ Do Network Transmit from zero page \ X=>control block, A=retries, Y=delay between retries .LA81A PHA:TYA:PHA :\ Save registers LDA &00,X:PHA :\ Save flag from control block LDY #&00 :\ Point to control block in zero page JSR &023D :\ Do Network Transmit LDA &00,X :\ Get update transmit flag ROL A:BPL LA843 :\ Successful, return PLA:STA &00,X :\ Restore flag PLA:TAY:PLA :\ Restore registers CLC:SBC #&00 :\ Decrement A BEQ LA83A :\ Timed out, report NOT LISTENING JSR LA848 :\ Pause between retries BNE LA81A :\ Jump back to try again .LA83A LDA #&01 :\ Report error &01 - NOT LISTENING .LA83C LDX #&19:LDY #&01 :\ XY=>error block in receive block JMP (&022A) :\ Jump to report error .LA843 PLA :\ Drop saved flag PLA:TAY:PLA :\ Restore registers RTS \ Delay by count in Y \ ------------------- .LA848 CPY #&00 :\ A848 C0 00 @. BEQ LA85C :\ A84A F0 10 p. PHA :\ A84C 48 H TXA :\ A84D 8A . PHA :\ A84E 48 H LDX #&00 :\ A84F A2 00 ". TYA :\ A851 98 . .LA852 DEX :\ A852 CA J BNE LA852 :\ A853 D0 FD P} DEY :\ A855 88 . BNE LA852 :\ A856 D0 FA Pz TAY :\ A858 A8 ( PLA :\ A859 68 h TAX :\ A85A AA * PLA :\ A85B 68 h .LA85C RTS :\ A85C 60 ` .LA85D LDA #&D0:LDX #&00 :\ Point to receive block at &00D0 .LA861 JSR LA690 :\ Set 'receive block closed' STA &0230 :\ Set &230 STX &0231 :\ Set &231 LDA &023A ORA #&80:STA &023A :\ Set 'receive block open' RTS \ Parse command line for net.stn \ ============================== .LA873 LDA #&00 STA &00,X:STA &01,X :\ Clear accumulators JSR &F876 :\ Skip spaces LDA &0100,Y :\ Get character CMP #&3A:BCS LA8BD :\ Not a digit, bad number SBC #&2F:BMI LA8BD :\ Not a digit, bad number .LA887 LDA &0100,Y :\ Get character CMP #&3A:BCS LA8B8 :\ Not a digit, end of number SBC #&2F:BMI LA8B8 :\ Not a digit, end of number INY :\ Step to next character PHA :\ (0,X)=(0,X)*10+digit LDA &01,X :\ A894 B5 01 5. PHA :\ A896 48 H LDA &00,X :\ A897 B5 00 5. ASL A :\ A899 0A . ROL &01,X :\ A89A 36 01 6. ASL A :\ A89C 0A . ROL &01,X :\ A89D 36 01 6. ADC &00,X :\ A89F 75 00 u. STA &00,X :\ A8A1 95 00 .. PLA :\ A8A3 68 h ADC &01,X :\ A8A4 75 01 u. ASL &00,X :\ A8A6 16 00 .. ROL A :\ A8A8 2A * STA &01,X :\ A8A9 95 01 .. PLA :\ A8AB 68 h ADC &00,X :\ A8AC 75 00 u. STA &00,X :\ A8AE 95 00 .. BCC LA887 :\ A8B0 90 D5 .U INC &01,X :\ A8B2 F6 01 v. BEQ LA8F0 :\ Overflow from top byte BNE LA887 :\ Loop for next character .LA8B8 LDA &00,X:ORA &01,X :\ Set EQ if 0.0 RTS \ Parsing station, not a number, do user name lookup \ -------------------------------------------------- .LA8BD TXA :\ A8BD 8A . PHA :\ A8BE 48 H LDX #&00 :\ A8BF A2 00 ". .LA8C1 LDA &0100,Y :\ A8C1 B9 00 01 9.. CMP #&20 :\ A8C4 C9 20 I BEQ LA8D3 :\ A8C6 F0 0B p. CMP #&0D :\ A8C8 C9 0D I. BEQ LA8D3 :\ A8CA F0 07 p. STA &011B,X :\ A8CC 9D 1B 01 ... INX :\ A8CF E8 h INY :\ A8D0 C8 H BNE LA8C1 :\ A8D1 D0 EE Pn .LA8D3 LDA #&0D :\ A8D3 A9 0D ). STA &011B,X :\ A8D5 9D 1B 01 ... TYA :\ A8D8 98 . PHA :\ A8D9 48 H LDY #&18 :\ A8DA A0 18 . JSR LA658 :\ Network Op, look for user PLA :\ A8DF 68 h TAY :\ A8E0 A8 ( PLA :\ A8E1 68 h TAX :\ A8E2 AA * LDA &011C:STA &00,X :\ Copy returned net/stn number LDA &011D:STA &01,X JMP LA8B8 :\ Jump back to check returned value .LA8F0 JSR &F7D1 :\ Print inline text EQUS "STN?" NOP BRK :\ Abort \ Report error \ ------------ \ A=error, X=?, Y=? .LA8F9 CMP #&10:BCS LA922 :\ Abort with supplied message CMP #&01:BEQ LA90F :\ Jump to NOT LISTENING JSR &F7D1 :\ Print inline text EQUS "NO REPLY" NOP BMI LA936 :\ Jump to clear and abort .LA90F JSR &F7D1 :\ Print inline text EQUS "NOT LISTENING" NOP BMI LA936 :\ Jump to clear and abort \ Print supplied message and abort .LA922 TYA:PHA :\ Push high byte of message address LDY #&02 .LA926 STX &D0 :\ Store low byte of address PLA:PHA:STA &D1 :\ Store high byte of address LDA (&D0),Y:JSR &FFE9 :\ Print character via OSASCI INY:CMP #&0D:BNE LA926 :\ Loop until printed .LA936 JSR LA690 :\ Set 'receive block closed' BRK :\ Abort .LA93A LDX #&02 :\ A93A A2 02 ". .LA93C LDA &011B,X :\ A93C BD 1B 01 =.. STA &0224,X :\ A93F 9D 24 02 .$. DEX :\ A942 CA J BPL LA93C :\ A943 10 F7 .w JMP LA7C3 :\ A945 4C C3 A7 LC' .LA948 STA &DA :\ A948 85 DA .Z STY &0113 :\ A94A 8C 13 01 ... STA &0114 :\ A94D 8D 14 01 ... LDY #&99 :\ A950 A0 99 . STY &0112 :\ A952 8C 12 01 ... STY &D1 :\ A955 84 D1 .Q .LA957 JSR LA80D :\ A957 20 0D A8 .( LDA #&12 :\ A95A A9 12 ). STA &D4 :\ A95C 85 D4 .T LDA #&01 :\ A95E A9 01 ). STA &D5 :\ A960 85 D5 .U LDA &0227 :\ A962 AD 27 02 -'. LDX #&08 :\ A965 A2 08 ". .LA967 LSR &DA :\ A967 46 DA FZ BCS LA96F :\ A969 B0 04 0. LSR A :\ A96B 4A J DEX :\ A96C CA J BNE LA967 :\ A96D D0 F8 Px .LA96F LDY #&02 :\ A96F A0 02 . LDX #&04 :\ A971 A2 04 ". .LA973 ORA #&80 :\ A973 09 80 .. STA &D0 :\ A975 85 D0 .P CLC :\ A977 18 . TXA :\ A978 8A . ADC &D4 :\ A979 65 D4 eT STA &D6 :\ A97B 85 D6 .V LDA &D5 :\ A97D A5 D5 %U ADC #&00 :\ A97F 69 00 i. STA &D7 :\ A981 85 D7 .W LDA #&FF :\ A983 A9 FF ). JSR LA818 :\ A985 20 18 A8 .( LDX #&7F :\ A988 A2 7F ". STX &D0 :\ A98A 86 D0 .P LDX #&FF :\ A98C A2 FF ". STX &D6 :\ A98E 86 D6 .V STX &D7 :\ A990 86 D7 .W INX :\ A992 E8 h STX &D8 :\ A993 86 D8 .X JSR LA85D :\ A995 20 5D A8 ]( JSR LA670 :\ A998 20 70 A6 p& LDA &0112 :\ A99B AD 12 01 -.. RTS :\ A99E 60 ` CLC :\ A99F 18 . LDA &011B :\ A9A0 AD 1B 01 -.. STA &013C :\ A9A3 8D 3C 01 .<. ADC &0123 :\ A9A6 6D 23 01 m#. STA &013E :\ A9A9 8D 3E 01 .>. LDA &011C :\ A9AC AD 1C 01 -.. STA &013D :\ A9AF 8D 3D 01 .=. ADC &0124 :\ A9B2 6D 24 01 m$. STA &013F :\ A9B5 8D 3F 01 .?. JMP LAA00 :\ A9B8 4C 00 AA L.* LDA #&10 :\ A9BB A9 10 ). JSR LA7E4 :\ A9BD 20 E4 A7 d' LDA &06,X :\ A9C0 B5 06 5. STA &013C :\ A9C2 8D 3C 01 .<. LDA &07,X :\ A9C5 B5 07 5. STA &013D :\ A9C7 8D 3D 01 .=. LDA &08,X :\ A9CA B5 08 5. STA &013E :\ A9CC 8D 3E 01 .>. SEC :\ A9CF 38 8 SBC &06,X :\ A9D0 F5 06 u. STA &06,X :\ A9D2 95 06 .. LDA &09,X :\ A9D4 B5 09 5. STA &013F :\ A9D6 8D 3F 01 .?. SBC &07,X :\ A9D9 F5 07 u. STA &07,X :\ A9DB 95 07 .. LDA #&00 :\ A9DD A9 00 ). STA &08,X :\ A9DF 95 08 .. LDY #&0A :\ A9E1 A0 0A . LDA #&00 :\ A9E3 A9 00 ). .LA9E5 STA &011B,Y :\ A9E5 99 1B 01 ... DEY :\ A9E8 88 . BPL LA9E5 :\ A9E9 10 FA .z INY :\ A9EB C8 H .LA9EC LDA &02,X :\ A9EC B5 02 5. STA &011B,Y :\ A9EE 99 1B 01 ... LDA &03,X :\ A9F1 B5 03 5. STA &011C,Y :\ A9F3 99 1C 01 ... INY :\ A9F6 C8 H INY :\ A9F7 C8 H INY :\ A9F8 C8 H INY :\ A9F9 C8 H INX :\ A9FA E8 h INX :\ A9FB E8 h CPY #&0C :\ A9FC C0 0C @. BNE LA9EC :\ A9FE D0 EC Pl .LAA00 LDY #&01 :\ AA00 A0 01 . JSR LA7F7 :\ AA02 20 F7 A7 w' LDA #&77 :\ AA05 A9 77 )w STA &0118 :\ AA07 8D 18 01 ... JSR LA65B :\ AA0A 20 5B A6 [& LDA #&00 :\ AA0D A9 00 ). STA &0120 :\ AA0F 8D 20 01 . . .LAA12 LDA &013C :\ AA12 AD 3C 01 -<. STA &D4 :\ AA15 85 D4 .T CLC :\ AA17 18 . ADC &011C :\ AA18 6D 1C 01 m.. STA &D6 :\ AA1B 85 D6 .V LDA &013D :\ AA1D AD 3D 01 -=. STA &D5 :\ AA20 85 D5 .U ADC &011D :\ AA22 6D 1D 01 m.. STA &D7 :\ AA25 85 D7 .W BCS LAA35 :\ AA27 B0 0C 0. LDA &D6 :\ AA29 A5 D6 %V CMP &013E :\ AA2B CD 3E 01 M>. LDA &D7 :\ AA2E A5 D7 %W SBC &013F :\ AA30 ED 3F 01 m?. BCC LAA42 :\ AA33 90 0D .. .LAA35 LDA &013E :\ AA35 AD 3E 01 ->. STA &D6 :\ AA38 85 D6 .V LDA &013F :\ AA3A AD 3F 01 -?. STA &D7 :\ AA3D 85 D7 .W INC &0120 :\ AA3F EE 20 01 n . .LAA42 LDA &011B :\ AA42 AD 1B 01 -.. STA &D1 :\ AA45 85 D1 .Q LDX #&D0 :\ AA47 A2 D0 "P LDY #&0A :\ AA49 A0 0A . LDA #&FF :\ AA4B A9 FF ). JSR LA81A :\ AA4D 20 1A A8 .( LDA &0120 :\ AA50 AD 20 01 - . BNE LAA6C :\ AA53 D0 17 P. LDA &D6 :\ AA55 A5 D6 %V STA &013C :\ AA57 8D 3C 01 .<. LDA &D7 :\ AA5A A5 D7 %W STA &013D :\ AA5C 8D 3D 01 .=. JSR LA69B :\ AA5F 20 9B A6 .& LDA #&77 :\ AA62 A9 77 )w STA &D1 :\ AA64 85 D1 .Q JSR LA670 :\ AA66 20 70 A6 p& JMP LAA12 :\ AA69 4C 12 AA L.* .LAA6C JSR LA65E :\ AA6C 20 5E A6 ^& JMP LA7C3 :\ AA6F 4C C3 A7 LC' LDA &011B :\ AA72 AD 1B 01 -.. STA &013D :\ AA75 8D 3D 01 .=. LDA &011C :\ AA78 AD 1C 01 -.. STA &013E :\ AA7B 8D 3E 01 .>. LDA &011F :\ AA7E AD 1F 01 -.. STA &013F :\ AA81 8D 3F 01 .?. LDX #&00 :\ AA84 A2 00 ". .LAA86 LDA &0120,X :\ AA86 BD 20 01 = . STA &011B,X :\ AA89 9D 1B 01 ... INX :\ AA8C E8 h CMP #&0D :\ AA8D C9 0D I. BNE LAA86 :\ AA8F D0 F5 Pu TXA :\ AA91 8A . CLC :\ AA92 18 . BCC LAAA7 :\ AA93 90 12 .. .LAA95 LDA &02,X :\ AA95 B5 02 5. STA &013D :\ AA97 8D 3D 01 .=. LDA &03,X :\ AA9A B5 03 5. STA &013E :\ AA9C 8D 3E 01 .>. LDA &04,X :\ AA9F B5 04 5. STA &013F :\ AAA1 8D 3F 01 .?. JSR LA7E2 :\ AAA4 20 E2 A7 b' .LAAA7 LDY #&02 :\ AAA7 A0 02 . .LAAA9 JSR LA7F7 :\ AAA9 20 F7 A7 w' LDX #&2D :\ AAAC A2 2D "- STX &0118 :\ AAAE 8E 18 01 ... JSR LA65B :\ AAB1 20 5B A6 [& BIT &013F :\ AAB4 2C 3F 01 ,?. BPL LAAC6 :\ AAB7 10 0D .. LDA &013D :\ AAB9 AD 3D 01 -=. STA &D4 :\ AABC 85 D4 .T LDA &013E :\ AABE AD 3E 01 ->. STA &D5 :\ AAC1 85 D5 .U JMP LAAD2 :\ AAC3 4C D2 AA LR* .LAAC6 LDA &011B :\ AAC6 AD 1B 01 -.. STA &D4 :\ AAC9 85 D4 .T LDA &011C :\ AACB AD 1C 01 -.. STA &D5 :\ AACE 85 D5 .U LDA #&08 :\ AAD0 A9 08 ). .LAAD2 PHA :\ AAD2 48 H CLC :\ AAD3 18 . LDA &D4 :\ AAD4 A5 D4 %T ADC &0123 :\ AAD6 6D 23 01 m#. STA &0123 :\ AAD9 8D 23 01 .#. LDA &D5 :\ AADC A5 D5 %U ADC &0124 :\ AADE 6D 24 01 m$. STA &0124 :\ AAE1 8D 24 01 .$. LDA #&2D :\ AAE4 A9 2D )- STA &D1 :\ AAE6 85 D1 .Q .LAAE8 LDA #&FF :\ AAE8 A9 FF ). STA &D6 :\ AAEA 85 D6 .V STA &D7 :\ AAEC 85 D7 .W LDA #&7F :\ AAEE A9 7F ). STA &D0 :\ AAF0 85 D0 .P JSR LA85D :\ AAF2 20 5D A8 ]( LDY #&D0 :\ AAF5 A0 D0 P PLA :\ AAF7 68 h JSR LA674 :\ AAF8 20 74 A6 t& LDA &D6 :\ AAFB A5 D6 %V CMP &0123 :\ AAFD CD 23 01 M#. LDA &D7 :\ AB00 A5 D7 %W SBC &0124 :\ AB02 ED 24 01 m$. BCS LAB15 :\ AB05 B0 0E 0. LDA &D6 :\ AB07 A5 D6 %V STA &D4 :\ AB09 85 D4 .T LDA &D7 :\ AB0B A5 D7 %W STA &D5 :\ AB0D 85 D5 .U LDA #&08 :\ AB0F A9 08 ). PHA :\ AB11 48 H JMP LAAE8 :\ AB12 4C E8 AA Lh* .LAB15 JSR LA65E :\ AB15 20 5E A6 ^& LDA &011F :\ AB18 AD 1F 01 -.. STA &D0 :\ AB1B 85 D0 .P LDA &0120 :\ AB1D AD 20 01 - . STA &D1 :\ AB20 85 D1 .Q JMP LA7C3 :\ AB22 4C C3 A7 LC' LDA #&00 :\ AB25 A9 00 ). STA &011C :\ AB27 8D 1C 01 ... ROL A :\ AB2A 2A * STA &011B :\ AB2B 8D 1B 01 ... LDA #&07 :\ AB2E A9 07 ). JSR LA7E4 :\ AB30 20 E4 A7 d' LDY #&06 :\ AB33 A0 06 . JSR LA7F7 :\ AB35 20 F7 A7 w' JSR LA6BC :\ AB38 20 BC A6 <& JSR LA66D :\ AB3B 20 6D A6 m& LDA &011A :\ AB3E AD 1A 01 -.. BEQ LAB4E :\ AB41 F0 0B p. CMP #&43 :\ AB43 C9 43 IC BEQ LAB4A :\ AB45 F0 03 p. JMP LA83C :\ AB47 4C 3C A8 L<( .LAB4A LDA #&00 :\ AB4A A9 00 ). BEQ LAB5B :\ AB4C F0 0D p. .LAB4E CLC :\ AB4E 18 . SBC &011B :\ AB4F ED 1B 01 m.. AND &0227 :\ AB52 2D 27 02 -'. STA &0227 :\ AB55 8D 27 02 .'. LDA &011B :\ AB58 AD 1B 01 -.. .LAB5B JMP LA7C3 :\ AB5B 4C C3 A7 LC' STA &0115 :\ AB5E 8D 15 01 ... TXA :\ AB61 8A . PHA :\ AB62 48 H TYA :\ AB63 98 . PHA :\ AB64 48 H LDA &0115 :\ AB65 AD 15 01 -.. PHA :\ AB68 48 H TYA :\ AB69 98 . LDY #&09 :\ AB6A A0 09 . JSR LA948 :\ AB6C 20 48 A9 H) LDA &0113 :\ AB6F AD 13 01 -.. BNE LAB89 :\ AB72 D0 15 P. PLA :\ AB74 68 h STA &0114 :\ AB75 8D 14 01 ... JMP LAB95 :\ AB78 4C 95 AB L.+ TXA :\ AB7B 8A . PHA :\ AB7C 48 H TYA :\ AB7D 98 . PHA :\ AB7E 48 H LDY #&08 :\ AB7F A0 08 . JSR LA948 :\ AB81 20 48 A9 H) LDA &0113 :\ AB84 AD 13 01 -.. BEQ LAB90 :\ AB87 F0 07 p. .LAB89 LDX #&12 :\ AB89 A2 12 ". LDY #&01 :\ AB8B A0 01 . JMP (&022A) :\ AB8D 6C 2A 02 l*. .LAB90 LDA &0115 :\ AB90 AD 15 01 -.. ASL A :\ AB93 0A . ASL A :\ AB94 0A . .LAB95 PLA :\ AB95 68 h TAY :\ AB96 A8 ( EOR &0227 :\ AB97 4D 27 02 M'. STA &0227 :\ AB9A 8D 27 02 .'. PLA :\ AB9D 68 h TAX :\ AB9E AA * LDA &0114 :\ AB9F AD 14 01 -.. RTS :\ ABA2 60 ` TXA :\ ABA3 8A . PHA :\ ABA4 48 H STY &011B :\ ABA5 8C 1B 01 ... LDY #&00 :\ ABA8 A0 00 . STY &011C :\ ABAA 8C 1C 01 ... .LABAD LDA &00,X :\ ABAD B5 00 5. STA &011D,Y :\ ABAF 99 1D 01 ... INX :\ ABB2 E8 h INY :\ ABB3 C8 H CPY #&03 :\ ABB4 C0 03 @. BNE LABAD :\ ABB6 D0 F5 Pu LDY #&0D :\ ABB8 A0 0D . JSR LA658 :\ ABBA 20 58 A6 X& PLA :\ ABBD 68 h TAX :\ ABBE AA * LDY &011B :\ ABBF AC 1B 01 ,.. RTS :\ ABC2 60 ` STY &011B :\ ABC3 8C 1B 01 ... STA &011C :\ ABC6 8D 1C 01 ... TYA :\ ABC9 98 . PHA :\ ABCA 48 H TXA :\ ABCB 8A . PHA :\ ABCC 48 H LDY #&0C :\ ABCD A0 0C . JSR LA658 :\ ABCF 20 58 A6 X& PLA :\ ABD2 68 h TAX :\ ABD3 AA * INX :\ ABD4 E8 h INX :\ ABD5 E8 h LDY #&02 :\ ABD6 A0 02 . .LABD8 LDA &011B,Y :\ ABD8 B9 1B 01 9.. STA &00,X :\ ABDB 95 00 .. DEX :\ ABDD CA J DEY :\ ABDE 88 . BPL LABD8 :\ ABDF 10 F7 .w INX :\ ABE1 E8 h PLA :\ ABE2 68 h TAY :\ ABE3 A8 ( RTS :\ ABE4 60 ` TYA :\ ABE5 98 . PHA :\ ABE6 48 H STA &011B :\ ABE7 8D 1B 01 ... LDY #&07 :\ ABEA A0 07 . JSR LA658 :\ ABEC 20 58 A6 X& PLA :\ ABEF 68 h TAY :\ ABF0 A8 ( RTS :\ ABF1 60 ` \ *I AM - log onto file server \ ============================ .LABF2 JSR &F876 :\ Skip spaces LDA &0100,Y CMP #&30:BCC LAC0F :\ Not a digit, skip CMP #&3A:BCS LAC0F :\ Not a digit, skip LDX #&D0 :\ X=>&D0 to collect number JSR LA873 :\ Parse net.stn LDA &D0:STA &022C :\ Set file server station LDA &D1:STA &022D :\ Set file server network .LAC0F JMP LA79F :\ Jump to pass to file server .LAC12 LDY #&00 :\ AC12 A0 00 . .LAC14 LDA &011B,Y :\ AC14 B9 1B 01 9.. STA &0148,Y :\ AC17 99 48 01 .H. INY :\ AC1A C8 H CMP #&0D :\ AC1B C9 0D I. BNE LAC14 :\ AC1D D0 F5 Pu LDY #&04 :\ AC1F A0 04 . JSR LA658 :\ AC21 20 58 A6 X& JSR LACA4 :\ AC24 20 A4 AC $, JSR &FFED :\ AC27 20 ED FF m. LDA #&00 :\ AC2A A9 00 ). .LAC2C PHA :\ AC2C 48 H STA &011C :\ AC2D 8D 1C 01 ... LDA #&03 :\ AC30 A9 03 ). STA &011B :\ AC32 8D 1B 01 ... LDA #&02 :\ AC35 A9 02 ). STA &011D :\ AC37 8D 1D 01 ... LDA #&48 :\ AC3A A9 48 )H STA &D0 :\ AC3C 85 D0 .P LDA #&01 :\ AC3E A9 01 ). STA &D1 :\ AC40 85 D1 .Q LDX #&D0 :\ AC42 A2 D0 "P LDA #&08 :\ AC44 A9 08 ). JSR LA7E4 :\ AC46 20 E4 A7 d' LDY #&03 :\ AC49 A0 03 . JSR LA7F7 :\ AC4B 20 F7 A7 w' JSR LA6BC :\ AC4E 20 BC A6 <& LDX #&08 :\ AC51 A2 08 ". .LAC53 LDA LAC81,X :\ AC53 BD 81 AC =., STA &D0,X :\ AC56 95 D0 .P DEX :\ AC58 CA J BPL LAC53 :\ AC59 10 F8 .x JSR LA80D :\ AC5B 20 0D A8 .( JSR LA85D :\ AC5E 20 5D A8 ]( JSR LA670 :\ AC61 20 70 A6 p& LDA &0117 :\ AC64 AD 17 01 -.. BEQ LAC70 :\ AC67 F0 07 p. LDX #&16 :\ AC69 A2 16 ". LDY #&01 :\ AC6B A0 01 . JMP (&022A) :\ AC6D 6C 2A 02 l*. .LAC70 LDA &0118 :\ AC70 AD 18 01 -.. BEQ LAC7F :\ AC73 F0 0A p. JSR LA788 :\ AC75 20 88 A7 .' PLA :\ AC78 68 h CLC :\ AC79 18 . ADC #&02 :\ AC7A 69 02 i. JMP LAC2C :\ AC7C 4C 2C AC L,, .LAC7F PLA :\ AC7F 68 h RTS :\ AC80 60 ` .LAC81 EQUB &7F :\ AC81 7F . DEY :\ AC82 88 . BRK :\ AC83 00 . BRK :\ AC84 00 . ASL &01,X :\ AC85 16 01 .. EQUB &FF :\ AC87 FF . EQUB &FF :\ AC88 FF . BRK :\ AC89 00 . LDA #&0D :\ AC8A A9 0D ). STA &0157 :\ AC8C 8D 57 01 .W. LDX #&00 :\ AC8F A2 00 ". .LAC91 LDA &011B,X :\ AC91 BD 1B 01 =.. JSR &FFE9 :\ AC94 20 E9 FF i. INX :\ AC97 E8 h CPX #&1C :\ AC98 E0 1C `. BNE LAC91 :\ AC9A D0 F5 Pu JSR &FFED :\ AC9C 20 ED FF m. INX :\ AC9F E8 h INX :\ ACA0 E8 h INX :\ ACA1 E8 h BNE LACA6 :\ ACA2 D0 02 P. .LACA4 LDX #&00 :\ ACA4 A2 00 ". .LACA6 LDA &011B,X :\ ACA6 BD 1B 01 =.. BMI LACB1 :\ ACA9 30 06 0. JSR &FFE9 :\ ACAB 20 E9 FF i. INX :\ ACAE E8 h BNE LACA6 :\ ACAF D0 F5 Pu .LACB1 RTS :\ ACB1 60 ` LDA #&00 :\ ACB2 A9 00 ). STA &013F :\ ACB4 8D 3F 01 .?. LDY #&05 :\ ACB7 A0 05 . JSR LAAA9 :\ ACB9 20 A9 AA )* JMP (&00D0) :\ ACBC 6C D0 00 lP. LDA &011B :\ ACBF AD 1B 01 -.. STA &0225 :\ ACC2 8D 25 02 .%. RTS :\ ACC5 60 ` LDA &011B :\ ACC6 AD 1B 01 -.. STA &0226 :\ ACC9 8D 26 02 .&. RTS :\ ACCC 60 ` .LACCD EQUS "." :EQUB (LA79F-1) DIV 256:EQUB (LA79F-1) AND 255 EQUS "GO" :EQUB (LF8EF-1) DIV 256:EQUB (LF8EF-1) AND 255 EQUS "I." :EQUS (LA79F-1) DIV 256:EQUB (LA79F-1) AND 255 .LACD8 EQUS "I AM" :EQUB (LABF2-1) DIV 256:EQUB (LABF2-1) AND 255 EQUS "NOTIFY":EQUB (LADD8-1) DIV 256:EQUB (LADD8-1) AND 255 EQUS "COS" :EQUB (LA750-1) DIV 256:EQUB (LA750-1) AND 255 EQUS "ROFF" :EQUB (LAD84-1) DIV 256:EQUB (LAD84-1) AND 255 EQUS "" :EQUB (LA79F-1) DIV 256:EQUB (LA79F-1) AND 255 .LACF3 LDX #&0C :\ ACF3 A2 0C CLD :\ ACF5 D8 X JMP LACFC :\ ACF6 4C FC AC L|, \ COMVEC handler - Command line \ ============================= .LACF9 LDX #&FF :\ Point to start of command table CLD .LACFC LDY #&00:JSR &F876 :\ Skip spaces DEY :\ Balance next INY .LAD02 INY :\ Step to next command character INX :\ Step to next table character .LAD04 LDA LACCD,X :\ AD04 BD CD AC =M, BMI LAD21 :\ AD07 30 18 0. CMP &0100,Y :\ AD09 D9 00 01 Y.. BEQ LAD02 :\ AD0C F0 F4 pt DEX :\ AD0E CA J .LAD0F INX :\ AD0F E8 h LDA LACCD,X :\ AD10 BD CD AC =M, BPL LAD0F :\ AD13 10 FA .z INX :\ AD15 E8 h LDA &0100,Y :\ AD16 B9 00 01 9.. CMP #&2E :\ AD19 C9 2E I. BNE LACFC :\ AD1B D0 DF P_ INY :\ AD1D C8 H DEX :\ AD1E CA J BCS LAD04 :\ AD1F B0 E3 0c \ Command matched \ --------------- .LAD21 PHA:LDA LACCD+1,X:PHA :\ Stack dest address CLC:LDX #&00 RTS :\ Jump to the code .LAD2A STX &EF :\ AD2A 86 EF .o STY &F0 :\ AD2C 84 F0 .p LDX #&04 :\ AD2E A2 04 ". .LAD30 LDA LAD39,X :\ AD30 BD 39 AD =9- STA &F1,X :\ AD33 95 F1 .q DEX :\ AD35 CA J BPL LAD30 :\ AD36 10 F8 .x RTS :\ AD38 60 ` .LAD39 INC &00,X :\ AD39 F6 00 v. EQUB &F7 :\ AD3B F7 w BRK :\ AD3C 00 . BRK :\ AD3D 00 . .LAD3E LDA #&62 :\ AD3E A9 62 )b STA &022A :\ AD40 8D 2A 02 .*. LDA #&AD :\ AD43 A9 AD )- STA &022B :\ AD45 8D 2B 02 .+. LDA #&80 :\ AD48 A9 80 ). STA &ED :\ AD4A 85 ED .m LDA #&FF :\ AD4C A9 FF ). LDY #&14 :\ AD4E A0 14 . LDX #&ED :\ AD50 A2 ED "m JSR LA81A :\ AD52 20 1A A8 .( .LAD55 PHA :\ AD55 48 H LDA #&F9 :\ AD56 A9 F9 )y STA &022A :\ AD58 8D 2A 02 .*. LDA #&A8 :\ AD5B A9 A8 )( STA &022B :\ AD5D 8D 2B 02 .+. PLA :\ AD60 68 h RTS :\ AD61 60 ` .LAD62 JSR LAD55 :\ AD62 20 55 AD U- JSR LA6D8 :\ AD65 20 D8 A6 X& JMP LA90F :\ AD68 4C 0F A9 L.) \ Remote OS Call &02 - Start REMOTE \ --------------------------------- .LAD6B JSR LAD2A :\ AD6B 20 2A AD *- LDX #&03 :\ AD6E A2 03 ". .LAD70 LDA LAD80,X:STA &0208,X :\ Redirect WRCVEC and RDCVEC DEX:BPL LAD70 INX:STX &B000 JMP &C2CA .LAD80 EQUW LADC2 :\ Remoted WRCVEC EQUW LAD9E :\ Remoted RDCVEC \ *ROFF \ ===== .LAD84 LDA &020A :\ AD84 AD 0A 02 -.. CMP #&9E :\ AD87 C9 9E I. BNE LAD9D :\ AD89 D0 12 P. LDA #&C0 :\ AD8B A9 C0 )@ STA &EE :\ AD8D 85 EE .n JSR LAD3E :\ AD8F 20 3E AD >- JSR LA6D8 :\ AD92 20 D8 A6 X& JSR LA690 :\ AD95 20 90 A6 .& LDA #&00 :\ AD98 A9 00 ). STA &B000 :\ AD9A 8D 00 B0 ..0 .LAD9D RTS :\ AD9D 60 ` \ Remoted RDCVEC \ ============== .LAD9E TXA :\ AD9E 8A . PHA :\ AD9F 48 H TYA :\ ADA0 98 . PHA :\ ADA1 48 H LDA #&C1 :\ ADA2 A9 C1 )A STA &EE :\ ADA4 85 EE .n JSR LAD3E :\ ADA6 20 3E AD >- LDA #&7F :\ ADA9 A9 7F ). STA &ED :\ ADAB 85 ED .m LDA #&ED :\ ADAD A9 ED )m LDX #&00 :\ ADAF A2 00 ". JSR LA861 :\ ADB1 20 61 A8 a( .LADB4 LDA &ED :\ ADB4 A5 ED %m BPL LADB4 :\ ADB6 10 FC .| JSR LA690 :\ ADB8 20 90 A6 .& PLA :\ ADBB 68 h TAY :\ ADBC A8 ( PLA :\ ADBD 68 h TAX :\ ADBE AA * LDA &F6 :\ ADBF A5 F6 %v RTS :\ ADC1 60 ` \ Remoted WRCVEC \ ============== .LADC2 STA &F6 :\ ADC2 85 F6 .v TXA :\ ADC4 8A . PHA :\ ADC5 48 H TYA :\ ADC6 98 . PHA :\ ADC7 48 H LDA #&C2 :\ ADC8 A9 C2 )B STA &EE :\ ADCA 85 EE .n JSR LAD3E :\ ADCC 20 3E AD >- PLA :\ ADCF 68 h TAY :\ ADD0 A8 ( PLA :\ ADD1 68 h TAX :\ ADD2 AA * LDA &F6 :\ ADD3 A5 F6 %v JMP &FE55 :\ ADD5 4C 55 FE LU~ .LADD8 LDX #&DA :\ ADD8 A2 DA "Z JSR LA873 :\ ADDA 20 73 A8 s( BNE LADE2 :\ ADDD D0 03 P. JMP LA8F0 :\ ADDF 4C F0 A8 Lp( .LADE2 JSR &F876 :\ ADE2 20 76 F8 vx LDX #&00 :\ ADE5 A2 00 ". .LADE7 LDA &0100,Y :\ ADE7 B9 00 01 9.. STA &0100,X :\ ADEA 9D 00 01 ... INX :\ ADED E8 h INY :\ ADEE C8 H CMP #&0D :\ ADEF C9 0D I. BNE LADE7 :\ ADF1 D0 F4 Pt TXA :\ ADF3 8A . PHA :\ ADF4 48 H LDX #&09 :\ ADF5 A2 09 ". .LADF7 LDA LAF3E,X :\ ADF7 BD 3E AF =>/ STA &D0,X :\ ADFA 95 D0 .P DEX :\ ADFC CA J BPL LADF7 :\ ADFD 10 F8 .x LDA &DA :\ ADFF A5 DA %Z STA &D2 :\ AE01 85 D2 .R LDA &DB :\ AE03 A5 DB %[ STA &D3 :\ AE05 85 D3 .S LDA #&20 :\ AE07 A9 20 ) LDY #&14 :\ AE09 A0 14 . JSR LA818 :\ AE0B 20 18 A8 .( LDA &DA :\ AE0E A5 DA %Z BEQ LAE1B :\ AE10 F0 09 p. JSR &F7D1 :\ AE12 20 D1 F7 Qw EQUB &42 :\ AE15 42 B EOR &53,X :\ AE16 55 53 US EOR &00EA,Y :\ AE18 59 EA 00 Yj. .LAE1B LDX #&00 :\ AE1B A2 00 ". STX &D9 :\ AE1D 86 D9 .Y INX :\ AE1F E8 h STX &D8 :\ AE20 86 D8 .X LDX #&03 :\ AE22 A2 03 ". .LAE24 LDA LAF39,X :\ AE24 BD 39 AF =9/ STA &D4,X :\ AE27 95 D4 .T DEX :\ AE29 CA J BPL LAE24 :\ AE2A 10 F8 .x LDA #&85 :\ AE2C A9 85 ). STA &D0 :\ AE2E 85 D0 .P LDA #&20 :\ AE30 A9 20 ) LDY #&14 :\ AE32 A0 14 . JSR LA818 :\ AE34 20 18 A8 .( LDX #&04 :\ AE37 A2 04 ". .LAE39 LDA LAF39,X :\ AE39 BD 39 AF =9/ STA &D4,X :\ AE3C 95 D4 .T DEX :\ AE3E CA J BPL LAE39 :\ AE3F 10 F8 .x LDA #&7F :\ AE41 A9 7F ). STA &D0 :\ AE43 85 D0 .P JSR LA85D :\ AE45 20 5D A8 ]( .LAE48 JSR LA799 :\ AE48 20 99 A7 .' BEQ LAE8E :\ AE4B F0 41 pA LDA &D0 :\ AE4D A5 D0 %P BPL LAE48 :\ AE4F 10 F7 .w JSR LA690 :\ AE51 20 90 A6 .& LDA #&00 :\ AE54 A9 00 ). STA &D4 :\ AE56 85 D4 .T LDA #&01 :\ AE58 A9 01 ). STA &D5 :\ AE5A 85 D5 .U PLA :\ AE5C 68 h STA &DB :\ AE5D 85 DB .[ LDA #&00 :\ AE5F A9 00 ). PHA :\ AE61 48 H .LAE62 LDA &DA :\ AE62 A5 DA %Z CLC :\ AE64 18 . ADC &D4 :\ AE65 65 D4 eT STA &D6 :\ AE67 85 D6 .V LDA #&00 :\ AE69 A9 00 ). ADC &D5 :\ AE6B 65 D5 eU STA &D7 :\ AE6D 85 D7 .W LDA #&80 :\ AE6F A9 80 ). STA &D0 :\ AE71 85 D0 .P LDA #&FF :\ AE73 A9 FF ). LDY #&02 :\ AE75 A0 02 . JSR LA818 :\ AE77 20 18 A8 .( PLA :\ AE7A 68 h CLC :\ AE7B 18 . ADC &DA :\ AE7C 65 DA eZ CMP &DB :\ AE7E C5 DB E[ BCS LAE92 :\ AE80 B0 10 0. PHA :\ AE82 48 H LDA &D6 :\ AE83 A5 D6 %V STA &D4 :\ AE85 85 D4 .T LDA &D7 :\ AE87 A5 D7 %W STA &D5 :\ AE89 85 D5 .U JMP LAE62 :\ AE8B 4C 62 AE Lb. .LAE8E JSR LA690 :\ AE8E 20 90 A6 .& PLA :\ AE91 68 h .LAE92 RTS :\ AE92 60 ` .LAE93 JSR &FE94 :\ Call Kernel OSRDCH CMP #&0D:BNE LAE92 :\ If not , return TXA:PHA:TYA:PHA :\ Save registers LDA &0228:BNE LAEA6 :\ Jump if a Notify message pending JMP LAF2E :\ Otherwise, exit returning A= .LAEA6 PHA :\ Save station number LDX #&07 .LAEA9 LDA LAF35,X:STA &D0,X :\ Set up a receive block DEX:BPL LAEA9 PLA:STA &D2 :\ Put station number in receive block LDA &0229:STA &D3 :\ Put network number in receive block LDA #LAF27 AND 255:STA &022A :\ Catch network errors LDA #LAF27 DIV 256:STA &022B LDA #&05:STA &DA :\ AEC5 85 DA .Z LDA #&10 LDY #&32 JSR LA818 :\ AECB 20 18 A8 .( LDX #&04 :\ AECE A2 04 ". .LAED0 LDA LA6EC,X :\ AED0 BD EC A6 =l& STA &D4,X :\ AED3 95 D4 .T DEX :\ AED5 CA J BPL LAED0 :\ AED6 10 F8 .x JSR &FFED :\ AED8 20 ED FF m. LDA &D2 :\ AEDB A5 D2 %R LDX #&2F :\ AEDD A2 2F "/ SEC :\ AEDF 38 8 .LAEE0 SBC #&64 :\ AEE0 E9 64 id INX :\ AEE2 E8 h BCS LAEE0 :\ AEE3 B0 FB 0{ ADC #&64 :\ AEE5 69 64 id PHA :\ AEE7 48 H TXA :\ AEE8 8A . JSR &FFF4 :\ OSWRCH PLA :\ AEEC 68 h LDX #&2F :\ AEED A2 2F "/ SEC :\ AEEF 38 8 .LAEF0 SBC #&0A :\ AEF0 E9 0A i. INX :\ AEF2 E8 h BCS LAEF0 :\ AEF3 B0 FB 0{ ADC #&3A :\ AEF5 69 3A i: PHA :\ AEF7 48 H TXA :\ AEF8 8A . JSR &FFF4 :\ OSWRCH PLA :\ AEFC 68 h JSR &FFF4 :\ OSWRCH JSR &F7D1 :\ AF00 20 D1 F7 Qw DEC A :\ AF03 3A : JSR LA9EA :\ AF04 20 EA A9 j) EQUB &7F :\ AF07 7F . STA &D0 :\ AF08 85 D0 .P JSR LA85D :\ AF0A 20 5D A8 ]( LDA #&01 :\ AF0D A9 01 ). LDY #&D0 :\ AF0F A0 D0 P JSR LA674 :\ AF11 20 74 A6 t& LDX #&00 :\ AF14 A2 00 ". .LAF16 LDA &0148,X :\ AF16 BD 48 01 =H. JSR &FFE9 :\ AF19 20 E9 FF i. CMP #&0D :\ AF1C C9 0D I. BEQ LAF29 :\ AF1E F0 09 p. INX :\ AF20 E8 h CPX #&05 :\ AF21 E0 05 `. BCC LAF16 :\ AF23 90 F1 .q BCS LAF06 :\ AF25 B0 DF 0_ PLA :\ AF27 68 h PLA :\ AF28 68 h .LAF29 LDX #&03 :\ AF29 A2 03 ". JSR LA746 :\ AF2B 20 46 A7 F' .LAF2E PLA :\ AF2E 68 h TAY :\ AF2F A8 ( PLA :\ AF30 68 h TAX :\ AF31 AA * LDA #&0D :\ AF32 A9 0D ). RTS :\ AF34 60 ` .LAF35 BRA LAEE1 :\ AF35 80 AA .* BRK :\ AF37 00 . BRK :\ AF38 00 . .LAF39 PHX :\ AF39 DA Z BRK :\ AF3A 00 . EQUB &DB :\ AF3B DB [ BRK :\ AF3C 00 . BRK :\ AF3D 00 . .LAF3E STA (&00,X) :\ AF3E 81 00 .. BRK :\ AF40 00 . BRK :\ AF41 00 . PHX :\ AF42 DA Z BRK :\ AF43 00 . EQUB &DB :\ AF44 DB [ BRK :\ AF45 00 . PLP :\ AF46 28 ( EQUB &02 :\ AF47 02 . \ WRCVEC - Write character \ ======================== .LAF4A BIT &FE:BMI LAF61 CMP #&02:BEQ LAF53 :\ Jump with VDU 2 JMP LAFEE :\ Otherwise, jump to Kernel .LAF53 ROR &FE :\ AF53 66 FE f~ LDA #&05 :\ AF55 A9 05 ). STA &0236 :\ AF57 8D 36 02 .6. LDA #&00 :\ AF5A A9 00 ). STA &0223 :\ AF5C 8D 23 02 .#. STA &CA :\ AF5F 85 CA .J .LAF61 STA &0112 :\ AF61 8D 12 01 ... PHA :\ AF64 48 H TXA :\ AF65 8A . PHA :\ AF66 48 H TYA :\ AF67 98 . PHA :\ AF68 48 H LDA &0112 :\ AF69 AD 12 01 -.. LDX &0236 :\ AF6C AE 36 02 .6. STA &CA,X :\ AF6F 95 CA .J INX :\ AF71 E8 h STX &0236 :\ AF72 8E 36 02 .6. CMP #&03 :\ AF75 C9 03 I. BNE LAF7F :\ AF77 D0 06 P. LDY &0223 :\ AF79 AC 23 02 ,#. CLC :\ AF7C 18 . BEQ LAF83 :\ AF7D F0 04 p. .LAF7F CPX #&06 :\ AF7F E0 06 `. BCC LAFE5 :\ AF81 90 62 .b .LAF83 LDX #&0F :\ AF83 A2 0F ". .LAF85 LDA &D0,X :\ AF85 B5 D0 5P PHA :\ AF87 48 H DEX :\ AF88 CA J BPL LAF85 :\ AF89 10 FA .z LDA &022E :\ AF8B AD 2E 02 -.. STA &D2 :\ AF8E 85 D2 .R LDA &022F :\ AF90 AD 2F 02 -/. STA &D3 :\ AF93 85 D3 .S LDA #&D1 :\ AF95 A9 D1 )Q STA &D1 :\ AF97 85 D1 .Q LDA &022A :\ AF99 AD 2A 02 -*. STA &0110 :\ AF9C 8D 10 01 ... LDA &022B :\ AF9F AD 2B 02 -+. STA &0111 :\ AFA2 8D 11 01 ... LDA #&D0 :\ AFA5 A9 D0 )P STA &022A :\ AFA7 8D 2A 02 .*. LDA #&A6 :\ AFAA A9 A6 )& STA &022B :\ AFAC 8D 2B 02 .+. LDA #&CA :\ AFAF A9 CA )J STA &D4 :\ AFB1 85 D4 .T LDA #&00 :\ AFB3 A9 00 ). STA &D5 :\ AFB5 85 D5 .U LDA &0227 :\ AFB7 AD 27 02 -'. EOR #&01 :\ AFBA 49 01 I. STA &0227 :\ AFBC 8D 27 02 .'. AND #&01 :\ AFBF 29 01 ). BCS LAFC5 :\ AFC1 B0 02 0. ORA #&04 :\ AFC3 09 04 .. .LAFC5 PHA :\ AFC5 48 H LDX &0236 :\ AFC6 AE 36 02 .6. LDY #&02 :\ AFC9 A0 02 . JSR LA973 :\ AFCB 20 73 A9 s) JSR LAFF1 :\ AFCE 20 F1 AF q/ LDA #&00 :\ AFD1 A9 00 ). STA &0236 :\ AFD3 8D 36 02 .6. TAX :\ AFD6 AA * PLA :\ AFD7 68 h TAY :\ AFD8 A8 ( .LAFD9 PLA :\ AFD9 68 h STA &D0,X :\ AFDA 95 D0 .P INX :\ AFDC E8 h CPX #&10 :\ AFDD E0 10 `. BNE LAFD9 :\ AFDF D0 F8 Px TYA :\ AFE1 98 . ROR A :\ AFE2 6A j ROR A :\ AFE3 6A j ROR A :\ AFE4 6A j .LAFE5 PLA :\ AFE5 68 h TAY :\ AFE6 A8 ( PLA :\ AFE7 68 h TAX :\ AFE8 AA * PLA :\ AFE9 68 h BCC LAFEE :\ AFEA 90 02 .. LSR &FE :\ AFEC 46 FE F~ .LAFEE JMP &FE55 :\ Jump to Kernel OSWRCH code .LAFF1 LDX &0110 :\ AFF1 AE 10 01 ... STX &022A :\ AFF4 8E 2A 02 .*. LDX &0111 :\ AFF7 AE 11 01 ... STX &022B :\ AFFA 8E 2B 02 .+. RTS :\ AFFD 60 ` EOR (&52,X) :\ AFFE 41 52 AR BRK :\ B000 00 . ]NEXT SAVE "*SAVE ";~mcode%;" ";~O%;" ";~exec%;" ";~load%