REM > BeebFlex/s REM Source for CUBE 6809 support ROM : REM BeebFlex allows the CUBE-09 to be used as a 6809 second REM processor for the BBC/Master : REM CUBE system is communicated with via ports in the Tube I/O map REM &FEF0 - sent data REM &FEF1 - received data REM &FEF2 FF REM &FEF3 00 REM &FEFC A8 REM &FEFD - status, b4=data waiting to be read REM b1=data waiting to be read OS_CLI=&FFF7:OSBYTE=&FFF4:OSWORD=&FFF1:OSWRCH=&FFEE OSWRCR=&FFEC:OSNEWL=&FFE7:OSASCI=&FFE3:OSRDCH=&FFE0 load%=&8000 DIM mcode% &1000 FOR P=0 TO 1 P%=load%:O%=mcode% [OPT P*3+4 JMP L83C8 JMP L804B EQUB &C2 EQUB Copyright-&8000 EQUB &05 EQUS "CUBE BeebFlex":EQUB 13 EQUB 0 EQUS "August 1984" .Copyright EQUB 0 EQUS "(C)Control Universal Ltd." EQUB 0 \ COMMAND TABLE \ ============= .L803F EQUS "FLEX":EQUB &C0 EQUS "FORMAT":EQUB &FF \ SERVICE HANDLER \ =============== .L804B CMP #&04:BNE L8052:JMP L8357 :\ *command .L8052 CMP #&09:BEQ L807C :\ *HELP CMP #&03:BEQ L805B :\ Boot FS RTS \ SERVICE 3 - BOOT FS \ =================== .L805B TYA:PHA :\ Save Y JSR L8386 :\ Print text EQUS "CUBEBeebFlex Aug.84":EQUB 13:EQUB 13 NOP PLA:TAY :\ Restore Y LDA #&03:RTS :\ Return \ SERVICE 9 - *HELP \ ================= .L807C TYA:PHA:LDA (&F2),Y :\ Get *HELP parameter CMP #&0D:BNE L80A9 :\ Jump if parameters present JSR L8386 :\ Print inline text EQUS "CUBE BeebFlex Aug.84":EQUB 13 EQUS "FLEX":EQUB 13 NOP .L80A4 PLA:TAY:LDA #&09:RTS :\ Exit from *HELP unclaimed .L80A9 LDX #&00:JSR L83A3 :\ Look for 'FLEX' BCS L80A4:BNE L80A4 :\ Exit unclaimed if not found JSR L8386 :\ Print inline text EQUS "Enter 6809 monitor by *FLEX":EQUB 13 EQUS "Use U0 to boot from FLEX disc":EQUB 13 EQUS "Use *FLEXFORMAT to format FLEX disk":EQUB 13 EQUB 13 EQUS "CUBE monitor commands":EQUB 13 EQUS " B Set up to 3 breakpoints":EQUB 13 EQUS " C CRC check":EQUB 13 EQUS " D Display memory":EQUB 13 EQUS " E Display stack page":EQUB 13 EQUS " F FLEX warm start":EQUB 13 EQUS " G Go to Hex address":EQUB 13 EQUS " I Initialise Monitor":EQUB 13 EQUS " J Go to hex, return to monitor":EQUB 13 EQUS " K Fill memory":EQUB 13 EQUS " L Load from 6502 RAM":EQUB 13 EQUS " M Memory examine":EQUB 13 EQUS " O Offset calculation":EQUB 13 EQUS " Q Test memory":EQUB 13 EQUS " R Registers":EQUB 13 EQUS " S Xfer to 6502 RAM":EQUB 13 EQUS " U Upload FLEX from drive n":EQUB 13 EQUS " W search for string":EQUB 13 NOP PLA:TAY:LDA #0:RTS \ SERVICE 4 - *COMMAND \ ==================== .L8357 TYA:PHA :\ Save text pointer LDX #&00:JSR L83A3 :\ Look for 'FLEX' command BCS L8369 :\ No match, exit BEQ L8378 :\ Matches, jump to routine LDX #&05:JSR L83A3 :\ Look for 'FLEXFORMAT' command BCC L836E :\ Matches, jump to routine .L8369 PLA:TAY:LDA #&04:RTS :\ Restore and return \ *FLEXFORMAT \ =========== .L836E JSR L87DE :\ Call format routine LDX &028C:JMP L8381 :\ Re-enter current language ROM \ *FLEX \ ===== .L8377 INX .L8378 LDA L803F,X:BPL L8377 :\ Loop to end of entry STA &60 :\ Store &C0 in &60 LDX &F4 :\ Get ROM number .L8381 LDA #&8E:JMP OSBYTE :\ Enter as a language \ Print inline text \ ----------------- .L8386 PLA :\ 8386= 68 h STA &FD :\ 8387= 85 FD .} PLA :\ 8389= 68 h STA &FE :\ 838A= 85 FE .~ LDY #&00 :\ 838C= A0 00 . .L838E INC &FD :\ 838E= E6 FD f} BNE L8394 :\ 8390= D0 02 P. INC &FE :\ 8392= E6 FE f~ .L8394 LDA (&FD),Y :\ 8394= B1 FD 1} CMP #&EA :\ 8396= C9 EA Ij BEQ L83A0 :\ 8398= F0 06 p. JSR OSASCI :\ 839A= 20 E3 FF c. JMP L838E :\ 839D= 4C 8E 83 L.. .L83A0 JMP (&00FD) :\ 83A0= 6C FD 00 l}. .L83A3 STY &E6 :\ 83A3= 84 E6 .f .L83A5 LDA L803F,X :\ 83A5= BD 3F 80 =?. BMI L83BE :\ 83A8= 30 14 0. LDA (&F2),Y :\ 83AA= B1 F2 1r CMP #&2E :\ 83AC= C9 2E I. BEQ L83BD :\ 83AE= F0 0D p. CMP L803F,X :\ 83B0= DD 3F 80 ]?. BNE L83B9 :\ 83B3= D0 04 P. INY :\ 83B5= C8 H INX :\ 83B6= E8 h BNE L83A5 :\ 83B7= D0 EC Pl .L83B9 LDY &E6 :\ 83B9= A4 E6 $f SEC :\ 83BB= 38 8 RTS :\ 83BC= 60 ` .L83BD INY :\ 83BD= C8 H .L83BE LDA (&F2),Y :\ 83BE= B1 F2 1r CMP #&20 :\ 83C0= C9 20 I BEQ L83BD :\ 83C2= F0 F9 py CMP #&0D :\ 83C4= C9 0D I. CLC :\ 83C6= 18 . RTS :\ 83C7= 60 ` \ LANGUAGE STARTUP \ ================ .L83C8 CMP #&01:BEQ L83CD:RTS :\ Exit if not A=1 language startup .L83CD LDX #&FF:TSX:CLI :\ Clear stack, enables IRQs LDA #L840C AND 255:STA &0202 :\ Set up error handler LDA #L840C DIV 256:STA &0203 LDA #&E5:LDX #&01 LDY #&00:JSR OSBYTE :\ Enable Escape key JMP L844C .L83E7 LDA #&E5 :\ 83E7= A9 E5 )e LDX #&00 :\ 83E9= A2 00 ". LDY #&00 :\ 83EB= A0 00 . JSR OSBYTE :\ 83ED= 20 F4 FF t. LDX &024B :\ 83F0= AE 4B 02 .K. CPX #&FF :\ 83F3= E0 FF `. BEQ L83FC :\ 83F5= F0 05 p. LDA #&8E :\ 83F7= A9 8E ). JMP OSBYTE :\ 83F9= 4C F4 FF Lt. .L83FC BRK :\ 83FC= 00 . EQUB &FF :\ 83FD= FF . LSR &206F :\ 83FE= 4E 6F 20 No EQUB &42 :\ 8401= 42 B EOR (&53,X) :\ 8402= 41 53 AS EOR #&43 :\ 8404= 49 43 IC JSR &4F52 :\ 8406= 20 52 4F RO EOR &000D :\ 8409= 4D 0D 00 M.. \ Error handler \ ============= .L840C LDX #&FF :\ 840C= A2 FF ". TXS :\ 840E= 9A . JSR OSNEWL :\ 840F= 20 E7 FF g. LDY #&00 :\ 8412= A0 00 . BEQ L8419 :\ 8414= F0 03 p. .L8416 JSR OSASCI :\ 8416= 20 E3 FF c. .L8419 INY :\ 8419= C8 H LDA (&FD),Y :\ 841A= B1 FD 1} BNE L8416 :\ 841C= D0 F8 Px JSR OSNEWL :\ 841E= 20 E7 FF g. JMP L8486 :\ 8421= 4C 86 84 L.. \ Data copied to &0700 \ -------------------- .L8424 BRK :\ 8424= 00 . BRK :\ 8425= 00 . BRK :\ 8426= 00 . ASL &00 :\ 8427= 06 00 .. BRK :\ 8429= 00 . EQUB &03 :\ 842A= 03 . EQUB &53 :\ 842B= 53 S BRK :\ 842C= 00 . BRK :\ 842D= 00 . AND (&00,X) :\ 842E= 21 00 !. BRK :\ 8430= 00 . BRK :\ 8431= 00 . BRK :\ 8432= 00 . BRK :\ 8433= 00 . BRK :\ 8434= 00 . ORA (&69,X) :\ 8435= 01 69 .i BRK :\ 8437= 00 . BRK :\ 8438= 00 . BRK :\ 8439= 00 . BRK :\ 843A= 00 . BRK :\ 843B= 00 . .L843C EQUS "K.0":EQUB &80:EQUB 13 .L8441 EQUS "K.1":EQUB &80:EQUS "H.F.|M":EQUB 13 \ LANGUAGE CODE \ ============= .L844C LDX #&18 .L844E LDA L8424,X:STA &0700,X :\ Copy to &700 DEX:BNE L844E LDA #&90:LDX #&00 LDY #&01:JSR OSBYTE :\ *TV 0,1 LDY #L843C DIV 256 LDX #L843C AND 255 JSR OS_CLI :\ *KEY 0 |!|@ LDY #L8441 DIV 256 LDX #L8441 AND 255 JSR OS_CLI :\ *KEY 1 |!|@H.F.|M LDA #&FF:STA &FEF2 :\ Set FEF2 to &FF LDA #&00:STA &FEF3 :\ Set FEF3 to &00 STA &6E:STA &6F :\ Clear &6E/&6F LDA #&A8:STA &FEFC :\ Set FEFC to &A8 LDA #&00:JSR L870E :\ Send &00 to I/O \ Main terminal loop \ ------------------ \ If key pressed, check for f0/f2, send keypress to I/O \ If data waiting at I/O, read it and process it \ .L8486 LDA &FEFD :\ Get status from I/O AND #&10:BEQ L84C0 :\ If b4 set, jump to read from I/O LDA &0268:BNE L849E :\ If function key pending, jump to read input LDA #&80:LDX #&FF LDY #&FF:JSR OSBYTE :\ Read ADVAL(-1) - keyboard buffer TXA:BEQ L84C0 :\ Buffer empty, check I/O for input .L849E JSR OSRDCH:TAY :\ Read character from keyboard CPY #&7F:BNE L84A8 :\ Not DEL, jump past LDY #&08 :\ Translate DEL to BS .L84A8 CPY #&00:BNE L84AE :\ Not Ctrl-@, jump past LDY #&7F :\ Translate Ctrl-@ to DEL .L84AE CPY #&82:BNE L84B8 :\ If not f2, jump past JMP L83E7 :\ f2 - enter BASIC .L84B5 JMP L876C :\ Jump to enter *command .L84B8 CMP #&80:BEQ L84B5 :\ f0 - jump to enter *command TYA:JSR L870E :\ Send keypress to I/O \ Read command from I/O \ --------------------- .L84C0 LDA &FEFD :\ Get status AND #&02:BEQ L8486 :\ b1=0, nothing pending, loop back LDA &FEF1:BPL L84D5 :\ Get byte, if b7=0, loop back CMP #&A0:BCS L8515 :\ If A>=&A0, jump to do command AND #&7F:JSR OSWRCH :\ Print control character .L84D5 JMP L8486 :\ Loop back to scan I/O and keyboard \ Command table \ ============= .L84D8 EQUB &E0:EQUB (L8538-1)DIV256:EQUB (L8538-1)AND255 :\ &E0 - Write character EQUB &E1:EQUB (L8541-1)DIV256:EQUB (L8541-1)AND255 :\ &E1 - Send n to printer EQUB &E2:EQUB (L8559-1)DIV256:EQUB (L8559-1)AND255 :\ &E2 - Reset serial EQUB &E3:EQUB (L8569-1)DIV256:EQUB (L8569-1)AND255 :\ &E3 - Get byte from serial EQUB &E4:EQUB (L8578-1)DIV256:EQUB (L8578-1)AND255 :\ &E4 - Send byte to serial EQUB &E5:EQUB (L858A-1)DIV256:EQUB (L858A-1)AND255 :\ &E5 - Get serial status EQUB &E6:EQUB (L8593-1)DIV256:EQUB (L8593-1)AND255 :\ &E6 - Clear to end of line EQUB &E7:EQUB (L85D2-1)DIV256:EQUB (L85D2-1)AND255 :\ &E7 - Clear to end of screen EQUB &E8:EQUB (L879F-1)DIV256:EQUB (L879F-1)AND255 :\ &E8 - Do *command EQUB &F0:EQUB (L86B8-1)DIV256:EQUB (L86B8-1)AND255 :\ &F0 - Read sector from disk EQUB &F1:EQUB (L85FA-1)DIV256:EQUB (L85FA-1)AND255 :\ &F1 - Write sector to disk EQUB &F2:EQUB (L861A-1)DIV256:EQUB (L861A-1)AND255 :\ &F2 - Get last disk result EQUB &F3:EQUB (L87CD-1)DIV256:EQUB (L87CD-1)AND255 :\ &F3 - Seek track EQUB &F4:EQUB (L8691-1)DIV256:EQUB (L8691-1)AND255 :\ &F4 - Specify drive number EQUB &F9:EQUB (L863F-1)DIV256:EQUB (L863F-1)AND255 :\ &F9 - Read block of memory EQUB &FA:EQUB (L865C-1)DIV256:EQUB (L865C-1)AND255 :\ &FA - Write block of memory EQUB &FB:EQUB (L86F4-1)DIV256:EQUB (L86F4-1)AND255 :\ &FB - Call OSBYTE EQUB &FC:EQUB (L8705-1)DIV256:EQUB (L8705-1)AND255 :\ &FC - Call OSWORD EQUB &FD:EQUB (L875F-1)DIV256:EQUB (L875F-1)AND255 :\ &FD - Read single byte from memory EQUB &FE:EQUB (L87B6-1)DIV256:EQUB (L87B6-1)AND255 :\ &FE - Write single bte to memory EQUB 0 \ Command received from I/O \ ------------------------- \ byte>=&A0 received from CUBE \ .L8515 STA &61:LDX #&FD :\ Store command byte in &61 .L8519 INX:INX:INX LDA L84D8,X:BEQ L8530 :\ If end of table, jump to indicate error CMP &61:BNE L8519 :\ If command byte doesn't match, loop to next entry INX:LDA L84D8,X:PHA :\ Stack destination address INX:LDA L84D8,X:PHA :\ Stack destination address RTS :\ Jump to command routine .L8530 LDA #&07:JSR OSWRCH :\ Beep JMP L8486 :\ Return to main loop \ Command &E0 - output character \ ------------------------------ .L8538 JSR L86DB:JSR OSWRCH :\ Get character and print it JMP L8486 :\ Jump back to main loop \ Command &E1 - Send single character to printer \ ---------------------------------------------- .L8541 LDA #&02:JSR OSWRCH :\ Start print job LDA #&01:JSR OSWRCH :\ Send following character to printer JSR L86DB:JSR OSWRCH :\ Get a character and print it LDA #&03:JSR OSWRCH :\ End print job JMP L8486 :\ Return to main loop \ Command &E2 - Reset serial \ -------------------------- .L8559 LDA #&03:STA &FE08 :\ Reset ACIA LDA #&12:STA &FE08 :\ clock divide by 64, 8bit+2stop, no TxIRQs, no RxIRQs LDA &FE09 JMP L8486 :\ Return to main loop \ Command &E3 - Get byte from serial \ ---------------------------------- .L8569 LDA &FE08:LSR A :\ Get ACIA RxData bit BCC L8569 :\ Loop until RxData present LDA &FE09:JSR L870E :\ Get data from ACIA, sent it to I/O JMP L8486 :\ Return to main loop \ Command &E4 - Send byte to serial \ --------------------------------- .L8578 JSR L86DB:PHA :\ Get a character .L857C LDA &FE08:AND #&02 :\ Get ACIA TxData bit BEQ L857C :\ Loop until TxData absent PLA:STA &FE09 :\ Send data to ACIA JMP L8486 :\ Return to main loop \ Command &E5 - Get serial status \ ------------------------------- .L858A LDA &FE08:JSR L870E :\ Get ACIA status and send it to I/O JMP L8486 :\ Return to main loop \ Command &E6 - Clear screen to end of line \ ----------------------------------------- .L8593 JSR L85AE :\ Clear to end of line .L8596 LDA #&1F:JSR OSWRCH :\ Restore cursor position LDA &70:JSR OSWRCH :\ Write X coord LDA &71:JSR OSWRCH :\ Write Y coord LDA &D0:AND #&FD:STA &D0 :\ Ensure scrolling enabled JMP L8486 :\ Return to main loop .L85AE LDA &D0:ORA #&02:STA &D0 :\ Disable scrolling LDA #&86:JSR OSBYTE :\ Read POS+VPOS STX &70:STY &71 :\ Save POS+VPOS LDA &030A:SEC:SBC &0308 :\ rhs-lhs=text window width SEC:SBC &70:TAX:INX :\ width-POS=chars to end of line LDA #&20 .L85CB JSR OSWRCH:DEX:BNE L85CB :\ Loop to print spaces to end of line RTS \ Command &E7 - Clear to end of screen \ ------------------------------------ .L85D2 JSR L85AE :\ Clear to end of line LDA &0309:SEC:SBC &030B :\ bot-top=text window height SEC:SBC &71:TAX :\ height-VPOS=line to bottom of screen .L85E0 BNE L85E5:JMP L8596 :\ .L85E5 LDA &030A :\ 85E5= AD 0A 03 -.. SEC :\ 85E8= 38 8 SBC &0308 :\ 85E9= ED 08 03 m.. TAY :\ 85EC= A8 ( INY :\ 85ED= C8 H LDA #&20 :\ 85EE= A9 20 ) .L85F0 JSR OSWRCH :\ 85F0= 20 EE FF n. DEY :\ 85F3= 88 . BNE L85F0 :\ 85F4= D0 FA Pz DEX :\ 85F6= CA J JMP L85E0 :\ 85F7= 4C E0 85 L`. \ Command &F1 - Write 256 byte to disk \ ------------------------------------ .L85FA JSR L86A0:LDY #&00 :\ Get sector/track and set &61/2=>&0600 .L85FF JSR L86DB:STA (&61),Y :\ Get byte, store in buffer INY:BNE L85FF :\ Loop for 256 bytes LDA #&4B:STA &0707 :\ Store 'write' command JSR L87C3 :\ Do floppy disk action LDA &070B:BEQ L8617 :\ Get result, if zero, send result and return to main loop JSR L871E :\ Translate disk error .L8617 JMP L8622 :\ Send result, return to main loop \ Command &F2 - Get last disk result \ ---------------------------------- .L861A LDA &070B:BEQ L8622 :\ Get disk result, if ok, jump to send result .L861F JSR L871E :\ Translate disk error .L8622 JSR L870E:JMP L84C0 :\ Send result, return to main loop \ Wait for two addresses \ ---------------------- .L8628 JSR L86DB:STA &62 :\ Get bytes to &62/&61 JSR L86DB:STA &61 LDY #&00 JSR L86DB:STA &6B :\ Get bytes to &6B/&6A JSR L86DB:STA &6A RTS \ Command &F9 - read block of memory \ ---------------------------------- .L863F JSR L8628 :\ Get start/end addresses to &61/2 and &6A/B .L8642 LDA (&61),Y:JSR L870E :\ Get byte from memory, send to I/O INC &61:BNE L864D:INC &62 :\ Increment address .L864D LDA &61:CMP &6A:BNE L8642 :\ If address<>end, loop back for more LDA &62:CMP &6B:BNE L8642 JMP L84C0 :\ Return to main loop \ Command &FA - write block of memory \ ----------------------------------- .L865C JSR L8628 :\ Get start/end addresses to &61/2 and &6A/B .L865F JSR L86DB:STA (&61),Y :\ Get byte, store it in memory INC &61:BNE L866A:INC &62 :\ Increment address .L866A LDA &61:CMP &6A:BNE L865F :\ If address<>end, loop back for more LDA &62:CMP &6B:BNE L865F JMP L84C0 :\ Return to main loop \ Set disk side according to sector number \ ---------------------------------------- .L8679 CMP #&0B:BMI L8688 PHA:LDA &0701 :\ Get current drive ORA #&02:STA &0701 :\ Select side 2 PLA:RTS .L8688 PHA:LDA &0700 :\ Get current drive STA &0701 :\ Select side 1 PLA:RTS \ Command &F4 - Specify drive \ --------------------------- .L8691 JSR L86DB:STA &0701 :\ Get byte, store in control block STA &070C:STA &0700 :\ Store as 'drive' JMP L84C0 :\ Return to main loop \ Get track/sector from I/O, set up &61/2=>disk buffer \ ---------------------------------------------------- .L86A0 JSR L86DB:STA &0708 :\ Get byte, store as 'track' in control block JSR L86DB:JSR L8679 :\ Get byte, set disk side STA &0709 :\ Store as 'sector' in control block LDA #&00:STA &61 :\ Point &61/2=>&0600 LDA #&06:STA &62 RTS \ Command &F0 - Read sector from disk \ ----------------------------------- .L86B8 JSR L86A0 :\ Get track/sector, set &61/2=>&0600 LDA #&53:STA &0707 :\ Store 'read' in control block JSR L87C3 :\ Do disk operation LDA &070B:BEQ L86CB :\ Get result, if ok, reply and send data JMP L861F :\ .L86CB JSR L870E:LDY #&00 :\ Send &00 disk result .L86D0 LDA (&61),Y:JSR L870E :\ Send byte from buffer INY:BNE L86D0 :\ Loop for 256 bytes JMP L84C0 :\ Return to main loop \ Wait for data in FEF1 \ --------------------- .L86DB LDA &FEFD:AND #&02:BEQ L86DB :\ Loop until data present LDA &FEF1:RTS :\ Get data and return \ Wait for A,X,Y \ -------------- .L86E6 JSR L86DB:PHA :\ Wait for byte, save it JSR L86DB:TAX :\ Wait for X JSR L86DB:TAY :\ Wait for Y PLA:RTS :\ Get A and return \ Command &FB - Call OSBYTE \ ------------------------- .L86F4 JSR L86E6:JSR OSBYTE :\ Wait for A,X,Y, call OSBYTE TXA:JSR L870E :\ Send X result TYA:JSR L870E :\ Send Y result JMP L8486 :\ Return to main loop \ Command &FC - Call OSWORD \ ------------------------- \ Control block must be passed beforehand, and read afterwards .L8705 JSR L86E6:JSR OSWORD :\ Wait for A,X,Y, call OSWORD JMP L8486 :\ Return to main loop \ Send byte to CUBE system via ports in Tube I/O map \ ================================================== .L870E STA &FEF0 :\ Send byte to &FEF0 LDX #&FF .L8713 LDA &FEFD :\ Get byte from &FEFD AND #&10:BNE L871D :\ If b4 set, return DEX:BNE L8713 :\ Loop 256 times .L871D RTS \ Translate disk error \ -------------------- .L871E BIT &6E :\ 871E= 24 6E $n BPL L8730 :\ 8720= 10 0E .. PHA :\ 8722= 48 H LSR A :\ 8723= 4A J LSR A :\ 8724= 4A J LSR A :\ 8725= 4A J LSR A :\ 8726= 4A J JSR L8747 :\ 8727= 20 47 87 G. PLA :\ 872A= 68 h PHA :\ 872B= 48 H JSR L8745 :\ 872C= 20 45 87 E. PLA :\ 872F= 68 h \ Translate disk error .L8730 LSR A:SEC:SBC #&04 :\ (result/2)-4 TAX:LDA L8739,X :\ Index into table RTS :\ Return error .L8739 EQUB &04 :\ 08 EQUB &04 :\ 0A EQUB &08 :\ 0C EQUB &08 :\ 0E EQUB &80 :\ 10 EQUB &40 :\ 12 - Disk write protected EQUB &10 :\ 14 EQUB &20 :\ 16 EQUB &10 :\ 18 - Sector not found EQUB &00 :\ 1A EQUB &00 :\ 1C EQUB &00 :\ 1E .L8745 AND #&0F :\ 8745= 29 0F ). .L8747 ORA #&B0 :\ 8747= 09 B0 .0 CMP #&BA :\ 8749= C9 BA I: BCC L874F :\ 874B= 90 02 .. ADC #&06 :\ 874D= 69 06 i. .L874F AND #&7F :\ 874F= 29 7F ). JMP OSWRCH :\ 8751= 4C EE FF Ln. \ Wait for an address from I/O \ ---------------------------- .L8754 JSR L86DB:STA &62 :\ Wait for byte, store in &62 JSR L86DB:STA &61 :\ Wait for byte, store in &61 RTS \ Command &FD \ ----------- .L875F JSR L8754:LDY #&00 :\ Wait for an address in &61/2 LDA (&61),Y:JSR L870E :\ Get byte and send it JMP L84C0 :\ Return to main loop \ Prompt for and execute *command \ ------------------------------- .L876C LDA #&2A:JSR OSWRCH :\ Print '*' prompt LDX #&00 .L8773 JSR OSRDCH :\ 8773= 20 E0 FF `. CMP #&7F :\ 8776= C9 7F I. BNE L8782 :\ 8778= D0 08 P. JSR OSWRCH :\ 877A= 20 EE FF n. DEX :\ 877D= CA J BMI L876C :\ 877E= 30 EC 0l BPL L8773 :\ 8780= 10 F1 .q .L8782 STA &0710,X :\ 8782= 9D 10 07 ... JSR OSWRCH :\ 8785= 20 EE FF n. INX :\ 8788= E8 h CMP #&0D :\ 8789= C9 0D I. BNE L8773 :\ 878B= D0 E6 Pf JSR OSNEWL :\ 878D= 20 E7 FF g. LDY #&07 :\ 8790= A0 07 . LDX #&10 :\ 8792= A2 10 ". JSR OS_CLI :\ 8794= 20 F7 FF w. LDA #&0D :\ 8797= A9 0D ). JSR L870E :\ 8799= 20 0E 87 .. JMP L8486 :\ 879C= 4C 86 84 L.. \ Command &E8 - *command \ ---------------------- .L879F LDX #&00 .L87A1 JSR L86DB:STA &0710,X :\ Get character, store in &0710 onwards INX:CMP #&0D:BNE L87A1 :\ Loop until LDY #&07:LDX #&10 :\ Point to text buffer JSR OS_CLI:JMP L8486 :\ Do *command and return to main loop \ Command &FE - Write single byte to memory \ ----------------------------------------- .L87B6 JSR L8754 :\ Wait for address in &61/2 JSR L86DB:LDY #&00 :\ Wait for a byte STA (&61),Y:JMP L84C0 :\ Store in memory, return to main loop \ Do disk OSWORD call \ ------------------- .L87C3 LDX #&01:LDY #&07 :\ Point to control block at &0701 LDA #&7F:JSR OSWORD :\ Call OSWORD &7F RTS \ Command &F3 - Seek track \ ------------------------ .L87CD LDA #&07:JSR OSWRCH :\ Beep LDX #&0C:LDY #&07 :\ Point to control block to seek track LDA #&7F:JSR OSWORD :\ Call OSWORD &7F JMP L8486 \ *FLEXFORMAT \ =========== .L87DE LDA #&01 :\ 87DE= A9 01 ). STA &71 :\ 87E0= 85 71 .q LDA #&02 :\ 87E2= A9 02 ). STA &72 :\ 87E4= 85 72 .r LDX #&00 :\ 87E6= A2 00 ". .L87E8 LDA L8B6E,X :\ 87E8= BD 6E 8B =n. STA &73,X :\ 87EB= 95 73 .s INX :\ 87ED= E8 h CPX #&09 :\ 87EE= E0 09 `. BNE L87E8 :\ 87F0= D0 F6 Pv LDA #&01 :\ 87F2= A9 01 ). STA &0795 :\ 87F4= 8D 95 07 ... STA &6E :\ 87F7= 85 6E .n STA &6D :\ 87F9= 85 6D .m LDA #&54 :\ 87FB= A9 54 )T STA &6F :\ 87FD= 85 6F .o .L87FF LDA #&00 :\ 87FF= A9 00 ). STA &63 :\ 8801= 85 63 .c STA &0791 :\ 8803= 8D 91 07 ... STA &0792 :\ 8806= 8D 92 07 ... LDX #&18 :\ 8809= A2 18 ". .L880B STA &1900,X :\ 880B= 9D 00 19 ... DEX :\ 880E= CA J BNE L880B :\ 880F= D0 FA Pz LDA #&0A :\ 8811= A9 0A ). STA &67 :\ 8813= 85 67 .g JSR L8386 :\ 8815= 20 86 83 .. TSB L8111 :\ 8818= 0C 11 81 ... ORA (&00),Y :\ 881B= 11 00 .. NOP :\ 881D= EA j JSR L8386 :\ 881E= 20 86 83 .. JSR &4320 :\ 8821= 20 20 43 C EOR &42,X :\ 8824= 55 42 UB EOR &20 :\ 8826= 45 20 E EQUB &42 :\ 8828= 42 B ADC &65 :\ 8829= 65 65 ee EQUB &62 :\ 882B= 62 b LSR &4C :\ 882C= 46 4C FL EOR &58 :\ 882E= 45 58 EX JSR &6F66 :\ 8830= 20 66 6F fo ADC (&6D) :\ 8833= 72 6D rm ADC (&74,X) :\ 8835= 61 74 at STZ &65,X :\ 8837= 74 65 te ADC (&20) :\ 8839= 72 20 r JSR &20EA :\ 883B= 20 EA 20 j CPX &FF :\ 883E= E7 FF g. JSR OSNEWL :\ 8840= 20 E7 FF g. JSR OSNEWL :\ 8843= 20 E7 FF g. JSR L8386 :\ 8846= 20 86 83 .. ORA (&80),Y :\ 8849= 11 80 .. ORA (&01),Y :\ 884B= 11 01 .. NOP :\ 884D= EA j JSR L8386 :\ 884E= 20 86 83 .. EQUB &44 :\ 8851= 44 D ADC (&69) :\ 8852= 72 69 ri ROR &65,X :\ 8854= 76 65 ve JSR &2020 :\ 8856= 20 20 20 JSR &2020 :\ 8859= 20 20 20 JSR &2020 :\ 885C= 20 20 20 JSR &2020 :\ 885F= 20 20 20 AND &EA20,X :\ 8862= 3D 20 EA = j JSR OSRDCH :\ 8865= 20 E0 FF `. AND #&03 :\ 8868= 29 03 ). STA &0793 :\ 886A= 8D 93 07 ... ORA #&30 :\ 886D= 09 30 .0 JSR OSWRCH :\ 886F= 20 EE FF n. BIT &72 :\ 8872= 24 72 $r BNE L88A3 :\ 8874= D0 2D P- LDA #&00 :\ 8876= A9 00 ). STA &0795 :\ 8878= 8D 95 07 ... JSR OSNEWL :\ 887B= 20 E7 FF g. JSR L8386 :\ 887E= 20 86 83 .. EQUB &44 :\ 8881= 44 D EQUB &6F :\ 8882= 6F o ADC &62,X :\ 8883= 75 62 ub JMP (&6465) :\ 8885= 6C 65 64 led JSR &6973 :\ 8888= 20 73 69 si STZ &65 :\ 888B= 64 65 de STZ &20 :\ 888D= 64 20 d PLP :\ 888F= 28 ( EOR &3F29,Y :\ 8890= 59 29 3F Y)? JSR &20EA :\ 8893= 20 EA 20 j CPX #&FF :\ 8896= E0 FF `. JSR OSWRCH :\ 8898= 20 EE FF n. CMP #&59 :\ 889B= C9 59 IY BNE L88A3 :\ 889D= D0 04 P. LDA #&FF :\ 889F= A9 FF ). STA &63 :\ 88A1= 85 63 .c .L88A3 JSR OSNEWL :\ 88A3= 20 E7 FF g. JSR L8386 :\ 88A6= 20 86 83 .. SEC :\ 88A9= 38 8 BMI L88D8 :\ 88AA= 30 2C 0, BIT &30,X :\ 88AC= 34 30 40 BIT &3533 :\ 88AE= 2C 33 35 ,35 JSR &7274 :\ 88B1= 20 74 72 tr ADC (&63,X) :\ 88B4= 61 63 ac ROR A :\ 88B6= 6B k EQUB &73 :\ 88B7= 73 s JSR &3D20 :\ 88B8= 20 20 3D = JSR &20EA :\ 88BB= 20 EA 20 j EQUB &9B :\ 88BE= 9B . STY &DB20 :\ 88BF= 8C 20 DB . [ STY &908D :\ 88C2= 8C 8D 90 ... TSB &20 :\ 88C5= 07 20 . CPX &FF :\ 88C7= E7 FF g. LDA &0793 :\ 88C9= AD 93 07 -.. BIT &71 :\ 88CC= 24 71 $q BNE L88F2 :\ 88CE= D0 22 P" JSR L8386 :\ 88D0= 20 86 83 .. STA (&88,X) :\ 88D3= 81 88 .. NOP :\ 88D5= EA j JSR L8386 :\ 88D6= 20 86 83 .. EOR (&45) :\ 88D9= 52 45 RE EOR &564F :\ 88DB= 4D 4F 56 MOV EOR &20 :\ 88DE= 45 20 E EQUB &53 :\ 88E0= 53 S EOR &5453,Y :\ 88E1= 59 53 54 YST EOR &4D :\ 88E4= 45 4D EM JSR &4944 :\ 88E6= 20 44 49 DI EQUB &53 :\ 88E9= 53 S EQUB &43 :\ 88EA= 43 C NOP :\ 88EB= EA j JSR OSNEWL :\ 88EC= 20 E7 FF g. JSR OSNEWL :\ 88EF= 20 E7 FF g. .L88F2 JSR L8386 :\ 88F2= 20 86 83 .. EQUB &44 :\ 88F5= 44 D ADC (&74,X) :\ 88F6= 61 74 at ADC &20 :\ 88F8= 65 20 e PLP :\ 88FA= 28 ( STZ &64 :\ 88FB= 64 64 dd BIT &6D6D :\ 88FD= 2F 6D 6D /mm BIT &7979 :\ 8900= 2F 79 79 /yy AND #&20 :\ 8903= 29 20 ) JSR &203D :\ 8905= 20 3D 20 = NOP :\ 8908= EA j JSR L8D29 :\ 8909= 20 29 8D ). JSR L8386 :\ 890C= 20 86 83 .. LSR &6D61 :\ 890F= 4E 61 6D Nam ADC &20 :\ 8912= 65 20 e JSR &2020 :\ 8914= 20 20 20 JSR &2020 :\ 8917= 20 20 20 JSR &2020 :\ 891A= 20 20 20 JSR &2020 :\ 891D= 20 20 20 AND &EA20,X :\ 8920= 3D 20 EA = j JSR L8C9B :\ 8923= 20 9B 8C .. LDX #&00 :\ 8926= A2 00 ". LDY #&0A :\ 8928= A0 0A . .L892A LDA &0700,X :\ 892A= BD 00 07 =.. CMP #&0D :\ 892D= C9 0D I. BEQ L8938 :\ 892F= F0 07 p. STA &1900,X :\ 8931= 9D 00 19 ... INX :\ 8934= E8 h DEY :\ 8935= 88 . BNE L892A :\ 8936= D0 F2 Pr .L8938 JSR L8386 :\ 8938= 20 86 83 .. LSR &6F,X :\ 893B= 56 6F Vo JMP (&6D75) :\ 893D= 6C 75 6D lum ADC &20 :\ 8940= 65 20 e JSR &756E :\ 8942= 20 6E 75 nu ADC &6562 :\ 8945= 6D 62 65 mbe ADC (&20) :\ 8948= 72 20 r JSR &3D20 :\ 894A= 20 20 3D = JSR &20EA :\ 894D= 20 EA 20 j EQUB &9B :\ 8950= 9B . STY &DB20 :\ 8951= 8C 20 DB . [ STY &0BA2 :\ 8954= 8C A2 0B .". LDA &6C :\ 8957= A5 6C %l STA &1900,X :\ 8959= 9D 00 19 ... INX :\ 895C= E8 h LDA &6B :\ 895D= A5 6B %k STA &1900,X :\ 895F= 9D 00 19 ... LDA #&01 :\ 8962= A9 01 ). INX :\ 8964= E8 h STA &1900,X :\ 8965= 9D 00 19 ... INX :\ 8968= E8 h STA &1900,X :\ 8969= 9D 00 19 ... LDY &0790 :\ 896C= AC 90 07 ,.. DEY :\ 896F= 88 . INX :\ 8970= E8 h TYA :\ 8971= 98 . STA &6B :\ 8972= 85 6B .k STA &1900,X :\ 8974= 9D 00 19 ... STA &1916 :\ 8977= 8D 16 19 ... INX :\ 897A= E8 h LDA &67 :\ 897B= A5 67 %g BIT &63 :\ 897D= 24 63 $c BPL L8982 :\ 897F= 10 01 .. ASL A :\ 8981= 0A . .L8982 STA &1900,X :\ 8982= 9D 00 19 ... STA &1917 :\ 8985= 8D 17 19 ... LDA #&00 :\ 8988= A9 00 ). STA &6C :\ 898A= 85 6C .l JSR L8D09 :\ 898C= 20 09 8D .. BIT &63 :\ 898F= 24 63 $c BPL L89A0 :\ 8991= 10 0D .. LDA &6B :\ 8993= A5 6B %k CLC :\ 8995= 18 . ADC &6B :\ 8996= 65 6B ek STA &6B :\ 8998= 85 6B .k LDA &6C :\ 899A= A5 6C %l ADC &6C :\ 899C= 65 6C el STA &6C :\ 899E= 85 6C .l .L89A0 LDX #&11 :\ 89A0= A2 11 ". LDA &6C :\ 89A2= A5 6C %l STA &1900,X :\ 89A4= 9D 00 19 ... INX :\ 89A7= E8 h LDA &6B :\ 89A8= A5 6B %k STA &1900,X :\ 89AA= 9D 00 19 ... INX :\ 89AD= E8 h LDA &6D :\ 89AE= A5 6D %m STA &1900,X :\ 89B0= 9D 00 19 ... INX :\ 89B3= E8 h LDA &6E :\ 89B4= A5 6E %n STA &1900,X :\ 89B6= 9D 00 19 ... INX :\ 89B9= E8 h LDA &6F :\ 89BA= A5 6F %o STA &1900,X :\ 89BC= 9D 00 19 ... .L89BF JSR OSNEWL :\ 89BF= 20 E7 FF g. LDA #&00 :\ 89C2= A9 00 ). STA &0791 :\ 89C4= 8D 91 07 ... STA &0792 :\ 89C7= 8D 92 07 ... JSR L8A88 :\ 89CA= 20 88 8A .. BCS L8A15 :\ 89CD= B0 46 0F JSR OSNEWL :\ 89CF= 20 E7 FF g. JSR OSNEWL :\ 89D2= 20 E7 FF g. LDA &0791 :\ 89D5= AD 91 07 -.. JSR L8C5E :\ 89D8= 20 5E 8C ^. JSR L8386 :\ 89DB= 20 86 83 .. JSR &4620 :\ 89DE= 20 20 46 F EQUB &6F :\ 89E1= 6F o ADC (&6D) :\ 89E2= 72 6D rm ADC (&74,X) :\ 89E4= 61 74 at JSR &7265 :\ 89E6= 20 65 72 er ADC (&6F) :\ 89E9= 72 6F ro ADC (&73) :\ 89EB= 72 73 rs NOP :\ 89ED= EA j JSR OSNEWL :\ 89EE= 20 E7 FF g. LDA &0792 :\ 89F1= AD 92 07 -.. JSR L8C5E :\ 89F4= 20 5E 8C ^. JSR L8386 :\ 89F7= 20 86 83 .. JSR &5620 :\ 89FA= 20 20 56 V ADC &72 :\ 89FD= 65 72 er ADC #&66 :\ 89FF= 69 66 if ADC &6520,Y :\ 8A01= 79 20 65 y e ADC (&72) :\ 8A04= 72 72 rr EQUB &6F :\ 8A06= 6F o ADC (&73) :\ 8A07= 72 73 rs NOP :\ 8A09= EA j JSR OSNEWL :\ 8A0A= 20 E7 FF g. LDA &0791 :\ 8A0D= AD 91 07 -.. ORA &0792 :\ 8A10= 0D 92 07 ... BEQ L8A4B :\ 8A13= F0 36 p6 .L8A15 JSR L8386 :\ 8A15= 20 86 83 .. ORA &070A :\ 8A18= 0D 0A 07 ... EQUB &83 :\ 8A1B= 83 . NOP :\ 8A1C= EA j JSR L8386 :\ 8A1D= 20 86 83 .. EQUB &44 :\ 8A20= 44 D ADC #&73 :\ 8A21= 69 73 is EQUB &63 :\ 8A23= 63 c JSR &6977 :\ 8A24= 20 77 69 wi JMP (&206C) :\ 8A27= 6C 6C 20 ll ROR &746F :\ 8A2A= 6E 6F 74 not JSR &7277 :\ 8A2D= 20 77 72 wr ADC #&74 :\ 8A30= 69 74 it ADC &2C :\ 8A32= 65 2C e, JSR &6572 :\ 8A34= 20 72 65 re STZ &72,X :\ 8A37= 74 72 tr ADC &2820,Y :\ 8A39= 79 20 28 y ( EOR &3F29,Y :\ 8A3C= 59 29 3F Y)? JSR &20EA :\ 8A3F= 20 EA 20 j CPX #&FF :\ 8A42= E0 FF `. CMP #&59 :\ 8A44= C9 59 IY BNE L8A4B :\ 8A46= D0 03 P. JMP L89BF :\ 8A48= 4C BF 89 L?. .L8A4B JSR OSNEWL :\ 8A4B= 20 E7 FF g. JSR L8386 :\ 8A4E= 20 86 83 .. EOR (&6E,X) :\ 8A51= 41 6E An EQUB &6F :\ 8A53= 6F o STZ &68,X :\ 8A54= 74 68 th ADC &72 :\ 8A56= 65 72 er JSR &6964 :\ 8A58= 20 64 69 di EQUB &73 :\ 8A5B= 73 s EQUB &63 :\ 8A5C= 63 c JSR &5928 :\ 8A5D= 20 28 59 (Y AND #&3F :\ 8A60= 29 3F )? JSR &20EA :\ 8A62= 20 EA 20 j CPX #&FF :\ 8A65= E0 FF `. CMP #&59 :\ 8A67= C9 59 IY BNE L8A6E :\ 8A69= D0 03 P. JMP L87FF :\ 8A6B= 4C FF 87 L.. .L8A6E JSR OSNEWL :\ 8A6E= 20 E7 FF g. JSR L8386 :\ 8A71= 20 86 83 .. LSR &6F :\ 8A74= 46 6F Fo ADC (&6D) :\ 8A76= 72 6D rm ADC (&74,X) :\ 8A78= 61 74 at JSR &6F63 :\ 8A7A= 20 63 6F co ADC &6C70 :\ 8A7D= 6D 70 6C mpl ADC &74 :\ 8A80= 65 74 et ADC &EA :\ 8A82= 65 EA ej JSR OSNEWL :\ 8A84= 20 E7 FF g. RTS :\ 8A87= 60 ` .L8A88 JSR L8BF0 :\ 8A88= 20 F0 8B p. LDA #&02 :\ 8A8B= A9 02 ). STA &65 :\ 8A8D= 85 65 .e LDA #&00 :\ 8A8F= A9 00 ). STA &68 :\ 8A91= 85 68 .h STA &64 :\ 8A93= 85 64 .d STA &0794 :\ 8A95= 8D 94 07 ... .L8A98 JSR L8C28 :\ 8A98= 20 28 8C (. JSR L8C5B :\ 8A9B= 20 5B 8C [. JSR L8B92 :\ 8A9E= 20 92 8B .. BEQ L8AAB :\ 8AA1= F0 08 p. INC &0791 :\ 8AA3= EE 91 07 n.. LDA #&3F :\ 8AA6= A9 3F )? JMP L8AAD :\ 8AA8= 4C AD 8A L-. .L8AAB LDA #&20 :\ 8AAB= A9 20 ) .L8AAD JSR OSASCI :\ 8AAD= 20 E3 FF c. LDA #&FD :\ 8AB0= A9 FD )} STA &70 :\ 8AB2= 85 70 .p .L8AB4 JSR L8BC3 :\ 8AB4= 20 C3 8B C. JSR L8BBF :\ 8AB7= 20 BF 8B ?. BEQ L8AC5 :\ 8ABA= F0 09 p. JSR L8D4A :\ 8ABC= 20 4A 8D J. INC &70 :\ 8ABF= E6 70 fp BNE L8AB4 :\ 8AC1= D0 F1 Pq SEC :\ 8AC3= 38 8 RTS :\ 8AC4= 60 ` .L8AC5 JSR L8BA7 :\ 8AC5= 20 A7 8B '. BEQ L8AD2 :\ 8AC8= F0 08 p. INC &0792 :\ 8ACA= EE 92 07 n.. LDA #&3F :\ 8ACD= A9 3F )? JMP L8AD4 :\ 8ACF= 4C D4 8A LT. .L8AD2 LDA #&20 :\ 8AD2= A9 20 ) .L8AD4 JSR OSASCI :\ 8AD4= 20 E3 FF c. LDA &63 :\ 8AD7= A5 63 %c BEQ L8AF6 :\ 8AD9= F0 1B p. LDA &0793 :\ 8ADB= AD 93 07 -.. EOR #&02 :\ 8ADE= 49 02 I. STA &0793 :\ 8AE0= 8D 93 07 ... LDA &0795 :\ 8AE3= AD 95 07 -.. EOR #&01 :\ 8AE6= 49 01 I. STA &0795 :\ 8AE8= 8D 95 07 ... LDA &68 :\ 8AEB= A5 68 %h EOR #&FF :\ 8AED= 49 FF I. STA &68 :\ 8AEF= 85 68 .h BEQ L8AF6 :\ 8AF1= F0 03 p. JMP L8A98 :\ 8AF3= 4C 98 8A L.. .L8AF6 INC &0794 :\ 8AF6= EE 94 07 n.. LDA &0794 :\ 8AF9= AD 94 07 -.. CMP &0790 :\ 8AFC= CD 90 07 M.. BNE L8A98 :\ 8AFF= D0 97 P. JSR L8D4A :\ 8B01= 20 4A 8D J. LDA #&00 :\ 8B04= A9 00 ). STA &0794 :\ 8B06= 8D 94 07 ... STA &64 :\ 8B09= 85 64 .d LDA #&02 :\ 8B0B= A9 02 ). STA &65 :\ 8B0D= 85 65 .e JSR L8BC3 :\ 8B0F= 20 C3 8B C. LDA #&00 :\ 8B12= A9 00 ). STA &2200 :\ 8B14= 8D 00 22 .." STA &2201 :\ 8B17= 8D 01 22 .." BIT &63 :\ 8B1A= 24 63 $c BMI L8B24 :\ 8B1C= 30 06 0. STA &2900 :\ 8B1E= 8D 00 29 ..) STA &2901 :\ 8B21= 8D 01 29 ..) .L8B24 LDX #&00 :\ 8B24= A2 00 ". .L8B26 LDA &1900,X :\ 8B26= BD 00 19 =.. STA &2210,X :\ 8B29= 9D 10 22 .." INX :\ 8B2C= E8 h CPX #&18 :\ 8B2D= E0 18 `. BNE L8B26 :\ 8B2F= D0 F5 Pu LDA #&FD :\ 8B31= A9 FD )} STA &70 :\ 8B33= 85 70 .p .L8B35 JSR L8BBF :\ 8B35= 20 BF 8B ?. JSR L8BA7 :\ 8B38= 20 A7 8B '. CLC :\ 8B3B= 18 . BEQ L8B46 :\ 8B3C= F0 08 p. JSR L8D4A :\ 8B3E= 20 4A 8D J. INC &70 :\ 8B41= E6 70 fp BNE L8B35 :\ 8B43= D0 F0 Pp SEC :\ 8B45= 38 8 .L8B46 RTS :\ 8B46= 60 ` .L8B47 BRK :\ 8B47= 00 . BCS L8B69 :\ 8B48= B0 1F 0. BRK :\ 8B4A= 00 . BRK :\ 8B4B= 00 . ORA &63 :\ 8B4C= 05 63 .c BRK :\ 8B4E= 00 . ORA &2A,X :\ 8B4F= 15 2A .* BRK :\ 8B51= 00 . BPL L8B53 :\ 8B52= 10 FF .. BRK :\ 8B54= 00 . BRK :\ 8B55= 00 . BRK :\ 8B56= 00 . BRK :\ 8B57= 00 . BRK :\ 8B58= 00 . EQUB &03 :\ 8B59= 03 . EQUB &5F :\ 8B5A= 5F _ BRK :\ 8B5B= 00 . BRK :\ 8B5C= 00 . ROL A :\ 8B5D= 2A * EQUB &FF :\ 8B5E= FF . BRK :\ 8B5F= 00 . BRK :\ 8B60= 00 . BRK :\ 8B61= 00 . BRK :\ 8B62= 00 . JSR &0000 :\ 8B63= 20 00 00 .. EQUB &03 :\ 8B66= 03 . LSR A :\ 8B67= 4B K BRK :\ 8B68= 00 . .L8B69 BRK :\ 8B69= 00 . ROL A :\ 8B6A= 2A * EQUB &FF :\ 8B6B= FF . BRK :\ 8B6C= 00 . BRK :\ 8B6D= 00 . .L8B6E BRK :\ 8B6E= 00 . BRK :\ 8B6F= 00 . BRK :\ 8B70= 00 . BRK :\ 8B71= 00 . BRK :\ 8B72= 00 . ORA (&69,X) :\ 8B73= 01 69 .i BRK :\ 8B75= 00 . BRK :\ 8B76= 00 . .L8B77 LDY #&00 :\ 8B77= A0 00 . .L8B79 LDA L8B47,X :\ 8B79= BD 47 8B =G. STA &0780,Y :\ 8B7C= 99 80 07 ... INX :\ 8B7F= E8 h INY :\ 8B80= C8 H CPY #&0D :\ 8B81= C0 0D @. BNE L8B79 :\ 8B83= D0 F4 Pt LDA &0793 :\ 8B85= AD 93 07 -.. STA &0780 :\ 8B88= 8D 80 07 ... LDA &0794 :\ 8B8B= AD 94 07 -.. STA &0787 :\ 8B8E= 8D 87 07 ... RTS :\ 8B91= 60 ` .L8B92 LDX #&00 :\ 8B92= A2 00 ". JSR L8B77 :\ 8B94= 20 77 8B w. JSR L8B9E :\ 8B97= 20 9E 8B .. LDA &078C :\ 8B9A= AD 8C 07 -.. RTS :\ 8B9D= 60 ` .L8B9E LDA #&7F :\ 8B9E= A9 7F ). LDX #&80 :\ 8BA0= A2 80 ". LDY #&07 :\ 8BA2= A0 07 . JMP OSWORD :\ 8BA4= 4C F1 FF Lq. .L8BA7 LDX #&0D :\ 8BA7= A2 0D ". .L8BA9 JSR L8B77 :\ 8BA9= 20 77 8B w. LDA #&01 :\ 8BAC= A9 01 ). BIT &68 :\ 8BAE= 24 68 $h BPL L8BB5 :\ 8BB0= 10 03 .. CLC :\ 8BB2= 18 . ADC &67 :\ 8BB3= 65 67 eg .L8BB5 STA &0788 :\ 8BB5= 8D 88 07 ... JSR L8B9E :\ 8BB8= 20 9E 8B .. LDA &078A :\ 8BBB= AD 8A 07 -.. RTS :\ 8BBE= 60 ` .L8BBF LDX #&1A :\ 8BBF= A2 1A ". BNE L8BA9 :\ 8BC1= D0 E6 Pf .L8BC3 LDA #&20 :\ 8BC3= A9 20 ) STA &62 :\ 8BC5= 85 62 .b LDA #&00 :\ 8BC7= A9 00 ). STA &61 :\ 8BC9= 85 61 .a LDX &67 :\ 8BCB= A6 67 &g .L8BCD LDY #&00 :\ 8BCD= A0 00 . LDA &64 :\ 8BCF= A5 64 %d STA (&61),Y :\ 8BD1= 91 61 .a INY :\ 8BD3= C8 H LDA &65 :\ 8BD4= A5 65 %e STA (&61),Y :\ 8BD6= 91 61 .a JSR L8C06 :\ 8BD8= 20 06 8C .. INC &62 :\ 8BDB= E6 62 fb DEX :\ 8BDD= CA J BNE L8BCD :\ 8BDE= D0 ED Pm BIT &68 :\ 8BE0= 24 68 $h BPL L8BEF :\ 8BE2= 10 0B .. LDA &0794 :\ 8BE4= AD 94 07 -.. BNE L8BEF :\ 8BE7= D0 06 P. STA &2900 :\ 8BE9= 8D 00 29 ..) STA &2901 :\ 8BEC= 8D 01 29 ..) .L8BEF RTS :\ 8BEF= 60 ` .L8BF0 LDY #&00 :\ 8BF0= A0 00 . STY &61 :\ 8BF2= 84 61 .a LDA #&20 :\ 8BF4= A9 20 ) STA &62 :\ 8BF6= 85 62 .b TYA :\ 8BF8= 98 . LDX &67 :\ 8BF9= A6 67 &g .L8BFB STA (&61),Y :\ 8BFB= 91 61 .a INY :\ 8BFD= C8 H BNE L8BFB :\ 8BFE= D0 FB P{ INC &62 :\ 8C00= E6 62 fb DEX :\ 8C02= CA J BNE L8BFB :\ 8C03= D0 F6 Pv RTS :\ 8C05= 60 ` .L8C06 LDA &67 :\ 8C06= A5 67 %g BIT &63 :\ 8C08= 24 63 $c BEQ L8C0D :\ 8C0A= F0 01 p. ASL A :\ 8C0C= 0A . .L8C0D CMP &65 :\ 8C0D= C5 65 Ee BNE L8C1E :\ 8C0F= D0 0D P. INC &64 :\ 8C11= E6 64 fd LDA &64 :\ 8C13= A5 64 %d CMP &0790 :\ 8C15= CD 90 07 M.. BEQ L8C21 :\ 8C18= F0 07 p. LDA #&00 :\ 8C1A= A9 00 ). STA &65 :\ 8C1C= 85 65 .e .L8C1E INC &65 :\ 8C1E= E6 65 fe RTS :\ 8C20= 60 ` .L8C21 LDA #&00 :\ 8C21= A9 00 ). STA &65 :\ 8C23= 85 65 .e STA &64 :\ 8C25= 85 64 .d RTS :\ 8C27= 60 ` .L8C28 LDX #&00 :\ 8C28= A2 00 ". LDY #&00 :\ 8C2A= A0 00 . LDA &67 :\ 8C2C= A5 67 %g STA &66 :\ 8C2E= 85 66 .f BIT &68 :\ 8C30= 24 68 $h BPL L8C36 :\ 8C32= 10 02 .. LDY &67 :\ 8C34= A4 67 $g .L8C36 LDA &0794 :\ 8C36= AD 94 07 -.. STA &1FB0,X :\ 8C39= 9D B0 1F .0. INX :\ 8C3C= E8 h LDA #&00 :\ 8C3D= A9 00 ). STA &1FB0,X :\ 8C3F= 9D B0 1F .0. INX :\ 8C42= E8 h LDA L8C7D,Y :\ 8C43= B9 7D 8C 9}. STA &1FB0,X :\ 8C46= 9D B0 1F .0. INX :\ 8C49= E8 h LDA #&01 :\ 8C4A= A9 01 ). STA &1FB0,X :\ 8C4C= 9D B0 1F .0. INX :\ 8C4F= E8 h INY :\ 8C50= C8 H LDA &66 :\ 8C51= A5 66 %f SEC :\ 8C53= 38 8 SBC #&01 :\ 8C54= E9 01 i. STA &66 :\ 8C56= 85 66 .f BNE L8C36 :\ 8C58= D0 DC P\ RTS :\ 8C5A= 60 ` .L8C5B LDA &0794 :\ 8C5B= AD 94 07 -.. .L8C5E TAY :\ 8C5E= A8 ( LDX #&FE :\ 8C5F= A2 FE "~ ROR A :\ 8C61= 6A j ROR A :\ 8C62= 6A j ROR A :\ 8C63= 6A j ROR A :\ 8C64= 6A j .L8C65 AND #&0F :\ 8C65= 29 0F ). SEC :\ 8C67= 38 8 SBC #&0A :\ 8C68= E9 0A i. BCS L8C70 :\ 8C6A= B0 04 0. ADC #&3A :\ 8C6C= 69 3A i: BCS L8C72 :\ 8C6E= B0 02 0. .L8C70 ADC #&40 :\ 8C70= 69 40 i@ .L8C72 JSR OSASCI :\ 8C72= 20 E3 FF c. INX :\ 8C75= E8 h BEQ L8C7C :\ 8C76= F0 04 p. TYA :\ 8C78= 98 . JMP L8C65 :\ 8C79= 4C 65 8C Le. .L8C7C RTS :\ 8C7C= 60 ` .L8C7D ASL A :\ 8C7D= 0A . ORA (&02,X) :\ 8C7E= 01 02 .. EQUB &03 :\ 8C80= 03 . TSB &05 :\ 8C81= 04 05 .. ASL &07 :\ 8C83= 06 07 .. PHP :\ 8C85= 08 . ORA #&0B :\ 8C86= 09 0B .. TSB &0E0D :\ 8C88= 0C 0D 0E ... TSB &1110 :\ 8C8B= 0F 10 11 ... ORA (&13) :\ 8C8E= 12 13 .. TRB &58 :\ 8C90= 14 58 .X AND &3C57,X :\ 8C92= 3D 57 3C =W< RTI :\ 8C95= 40 @ ROL &2B,X :\ 8C96= 36 2B 6+ EQUB &3B :\ 8C98= 3B ; BIT &A22C :\ 8C99= 2C 2C A2 ,," BRK :\ 8C9C= 00 . .L8C9D JSR OSRDCH :\ 8C9D= 20 E0 FF `. CMP #&1B :\ 8CA0= C9 1B I. BEQ L8CAE :\ 8CA2= F0 0A p. BNE L8CB6 :\ 8CA4= D0 10 P. BRK :\ 8CA6= 00 . EOR &68 :\ 8CA7= 45 68 Eh ADC &6C :\ 8CA9= 65 6C el BVS L8CBA :\ 8CAB= 70 0D p. BRK :\ 8CAD= 00 . .L8CAE LDA #&7E :\ 8CAE= A9 7E )~ JSR OSBYTE :\ 8CB0= 20 F4 FF t. PLA :\ 8CB3= 68 h PLA :\ 8CB4= 68 h RTS :\ 8CB5= 60 ` .L8CB6 STA &0700,X :\ 8CB6= 9D 00 07 ... CMP #&7F :\ 8CB9= C9 7F I. BNE L8CC6 :\ 8CBB= D0 09 P. .L8CBD DEX :\ 8CBD= CA J BMI L8C9B :\ 8CBE= 30 DB 0[ JSR OSWRCH :\ 8CC0= 20 EE FF n. JMP L8C9D :\ 8CC3= 4C 9D 8C L.. .L8CC6 JSR OSWRCH :\ 8CC6= 20 EE FF n. CMP #&0D :\ 8CC9= C9 0D I. BNE L8CD1 :\ 8CCB= D0 04 P. JSR OSNEWL :\ 8CCD= 20 E7 FF g. RTS :\ 8CD0= 60 ` .L8CD1 INX :\ 8CD1= E8 h CPX #&14 :\ 8CD2= E0 14 `. BNE L8C9D :\ 8CD4= D0 C7 PG LDA #&7F :\ 8CD6= A9 7F ). JMP L8CBD :\ 8CD8= 4C BD 8C L=. .L8CDB LDA #&00 :\ 8CDB= A9 00 ). STA &6B :\ 8CDD= 85 6B .k STA &6C :\ 8CDF= 85 6C .l LDA &0700,Y :\ 8CE1= B9 00 07 9.. .L8CE4 CMP #&30 :\ 8CE4= C9 30 I0 BCC L8D01 :\ 8CE6= 90 19 .. CMP #&3A :\ 8CE8= C9 3A I: BCS L8D01 :\ 8CEA= B0 15 0. AND #&0F :\ 8CEC= 29 0F ). JSR L8D09 :\ 8CEE= 20 09 8D .. CLC :\ 8CF1= 18 . ADC &6B :\ 8CF2= 65 6B ek STA &6B :\ 8CF4= 85 6B .k BCC L8CFA :\ 8CF6= 90 02 .. INC &6C :\ 8CF8= E6 6C fl .L8CFA INY :\ 8CFA= C8 H LDA &0700,Y :\ 8CFB= B9 00 07 9.. JMP L8CE4 :\ 8CFE= 4C E4 8C Ld. .L8D01 CMP #&0D :\ 8D01= C9 0D I. BEQ L8D06 :\ 8D03= F0 01 p. CLC :\ 8D05= 18 . .L8D06 LDA &6B :\ 8D06= A5 6B %k RTS :\ 8D08= 60 ` .L8D09 PHA :\ 8D09= 48 H ASL &6B :\ 8D0A= 06 6B .k ROL &6C :\ 8D0C= 26 6C &l LDA &6C :\ 8D0E= A5 6C %l PHA :\ 8D10= 48 H LDA &6B :\ 8D11= A5 6B %k PHA :\ 8D13= 48 H ASL &6B :\ 8D14= 06 6B .k ROL &6C :\ 8D16= 26 6C &l ASL &6B :\ 8D18= 06 6B .k ROL &6C :\ 8D1A= 26 6C &l CLC :\ 8D1C= 18 . PLA :\ 8D1D= 68 h ADC &6B :\ 8D1E= 65 6B ek STA &6B :\ 8D20= 85 6B .k PLA :\ 8D22= 68 h ADC &6C :\ 8D23= 65 6C el STA &6C :\ 8D25= 85 6C .l PLA :\ 8D27= 68 h RTS :\ 8D28= 60 ` .L8D29 JSR L8C9B :\ 8D29= 20 9B 8C .. LDY #&00 :\ 8D2C= A0 00 . JSR L8CDB :\ 8D2E= 20 DB 8C [. BEQ L8D49 :\ 8D31= F0 16 p. STA &6E :\ 8D33= 85 6E .n BCS L8D49 :\ 8D35= B0 12 0. INY :\ 8D37= C8 H JSR L8CDB :\ 8D38= 20 DB 8C [. BEQ L8D49 :\ 8D3B= F0 0C p. STA &6D :\ 8D3D= 85 6D .m BCS L8D49 :\ 8D3F= B0 08 0. INY :\ 8D41= C8 H JSR L8CDB :\ 8D42= 20 DB 8C [. BEQ L8D49 :\ 8D45= F0 02 p. STA &6F :\ 8D47= 85 6F .o .L8D49 RTS :\ 8D49= 60 ` .L8D4A LDA &0793 :\ 8D4A= AD 93 07 -.. STA &73 :\ 8D4D= 85 73 .s LDX #&73 :\ 8D4F= A2 73 "s LDY #&00 :\ 8D51= A0 00 . LDA #&7F :\ 8D53= A9 7F ). JMP OSWORD :\ 8D55= 4C F1 FF Lq. BRK :\ 8D58= 00 . BRK :\ 8D59= 00 . BRK :\ 8D5A= 00 . BRK :\ 8D5B= 00 . BRK :\ 8D5C= 00 . BRK :\ 8D5D= 00 . BRK :\ 8D5E= 00 . BRK :\ 8D5F= 00 . BRK :\ 8D60= 00 . BRK :\ 8D61= 00 . BRK :\ 8D62= 00 . BRK :\ 8D63= 00 . BRK :\ 8D64= 00 . BRK :\ 8D65= 00 . BRK :\ 8D66= 00 . BRK :\ 8D67= 00 . BRK :\ 8D68= 00 . BRK :\ 8D69= 00 . ]NEXT PRINT "*SAVE ";~mcode%;" ";~O%;" ";~exec%;" ";~load%