0300 00 .buffer EQUB 0 0301 00 .bytev EQUB 0 0302 00 .wordv EQUB 0 0303 00 .wrchv EQUB 0 0304 00 .rdchv EQUB 0 0305 00 .filev EQUB 0 0306 00 .argsv EQUB 0 0307 00 .bgetv EQUB 0 0308 00 .bputv EQUB 0 0309 00 .gbpbv EQUB 0 030A 00 .findv EQUB 0 030B 00 .fscv EQUB 0 030C 00 .miscv EQUB 0 F700 3C FB .vectab EQUW badcom F702 26 FB EQUW brkv F704 05 FB EQUW irq1v F706 08 FB EQUW irq2v F708 A7 F7 EQUW cliv F70A 01 03 EQUW bytev F70C 02 03 EQUW wordv F70E 03 03 EQUW wrchv F710 04 03 EQUW rdchv F712 05 03 EQUW filev F714 06 03 EQUW argsv F716 07 03 EQUW bgetv F718 08 03 EQUW bputv F71A 09 03 EQUW gbpbv F71C 0A 03 EQUW findv F71E 0B 03 .vectnd EQUW fscv F720 00 03 .oswblk EQUW buffer F722 50 EQUB 80 F723 20 EQUB 32 F724 7E EQUB 126 F725 40 .sev EQUB 64 F726 2E EQUS "." F727 F8 EQUB OSFSC / 256 F728 44 EQUB OSFSC MOD256 F729 05 EQUB 5 F72A 46 58 EQUS "FX" F72C F9 EQUB FXAXY / 256 F72D D8 EQUB FXAXY MOD256 F72E FF EQUB 255 F72F 42 41 53 49 43 EQUS "BASIC" F734 F8 EQUB BASIC / 256 F735 31 EQUB BASIC MOD256 F736 00 EQUB 0 F737 43 41 54 EQUS "CAT" F73A F8 EQUB OSFSC / 256 F73B 44 EQUB OSFSC MOD256 F73C 05 EQUB 5 F73D 43 4F 44 45 EQUS "CODE" F741 F9 EQUB FXXY / 256 F742 DE EQUB FXXY MOD256 F743 88 EQUB 136 F744 45 58 45 43 EQUS "EXEC" F748 F6 EQUB &F6 F749 8D EQUB &8D F74A 00 EQUB 0 F74B 48 45 4C 50 EQUS "HELP" F74F F8 EQUB HELP / 256 F750 55 EQUB HELP MOD256 F751 FF EQUB 255 F752 4B 45 59 EQUS "KEY" F755 F9 EQUB ASKEY / 256 F756 D7 EQUB ASKEY MOD256 F757 FF EQUB 255 F758 4C 4F 41 44 EQUS "LOAD" F75C F9 EQUB ALOAD / 256 F75D 01 EQUB ALOAD MOD256 F75E 00 EQUB 0 F75F 4C 49 4E 45 EQUS "LINE" F763 F8 EQUB USER / 256 F764 65 EQUB USER MOD256 F765 01 EQUB 1 F766 4D 4F 54 4F 52 EQUS "MOTOR" F76B F9 EQUB FXXY / 256 F76C DE EQUB FXXY MOD256 F76D 89 EQUB 137 F76E 4D 55 53 49 43 EQUS "MUSIC" F773 FB EQUB music / 256 F774 6D EQUB music MOD 256 F775 01 EQUB 1 F776 4F 50 54 EQUS "OPT" F779 F9 EQUB FXXY / 256 F77A DE EQUB FXXY MOD256 F77B 8B EQUB 139 F77C 52 55 4E EQUS "RUN" F77F F8 EQUB OSFSC / 256 F780 44 EQUB OSFSC MOD256 F781 04 EQUB 4 F782 52 4F 4D EQUS "ROM" F785 F9 EQUB FXXY / 256 F786 DE EQUB FXXY MOD256 F787 8D EQUB 141 F788 53 41 56 45 EQUS "SAVE" F78C F9 EQUB ASAVE / 256 F78D 03 EQUB ASAVE MOD256 F78E 00 EQUB 0 F78F 53 50 4F 4F 4C EQUS "SPOOL" F794 F9 EQUB SPOOL / 256 F795 3A EQUB SPOOL MOD256 F796 00 EQUB 0 F797 54 41 50 45 EQUS "TAPE" F79B F9 EQUB FXXY / 256 F79C DE EQUB FXXY MOD256 F79D 8C EQUB 140 F79E 54 56 EQUS "TV" F7A0 F9 EQUB FXXY / 256 F7A1 DE EQUB FXXY MOD256 F7A2 90 EQUB 144 F7A3 F8 EQUB OSFSC / 256 F7A4 44 EQUB OSFSC MOD256 F7A5 03 EQUB 3 F7A6 00 EQUB 0 F7A7 86 F2 .cliv STX &F2 F7A9 84 F3 STY &F3 F7AB A0 00 LDY #0 F7AD B1 F2 LDA (&F2),Y F7AF C9 0D CMP #&D F7B1 F0 04 BEQ &F7B7 F7B3 C8 INY F7B4 D0 F7 BNE &F7AD F7B6 60 RTS F7B7 A0 FF LDY #&FF F7B9 20 68 F8 JSR &F868 F7BC F0 72 BEQ &F830 F7BE C9 2A CMP #ASC"*" F7C0 F0 F7 BEQ &F7B9 F7C2 20 69 F8 JSR &F869 F7C5 F0 69 BEQ &F830 F7C7 C9 7C CMP #ASC"|" F7C9 F0 65 BEQ &F830 F7CB C9 2F CMP #ASC"/" F7CD D0 08 BNE &F7D7 F7CF C8 INY F7D0 20 22 F8 JSR &F822 F7D3 A9 02 LDA #2 F7D5 D0 6D BNE OSFSC F7D7 84 E6 STY &E6 F7D9 A2 00 LDX #0 F7DB F0 13 BEQ &F7F0 F7DD 5D 26 F7 EOR &F726,X F7E0 29 DF AND #&DF F7E2 D0 17 BNE &F7FB F7E4 C8 INY F7E5 18 CLC F7E6 B0 25 BCS &F80D F7E8 E8 INX F7E9 B1 F2 LDA (&F2),Y F7EB 20 47 F8 JSR &F847 F7EE 90 ED BCC &F7DD F7F0 BD 26 F7 LDA &F726,X F7F3 30 16 BMI &F80B F7F5 B1 F2 LDA (&F2),Y F7F7 C9 2E CMP #ASC"." F7F9 F0 04 BEQ &F7FF F7FB 18 CLC F7FC A4 E6 LDY &E6 F7FE 88 DEY F7FF C8 INY F800 E8 INX F801 E8 INX F802 BD 24 F7 LDA &F726-2,X F805 F0 30 BEQ &F837 F807 10 F8 BPL &F801 F809 30 DB BMI &F7E6 F80B E8 INX F80C E8 INX F80D CA DEX F80E CA DEX F80F 48 PHA F810 BD 27 F7 LDA &F726+1,X F813 48 PHA F814 20 69 F8 JSR &F869 F817 18 CLC F818 08 PHP F819 20 1D F8 JSR &F81D F81C 40 RTI F81D BD 28 F7 LDA &F726+2,X F820 30 0E BMI &F830 F822 98 TYA F823 BC 28 F7 LDY &F726+2,X F826 18 CLC F827 65 F2 ADC &F2 F829 AA TAX F82A 98 TYA F82B A4 F3 LDY &F3 F82D 90 01 BCC &F830 F82F C8 INY F830 60 RTS F831 AE 4B 02 .BASIC LDX &24B F834 30 01 BMI &F837 F836 38 SEC F837\ JMP FX142 F837 A4 E6 LDY &E6 F839 A2 04 LDX #4 F83B\ JSR FX143 F83B F0 F3 BEQ &F830 F83D A5 E6 LDA &E6 F83F 20 26 F8 JSR &F826 F842 A9 03 LDA #3 F844 6C 1E 02 .OSFSC JMP (&21E) F847 48 PHA F848 29 DF AND #&DF F84A C9 41 CMP #ASC"A" F84C 90 04 BCC &F852 F84E C9 5B CMP #ASC"Z"+1 F850 90 01 BCC &F853 F852 38 SEC F853 68 PLA F854 60 RTS F855 A2 09 .HELP LDX #9 F857\JSR FX143 F857 20 4A FA JSR &FA4A F85A 0D EQUB 13 F85B 4F 53 20 31 2E 32 30 EQUS "OS 1.20" F862 0D EQUB 13 F863 00 BRK F864 60 RTS F865 6C 00 02 .USER JMP (&200) F868 C8 INY F869 B1 F2 LDA (&F2),Y F86B C9 20 CMP #ASC" " F86D F0 F9 BEQ &F868 F86F C9 0D CMP #&D F871 60 RTS F872 90 F5 BCC &F869 F874 20 69 F8 JSR &F869 F877 C9 2C CMP #ASC"," F879 D0 F4 BNE &F86F F87B C8 INY F87C 60 RTS F87D 20 69 F8 JSR &F869 F880 20 AC F8 JSR &F8AC F883 90 37 BCC &F8BC F885 85 E6 STA &E6 F887 20 AB F8 JSR &F8AB F88A 90 19 BCC &F8A5 F88C AA TAX F88D A5 E6 LDA &E6 F88F 0A ASL A F890 B0 2A BCS &F8BC F892 0A ASL A F893 B0 27 BCS &F8BC F895 65 E6 ADC &E6 F897 B0 23 BCS &F8BC F899 0A ASL A F89A B0 20 BCS &F8BC F89C 85 E6 STA &E6 F89E 8A TXA F89F 65 E6 ADC &E6 F8A1 B0 19 BCS &F8BC F8A3 90 E0 BCC &F885 F8A5 A6 E6 LDX &E6 F8A7 C9 0D CMP #&D F8A9 38 SEC F8AA 60 RTS F8AB C8 INY F8AC B1 F2 LDA (&F2),Y F8AE C9 3A CMP #ASC"9"+1 F8B0 B0 0A BCS &F8BC F8B2 C9 30 CMP #ASC"0" F8B4 90 06 BCC &F8BC F8B6 29 0F AND #&F F8B8 60 RTS F8B9 20 74 F8 JSR &F874 F8BC 18 CLC F8BD 60 RTS F8BE 20 AC F8 JSR &F8AC F8C1 B0 0E BCS &F8D1 F8C3 29 DF AND #&DF F8C5 C9 47 CMP #ASC"F"+1 F8C7 B0 F0 BCS &F8B9 F8C9 C9 41 CMP #ASC"A" F8CB 90 EC BCC &F8B9 F8CD 08 PHP F8CE E9 37 SBC #&37 F8D0 28 PLP F8D1 C8 INY F8D2 60 RTS F8D3 48 PHA F8D4 A9 00 LDA #0 F8D6 9D EE 02 STA cblk,X F8D9 9D EF 02 STA cblk+1,X F8DC 9D F0 02 STA cblk+2,X F8DF 9D F1 02 STA cblk+3,X F8E2 68 PLA F8E3 60 RTS F8E4 84 E6 STY &E6 F8E6 2A ROL A F8E7 2A ROL A F8E8 2A ROL A F8E9 2A ROL A F8EA A0 04 LDY #4 F8EC 2A ROL A F8ED 3E EE 02 ROL cblk,X F8F0 3E EF 02 ROL cblk+1,X F8F3 3E F0 02 ROL cblk+2,X F8F6 3E F1 02 ROL cblk+3,X F8F9 B0 31 BCS &F92C F8FB 88 DEY F8FC D0 EE BNE &F8EC F8FE A4 E6 LDY &E6 F900 60 RTS F901 A9 FF .ALOAD LDA #&FF F903 86 F2 .ASAVE STX &F2 F905 84 F3 STY &F3 F907 8E EE 02 STX cblk F90A 8C EF 02 STY cblk+1 F90D 48 PHA F90E A2 02 LDX #2 F910 20 D3 F8 JSR &F8D3 F913 A0 FF LDY #&FF F915 8C F4 02 STY cblk+6 F918 C8 INY F919 20 0D FA JSR &FA0D F91C 20 1F FA JSR &FA1F F91F 90 FB BCC &F91C F921 68 PLA F922 48 PHA F923 F0 56 BEQ &F97B F925 20 66 F9 JSR &F966 F928 B0 2F BCS &F959 F92A F0 32 BEQ &F95E F92C 00 BRK F92D FC EQUB 252 F92E 42 61 64 20 61 64 64 72 65 73 73 EQUS "Bad address" F939 00 BRK F93A 08 .SPOOL PHP F93B 84 E6 STY &E6 F93D AC 57 02 LDY &257 F940 8D 57 02 STA &257 F943 F0 03 BEQ &F948 F945 20 CE FF JSR &FFCE F948 A4 E6 LDY &E6 F94A 28 PLP F94B F0 0B BEQ &F958 F94D A9 80 LDA #&80 F94F 20 CE FF JSR &FFCE F952 A8 TAY F953 F0 74 BEQ bdcom F955 8D 57 02 STA &257 F958 60 RTS F959 D0 6E BNE bdcom F95B EE F4 02 INC cblk+6 F95E A2 EE LDX #cblk MOD256 F960 A0 02 LDY #cblk / 256 F962 68 PLA F963 4C DD FF JMP &FFDD F966 20 69 F8 JSR &F869 F969 20 BE F8 JSR &F8BE F96C 90 0C BCC &F97A F96E 20 D3 F8 JSR &F8D3 F971 20 E4 F8 JSR &F8E4 F974 20 BE F8 JSR &F8BE F977 B0 F8 BCS &F971 F979 38 SEC F97A 60 RTS F97B A2 0A LDX #&A F97D 20 66 F9 JSR &F966 F980 90 47 BCC bdcom F982 B8 CLV F983 B1 F2 LDA (&F2),Y F985 C9 2B CMP #ASC"+" F987 D0 04 BNE &F98D F989 2C 25 F7 BIT sev F98C C8 INY F98D A2 0E LDX #&E F98F 20 66 F9 JSR &F966 F992 90 35 BCC bdcom F994 08 PHP F995 50 0F BVC &F9A6 F997 A2 FC LDX #&FC F999 18 CLC F99A BD FC 01 LDA cblk-&F2,X F99D 7D 00 02 ADC cblk-&EE,X F9A0 9D 00 02 STA cblk-&EE,X F9A3 E8 INX F9A4 D0 F4 BNE &F99A F9A6 A2 03 LDX #3 F9A8 BD F8 02 LDA cblk+10,X F9AB 9D F4 02 STA cblk+6,X F9AE 9D F0 02 STA cblk+2,X F9B1 CA DEX F9B2 10 F4 BPL &F9A8 F9B4 28 PLP F9B5 F0 A7 BEQ &F95E F9B7 A2 06 LDX #6 F9B9 20 66 F9 JSR &F966 F9BC 90 0B BCC bdcom F9BE F0 9E BEQ &F95E F9C0 A2 02 LDX #2 F9C2 20 66 F9 JSR &F966 F9C5 90 02 BCC bdcom F9C7 F0 95 BEQ &F95E F9C9 00 .bdcom BRK F9CA FE EQUB 254 F9CB 42 61 64 20 63 6F 6D 6D 61 6E 64 EQUS "Bad command" F9D6 00 BRK F9D7 60 .ASKEY RTS F9D8 20 7D F8 .FXAXY JSR &F87D F9DB 90 EC BCC bdcom F9DD 8A TXA F9DE 48 .FXXY PHA F9DF A9 00 LDA #0 F9E1 85 E5 STA &E5 F9E3 85 E4 STA &E4 F9E5 20 72 F8 JSR &F872 F9E8 F0 18 BEQ &FA02 F9EA 20 7D F8 JSR &F87D F9ED 90 DA BCC bdcom F9EF 86 E5 STX &E5 F9F1 20 74 F8 JSR &F874 F9F4 F0 0C BEQ &FA02 F9F6 20 7D F8 JSR &F87D F9F9 90 CE BCC bdcom F9FB 86 E4 STX &E4 F9FD 20 69 F8 JSR &F869 FA00 D0 C7 BNE bdcom FA02 A4 E4 LDY &E4 FA04 A6 E5 LDX &E5 FA06 68 PLA FA07 20 F4 FF JSR &FFF4 FA0A 70 BD BVS bdcom FA0C 60 RTS FA0D 18 CLC FA0E 66 E4 ROR &E4 FA10 20 69 F8 JSR &F869 FA13 C8 INY FA14 C9 22 CMP #ASC"""" FA16 F0 02 BEQ &FA1A FA18 88 DEY FA19 18 CLC FA1A 66 E4 ROR &E4 FA1C C9 0D CMP #&D FA1E 60 RTS FA1F A9 00 LDA #0 FA21 85 E5 STA &E5 FA23 B1 F2 LDA (&F2),Y FA25 C9 0D CMP #&D FA27 D0 06 BNE &FA2F FA29 24 E4 BIT &E4 FA2B 30 52 BMI &FA7F FA2D 10 1B BPL &FA4A FA2F C9 20 CMP #ASC" " FA31 90 4C BCC &FA7F FA33 D0 06 BNE &FA3B FA35 24 E4 BIT &E4 FA37 30 40 BMI &FA79 FA39 50 0F BVC &FA4A FA3B C9 22 CMP #ASC"""" FA3D D0 10 BNE &FA4F FA3F 24 E4 BIT &E4 FA41 10 36 BPL &FA79 FA43 C8 INY FA44 B1 F2 LDA (&F2),Y FA46 C9 22 CMP #ASC"""" FA48 F0 2F BEQ &FA79 FA4A 20 69 F8 JSR &F869 FA4D 38 SEC FA4E 60 RTS FA4F C9 7C CMP #ASC"|" FA51 D0 26 BNE &FA79 FA53 C8 INY FA54 B1 F2 LDA (&F2),Y FA56 C9 7C CMP #ASC"|" FA58 F0 1F BEQ &FA79 FA5A C9 22 CMP #ASC"""" FA5C F0 1B BEQ &FA79 FA5E C9 21 CMP #ASC"!" FA60 D0 05 BNE &FA67 FA62 C8 INY FA63 A9 80 LDA #&80 FA65 D0 BA BNE &FA21 FA67 C9 20 CMP #ASC" " FA69 90 14 BCC &FA7F FA6B C9 3F CMP #ASC"?" FA6D F0 08 BEQ &FA77 FA6F 20 AF FA JSR &FAAF FA72 2C 25 F7 BIT sev FA75 70 03 BVS &FA7A FA77 A9 7F LDA #&7F FA79 B8 CLV FA7A C8 INY FA7B 05 E5 ORA &E5 FA7D 18 CLC FA7E 60 RTS FA7F 00 BRK FA80 FD EQUB 253 FA81 42 61 64 20 73 74 72 69 6E 67 EQUS "Bad string" FA8B 00 BRK FA8C C9 30 CMP #&30 FA8E F0 1E BEQ &FAAE FA90 C9 40 CMP #&40 FA92 F0 1A BEQ &FAAE FA94 90 12 BCC &FAA8 FA96 C9 7F CMP #&7F FA98 F0 14 BEQ &FAAE FA9A B0 10 BCS &FAAC FA9C 49 30 EOR #&30 FA9E C9 6F CMP #&6F FAA0 F0 04 BEQ &FAA6 FAA2 C9 50 CMP #&50 FAA4 D0 02 BNE &FAA8 FAA6 49 1F EOR #&1F FAA8 C9 21 CMP #ASC"!" FAAA 90 02 BCC &FAAE FAAC 49 10 EOR #&10 FAAE 60 RTS FAAF C9 7F CMP #&7F FAB1 F0 0E BEQ &FAC1 FAB3 B0 E7 BCS &FA9C FAB5 C9 60 CMP #&60 FAB7 D0 02 BNE &FABB FAB9 A9 5F LDA #&5F FABB C9 40 CMP #&40 FABD 90 02 BCC &FAC1 FABF 29 1F AND #&1F FAC1 60 RTS FAC2 78 .reset SEI FAC3 D8 CLD FAC4 A2 FF LDX #255 FAC6 9A TXS FAC7 A2 1F LDX #vectnd-vectab+1 FAC9 BD 00 F7 .vloop LDA vectab,X FACC 9D 00 02 STA &200,X FACF CA DEX FAD0 10 F7 BPL vloop FAD2 E8 INX FAD3 BD 5E FB .titlelp LDA title,X FAD6 20 E3 FF JSR OSASCI FAD9 E8 INX FADA E0 0F CPX #etitle-title FADC D0 F5 BNE titlelp FADE 58 .osloop CLI FADF D8 CLD FAE0 A9 2A LDA #ASC"*" FAE2 20 EE FF JSR &FFEE FAE5 A9 00 LDA #0 FAE7 A2 20 LDX #oswblk MOD 256 FAE9 A0 F7 LDY #oswblk / 256 FAEB 20 F1 FF JSR OSWORD FAEE A2 00 LDX #buffer MOD 256 FAF0 A0 03 LDY #buffer / 256 FAF2 20 F7 FF JSR OSCLY FAF5 4C DE FA JMP osloop FAF8 85 FC .irq STA &FC FAFA 68 PLA FAFB 48 PHA FAFC 29 10 AND #16 FAFE D0 09 BNE brk FB00 A5 FC LDA &FC FB02 6C 04 02 JMP (&204) FB05 6C 06 02 .irq1v JMP (&206) FB08 40 .irq2v RTI FB09 8A .brk TXA FB0A 48 PHA FB0B BA TSX FB0C D8 CLD FB0D 38 SEC FB0E BD 03 01 LDA &103,X FB11 E9 01 SBC #1 FB13 85 FD STA &FD FB15 BD 04 01 LDA &104,X FB18 E9 00 SBC #0 FB1A 85 FE STA &FE FB1C 86 F0 STX &F0 FB1E 68 PLA FB1F AA TAX FB20 A5 FC LDA &FC FB22 58 CLI FB23 6C 02 02 JMP (&202) FB26 20 E7 FF .brkv JSR &FFE7 FB29 A0 01 LDY #1 FB2B B1 FD .brklp LDA (&FD),Y FB2D 20 EE FF JSR &FFEE FB30 C8 INY FB31 F0 03 BEQ brkend FB33 AA TAX FB34 D0 F5 BNE brklp FB36 20 E7 FF .brkend JSR OSNEWL FB39 4C DE FA JMP osloop FB3C 00 .badcom BRK FB3D FE EQUB 254 FB3E 42 61 64 20 63 6F 6D 6D 61 6E 64 EQUS "Bad command" FB49 00 .notio BRK FB4A FF EQUB 255 FB4B 43 61 6C 6C 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 EQUS "Call not available" FB5D 00 BRK FB5E 0C .title EQUB 12 FB5F 42 42 43 20 43 6F 6D 70 75 74 65 72 EQUS "BBC Computer" FB6B 0D EQUB 13 FB6C 0D EQUB 13 FB6D .etitle FB6D 4C 0C 03 .music JMP miscv FFB3 4C 49 FB JMP notio FFB6 20 EQUB vectnd-vectab+2 FFB7 00 F7 EQUW vectab FFB9 4C 49 FB JMP notio FFBC 4C 03 03 JMP wrchv FFBF 4C 49 FB JMP notio FFC2 4C 49 FB JMP notio FFC5 4C 49 FB JMP notio FFC8 4C 04 03 .NVRDCH JMP rdchv FFCB 4C 03 03 .NVWRCH JMP wrchv FFCE 6C 1C 02 .OSFIND JMP (&21C) FFD1 6C 1A 02 .OSGBPB JMP (&21A) FFD4 6C 18 02 .OSBPUT JMP (&218) FFD7 6C 16 02 .OSBGET JMP (&216) FFDA 6C 14 02 .OSARGS JMP (&214) FFDD 6C 12 02 .OSFILE JMP (&212) FFE0 6C 10 02 .OSRDCH JMP (&210) FFE3 C9 0D .OSASCI CMP #13 FFE5 D0 07 BNE OSWRCH FFE7 A9 0A .OSNEWL LDA #10 FFE9 20 EE FF JSR OSWRCH FFEC A9 0D LDA #13 FFEE 6C 0E 02 .OSWRCH JMP (&20E) FFF1 6C 0C 02 .OSWORD JMP (&20C) FFF4 6C 0A 02 .OSBYTE JMP (&20A) FFF7 6C 08 02 .OSCLY JMP (&208) FFFA 05 FB EQUW irq1v FFFC C2 FA EQUW reset FFFE F8 FA EQUW irq