Disassembly of Master Tube Host Code in Utils ROM ================================================= UTILS ROM HEADER ================ 8003 4C 72 9D Lr. JMP &9D72 SERVICE HANDLER =============== 9D72 C9 FE Éþ CMP #&FE 9D74 90 56 .V BCC &9DCC Jump if not Tube call 9D76 D0 14 Ð. BNE &9D8C Jump with &FF ServFE - Tube Postinit ---------------------- 9D78 C0 00 À. CPY #&00 9D7A F0 50 ðP BEQ &9DCC 9D7C 2C E0 FE ,àþ BIT &FEE0 9D7F 10 FB .û BPL &9D7C 9D81 AD E1 FE ­áþ LDA &FEE1 9D84 F0 44 ðD BEQ &9DCA 9D86 20 EE FF î. JSR OSWRCH 9D89 4C 7C 9D L|. JMP &9D7C ServFF - Tube Preinit --------------------- 9D8C A9 7B ©{ LDA #&7B 9D8E 8D 20 02 . . STA &0220 9D91 A9 06 ©. LDA #&06 9D93 8D 21 02 .!. STA &0221 Point EVNTV to &067B 9D96 A9 16 ©. LDA #&16 9D98 8D 02 02 ... STA &0202 9D9B A9 00 ©. LDA #&00 9D9D 8D 03 02 ... STA &0203 Point BRKV to &0016 9DA0 A9 8E ©. LDA #&8E 9DA2 8D E0 FE .àþ STA &FEE0 9DA5 A0 00  . LDY #&00 9DA7 B9 6E AB ¹n« LDA &AB6E,Y 9DAA 99 00 04 ... STA &0400,Y 9DAD B9 65 AC ¹e¬ LDA &AC65,Y 9DB0 99 00 05 ... STA &0500,Y 9DB3 B9 65 AD ¹e­ LDA &AD65,Y 9DB6 99 00 06 ... STA &0600,Y 9DB9 88 . DEY 9DBA D0 EB Ðë BNE &9DA7 9DBC 20 1F 04 .. JSR &041F 9DBF A2 41 ¢A LDX #&41 9DC1 BD 2D AB ½-« LDA &AB2D,X 9DC4 9D 16 00 ... STA &0016,X 9DC7 CA Ê DEX 9DC8 10 F7 .÷ BPL &9DC1 9DCA A9 00 ©. LDA #&00 Claim service call Continue service handler ------------------------ 9DCC C9 12 É. CMP #&12 Code at &AB2D copied to &0016 ============================= 0000 EQUS 18 Control block for MOS calls 0012 00 00 .. EQUW &0000 Pointer to Tube transfer block 0014 00 . EQUB &00 Tube status 0015 00 . EQUB &00 Tube owner BRK handler ----------- 0016 A9 FF ©. LDA #&FF Send &FF 0018 20 6C 06 l. JSR &066C Send &FF to R4 to interupt CoPro 001B AD E3 FE ­ãþ LDA &FEE3 Get ACK byte from CoPro 001E A9 00 ©. LDA #&00 0020 20 61 06 a. JSR &0661 Send &00 to R2 to specify ERROR 0023 A8 ¨ TAY Point Y to start of error block 0024 B1 FD ±ý LDA (&FD),Y Get error number 0026 20 61 06 a. JSR &0661 Send via R2 0029 C8 È INY Point to next character 002A B1 FD ±ý LDA (&FD),Y Get error string character 002C 20 61 06 l. JSR &0661 Send via R2 002F AA ª TAX 0030 D0 F7 Ð÷ BNE &0029 Loop until terminating &00 sent Idle startup ------------ 0032 A2 FF ¢. LDX #&FF 0034 9A . TXS Clear stack 0035 58 X CLI Enable IRQs Tube idle loop -------------- 0036 2C E0 FE ,àþ BIT &FEE0 Is there character in R1? 0039 10 06 .. BPL &0041 No, check for command in R2 003B AD E1 FE ­áþ LDA &FEE1 Get character from R1 003E 20 EE FF î. JSR OSWRCH Send to VDU drivers 0041 2C E2 FE ,âþ BIT &FEE2 Is there command in R2? 0044 10 F0 .ð BPL &0036 No, loop back 0046 2C E0 FE ,àþ BIT &FEE0 Check again for character in R1 0049 30 F0 0ð BMI &003B Jump to catch this character 004B AE E3 FE ®ãþ LDX &FEE3 Get command from R2 004E 86 51 .Q STX &51 Use as index into &0500 0050 6C 00 05 l.. JMP (&0500) Jump to command routine 0053 00 80 00 00 .... EQUD &00800000 Code copied to &0400-&06FF ========================== Copy language across the Tube ----------------------------- 0400 4C C2 04 LÂ. JMP &04C2 Copy Escape state across the Tube --------------------------------- 0403 4C 75 06 Lu. JMP &0675 Tube Transfer/Claim/Release --------------------------- 0406 C9 80 É. CMP #&80 0408 90 29 .) BCC &0433 040A C9 C0 ÉÀ CMP #&C0 040C B0 18 °. BCS &0426 040E 09 40 .@ ORA #&40 0410 C5 15 Å. CMP &15 0412 D0 1E Ð. BNE &0432 0414 08 . PHP 0415 78 x SEI 0416 A9 05 ©. LDA #&05 0418 20 6C 06 l. JSR &066C 041B 20 6A 06 j. JSR &066A 041E 28 ( PLP 041F A9 80 ©. LDA #&80 0421 85 15 .. STA &15 0423 85 14 .. STA &14 0425 60 ` RTS 0426 06 14 .. ASL &14 0428 B0 06 °. BCS &0430 042A C5 15 Å. CMP &15 042C F0 04 ð. BEQ &0432 042E 18 . CLC 042F 60 ` RTS 0430 85 15 .. STA &15 0432 60 ` RTS 0433 08 . PHP 0434 78 x SEI 0435 84 13 .. STY &13 0437 86 12 .. STX &12 0439 20 6C 06 l. JSR &066C 043C AA ª TAX 043D A0 03  . LDY #&03 043F 20 6A 06 j. JSR &066A 0442 B1 12 ±. LDA (&12),Y 0444 20 6C 06 l. JSR &066C 0447 88 . DEY 0448 10 F8 .ø BPL &0442 044A A0 18  . LDY #&18 044C 8C E0 FE .àþ STY &FEE0 044F BD 18 05 ½.. LDA &0518,X 0452 8D E0 FE .àþ STA &FEE0 0455 4A J LSR A 0456 4A J LSR A 0457 90 06 .. BCC &045F 0459 2C E5 FE ,åþ BIT &FEE5 045C 2C E5 FE ,åþ BIT &FEE5 045F 20 6C 06 l. JSR &066C 0462 2C E6 FE ,æþ BIT &FEE6 0465 50 FB Pû BVC &0462 0467 B0 0D °. BCS &0476 0469 E0 04 à. CPX #&04 046B D0 11 Ð. BNE &047E 046D 20 14 04 .. JSR &0414 0470 20 61 06 a. JSR &0661 0473 4C 32 00 L2. JMP &0032 0476 4A J LSR A 0477 90 05 .. BCC &047E 0479 A0 88  . LDY #&88 047B 8C E0 FE .àþ STY &FEE0 047E 28 ( PLP 047F 60 ` RTS 0480 AE 8D 02 ®.. LDX &028D 0483 F0 E8 ðè BEQ &046D 0485 A9 FF ©. LDA #&FF 0487 20 06 04 .. JSR &0406 048A 90 F9 .ù BCC &0485 048C 20 C9 04 É. JSR &04C9 048F 08 . PHP 0490 78 x SEI 0491 A9 07 ©. LDA #&07 0493 20 BB 04 ». JSR &04BB 0496 A0 00  . LDY #&00 0498 64 00 d. STZ &00 049A B1 00 ±. LDA (&00),Y 049C 8D E5 FE .åþ STA &FEE5 049F EA ê NOP 04A0 EA ê NOP 04A1 EA ê NOP 04A2 C8 È INY 04A3 D0 F5 Ðõ BNE &049A 04A5 28 ( PLP 04A6 E6 54 æT INC &54 04A8 D0 06 Ð. BNE &04B0 04AA E6 55 æU INC &55 04AC D0 02 Ð. BNE &04B0 04AE E6 56 æV INC &56 04B0 E6 01 æ. INC &01 04B2 24 01 $. BIT &01 04B4 50 D9 PÙ BVC &048F 04B6 20 C9 04 É. JSR &04C9 04B9 A9 04 ©. LDA #&04 04BB A0 00  . LDY #&00 04BD A2 53 ¢S LDX #&53 04BF 4C 06 04 L.. JMP &0406 04C2 58 X CLI 04C3 B0 C0 °À BCS &0485 04C5 D0 B9 й BNE &0480 04C7 80 61 .a BRA &052A 04C9 A9 80 ©. LDA #&80 04CB 85 54 .T STA &54 04CD 85 01 .. STA &01 04CF A9 20 © LDA #&20 04D1 2D 06 80 -.. AND &8006 04D4 A8 ¨ TAY 04D5 84 53 .S STY &53 04D7 F0 19 ð. BEQ &04F2 04D9 AE 07 80 ®.. LDX &8007 04DC E8 è INX 04DD BD 00 80 ½.. LDA &8000,X 04E0 D0 FA Ðú BNE &04DC 04E2 BD 01 80 ½.. LDA &8001,X 04E5 85 53 .S STA &53 04E7 BD 02 80 ½.. LDA &8002,X 04EA 85 54 .T STA &54 04EC BC 03 80 ¼.. LDY &8003,X 04EF BD 04 80 ½.. LDA &8004,X 04F2 85 56 .V STA &56 04F4 84 55 .U STY &55 04F6 60 ` RTS 04F7 35 05 5. AND &05,X 04F9 88 . DEY 04FA 05 DA .Ú ORA &DA 04FC 05 EB .ë ORA &EB 04FE 05 07 .. ORA &07 0500 35 05 5. AND &05,X 0502 88 . DEY 0503 05 DA .Ú ORA &DA 0505 05 EB .ë ORA &EB 0507 05 07 .. ORA &07 0509 06 36 .6 ASL &36 050B 06 59 .Y ASL &59 050D 05 2C ., ORA &2C 050F 05 20 . ORA &20 0511 05 3F .? ORA &3F 0513 05 B2 .² ORA &B2 0515 05 9A .. ORA &9A 0517 05 86 .. ORA &86 0519 88 . DEY 051A 96 98 .. STX &98,X 051C 18 . CLC 051D 18 . CLC 051E 82 . EQUB &82 051F 18 . CLC 0520 20 A1 06 ¡. JSR &06A1 0523 A8 ¨ TAY 0524 20 A1 06 ¡. JSR &06A1 0527 20 D4 FF Ô. JSR OSBPUT 052A 80 62 .b BRA &058E 052C 20 A1 06 ¡. JSR &06A1 052F A8 ¨ TAY 0530 20 D7 FF ×. JSR OSBGET 0533 80 03 .. BRA &0538 0535 20 E0 FF à. JSR OSRDCH 0538 6A j ROR A 0539 20 61 06 a. JSR &0661 053C 2A * ROL A 053D 80 51 .Q BRA &0590 053F 20 A1 06 ¡. JSR &06A1 0542 F0 0A ð. BEQ &054E 0544 48 H PHA 0545 20 74 05 t. JSR &0574 0548 68 h PLA 0549 20 CE FF Î. JSR OSFIND 054C 80 42 .B BRA &0590 054E 20 A1 06 ¡. JSR &06A1 0551 A8 ¨ TAY 0552 A9 00 ©. LDA #&00 0554 20 CE FF Î. JSR OSFIND 0557 80 35 .5 BRA &058E 0559 20 A1 06 ¡. JSR &06A1 055C A8 ¨ TAY 055D A2 04 ¢. LDX #&04 055F 20 93 06 .. JSR &0693 0562 20 DA FF Ú. JSR OSARGS 0565 20 61 06 a. JSR &0661 0568 A2 03 ¢. LDX #&03 056A B5 00 µ. LDA &00,X 056C 20 61 06 a. JSR &0661 056F CA Ê DEX 0570 10 F8 .ø BPL &056A 0572 80 24 .$ BRA &0598 0574 A2 00 ¢. LDX #&00 0576 A0 00  . LDY #&00 0578 20 A1 06 ¡. JSR &06A1 057B 99 00 07 ... STA &0700,Y 057E C8 È INY 057F F0 04 ð. BEQ &0585 0581 C9 0D É. CMP #&0D 0583 D0 F3 Ðó BNE &0578 0585 A0 07  . LDY #&07 0587 60 ` RTS 0588 20 74 05 t. JSR &0574 058B 20 F7 FF ÷. JSR OSCLI 058E A9 7F ©. LDA #&7F 0590 2C E2 FE ,âþ BIT &FEE2 0593 50 FB Pû BVC &0590 0595 8D E3 FE .ãþ STA &FEE3 0598 80 4E .N BRA &05E8 059A A2 0D ¢. LDX #&0D 059C 20 93 06 .. JSR &0693 059F A0 00  . LDY #&00 05A1 20 D1 FF Ñ. JSR OSGBPB 05A4 48 H PHA 05A5 A2 0C ¢. LDX #&0C 05A7 B5 00 µ. LDA &00,X 05A9 20 61 06 a. JSR &0661 05AC CA Ê DEX 05AD 10 F8 .ø BPL &05A7 05AF 68 h PLA 05B0 80 86 .. BRA &0538 05B2 A2 10 ¢. LDX #&10 05B4 20 A1 06 ¡. JSR &06A1 05B7 95 01 .. STA &01,X 05B9 CA Ê DEX 05BA D0 F8 Ðø BNE &05B4 05BC 20 74 05 t. JSR &0574 05BF 86 00 .. STX &00 05C1 84 01 .. STY &01 05C3 A0 00  . LDY #&00 05C5 20 A1 06 ¡. JSR &06A1 05C8 20 DD FF Ý. JSR OSFILE 05CB 20 61 06 a. JSR &0661 05CE A2 10 ¢. LDX #&10 05D0 B5 01 µ. LDA &01,X 05D2 20 61 06 a. JSR &0661 05D5 CA Ê DEX 05D6 D0 F8 Ðø BNE &05D0 05D8 80 0E .. BRA &05E8 05DA 20 9D 06 .. JSR &069D 05DD 20 F4 FF ô. JSR OSBYTE 05E0 2C E2 FE ,âþ BIT &FEE2 05E3 50 FB Pû BVC &05E0 05E5 8E E3 FE .ãþ STX &FEE3 05E8 4C 36 00 L6. JMP &0036 05EB 20 9D 06 .. JSR &069D 05EE A8 ¨ TAY 05EF 20 A1 06 ¡. JSR &06A1 05F2 20 F4 FF ô. JSR OSBYTE 05F5 49 9D I. EOR #&9D 05F7 F0 EF ðï BEQ &05E8 05F9 6A j ROR A 05FA 20 61 06 a. JSR &0661 05FD 2C E2 FE ,âþ BIT &FEE2 0600 50 FB Pû BVC &05FD 0602 8C E3 FE .ãþ STY &FEE3 0605 80 D9 .Ù BRA &05E0 0607 20 A1 06 ¡. JSR &06A1 060A A8 ¨ TAY 060B 20 AA 06 ª. JSR &06AA 060E 30 0A 0. BMI &061A 0610 20 A1 06 ¡. JSR &06A1 0613 9D 28 01 .(. STA &0128,X 0616 CA Ê DEX 0617 10 F7 .÷ BPL &0610 0619 98 . TYA 061A A2 28 ¢( LDX #&28 061C A0 01  . LDY #&01 061E 20 F1 FF ñ. JSR OSWORD 0621 20 AA 06 ª. JSR &06AA 0624 30 C2 0 BMI &05E8 0626 BC 28 01 ¼(. LDY &0128,X 0629 2C E2 FE ,âþ BIT &FEE2 062C 50 FB Pû BVC &0629 062E 8C E3 FE .ãþ STY &FEE3 0631 CA Ê DEX 0632 10 F2 .ò BPL &0626 0634 80 B2 .² BRA &05E8 0636 A2 04 ¢. LDX #&04 0638 20 A1 06 ¡. JSR &06A1 063B 95 00 .. STA &00,X 063D CA Ê DEX 063E 10 F8 .ø BPL &0638 0640 E8 è INX 0641 8A . TXA 0642 A8 ¨ TAY 0643 20 F1 FF ñ. JSR OSWORD 0646 90 05 .. BCC &064D 0648 A9 FF ©. LDA #&FF 064A 4C 90 05 L.. JMP &0590 064D A2 00 ¢. LDX #&00 064F A9 7F ©. LDA #&7F 0651 20 61 06 a. JSR &0661 0654 BD 00 07 ½.. LDA &0700,X 0657 20 61 06 a. JSR &0661 065A E8 è INX 065B C9 0D É. CMP #&0D 065D D0 F5 Ðõ BNE &0654 065F 80 D3 .Ó BRA &0634 0661 2C E2 FE ,âþ BIT &FEE2 0664 50 FB Pû BVC &0661 0666 8D E3 FE .ãþ STA &FEE3 0669 60 ` RTS 066A A5 15 ¥. LDA &15 066C 2C E6 FE ,æþ BIT &FEE6 066F 50 FB Pû BVC &066C 0671 8D E7 FE .çþ STA &FEE7 0674 60 ` RTS 0675 A5 FF ¥. LDA &FF 0677 38 8 SEC 0678 6A j ROR A 0679 80 0F .. BRA &068A 067B 48 H PHA 067C A9 00 ©. LDA #&00 067E 20 8A 06 .. JSR &068A 0681 98 . TYA 0682 20 8A 06 .. JSR &068A 0685 8A . TXA 0686 20 8A 06 .. JSR &068A 0689 68 h PLA 068A 2C E0 FE ,àþ BIT &FEE0 068D 50 FB Pû BVC &068A 068F 8D E1 FE .áþ STA &FEE1 0692 60 ` RTS 0693 20 A1 06 ¡. JSR &06A1 0696 95 FF .. STA &FF,X 0698 CA Ê DEX 0699 D0 F8 Ðø BNE &0693 069B 80 04 .. BRA &06A1 069D 20 A1 06 ¡. JSR &06A1 06A0 AA ª TAX 06A1 2C E2 FE ,âþ BIT &FEE2 06A4 10 FB .û BPL &06A1 06A6 AD E3 FE ­ãþ LDA &FEE3 06A9 60 ` RTS 06AA 2C E2 FE ,âþ BIT &FEE2 06AD 10 FB .û BPL &06AA 06AF AE E3 FE ®ãþ LDX &FEE3 06B2 CA Ê DEX 06B3 60 ` RTS spare ----- 06B4 08 . PHP 06B5 5A Z PHY 06B6 DA Ú PHX 06B7 48 H PHA 06B8 C9 04 É. CMP #&04 06BA F0 0D ð. BEQ &06C9 06BC C9 07 É. CMP #&07 06BE F0 25 ð% BEQ &06E5 06C0 C9 2A É* CMP #&2A 06C2 F0 74 ðt BEQ &0738 06C4 68 h PLA 06C5 FA ú PLX 06C6 7A z PLY 06C7 28 ( PLP 06C8 60 ` RTS 06C9 20 32 B8 2¸ JSR &B832 06CC C9 0B É. CMP #&0B 06CE D0 F4 Ðô BNE &06C4 06D0 68 h PLA 06D1 FA ú PLX 06D2 A9 8E ©. LDA #&8E 06D4 20 F4 FF ô. JSR OSBYTE 06D7 A2 04 ¢. LDX #&04 06D9 BD 29 02 ½). LDA &0229,X 06DC DD 92 AE Ý.® CMP &AE92,X 06DF D0 03 Ð. BNE &06E4 06E1 CA Ê DEX 06E2 D0 F5 Ðõ BNE &06D9 06E4 60 ` RTS 06E5 5A Z PHY 06E6 7A z PLY 06E7 D0 DB ÐÛ BNE &06C4 06E9 A5 EF ¥ï LDA &EF 06EB C9 60 É` CMP #&60 06ED D0 D5 ÐÕ BNE &06C4 06EF 68 h PLA 06F0 5A Z PHY 06F1 78 x SEI 06F2 A5 F0 ¥ð LDA &F0 06F4 30 11 0. BMI &0707 06F6 4A J LSR A 06F7 D0 08 Ð. BNE &0701 06F9 A9 11 ©. LDA #&11 06FB 85 76 .v STA &76 06FD 66 74 ft ROR &74 06FF 80 C3 .à BRA &06C4