1 2 ; LST OFF 3 ORG $0800 4 5 ******************************** 6 * * 7 * Beautiful Boot * 8 * by Mini Appler * 9 * >>> BOOT1 <<< * 10 * * 11 * Source by Deckard * 12 * * 13 ******************************** 14 15 * Page zero 16 17 BUFFERH EQU $27 ; buffer (high) of loading 18 SLOT16 EQU $2B ; slot * 16 19 SECTNUM EQU $3D ; sector number 20 21 * Rom 22 23 CLR80VID EQU $C00C ; disable 80 columns mode 24 25 * Boot 2 addr 26 27 BOOT2 EQU $B100 28 HB10B EQU $B10B ; SEC 29 HB10C EQU $B10C ; ROL 30 HB8CB EQU $B8CB ; EOR 31 32 ******************************** 33 0800: 01 34 DFB 1 ; boot0 must load 1 sector 35 0801: A5 27 36 LDA BUFFERH 0803: C9 09 37 CMP #$09 ; 1st run? 0805: D0 10 38 BNE H0817 ; no (new entry) 39 0807: A5 2B 40 LDA SLOT16 ; $Cslot (slot * 16) 0809: 4A 41 LSR 080A: 4A 42 LSR 080B: 4A 43 LSR 080C: 4A 44 LSR 080D: 09 C0 45 ORA #$C0 080F: 8D 30 08 46 STA H082E+2 0812: A9 00 47 LDA #0 ; 40 columns 0814: 8D 0C C0 48 STA CLR80VID 49 0817: AE 55 08 50 H0817 LDX LOAD_NBRPAG ; need to load other sectors? 081A: 30 15 51 BMI H0831 ; yes 52 081C: BD 45 08 53 LDA SKEWING,X ; parameters for loader 081F: 85 3D 54 STA SECTNUM ; sector # 0821: CE 55 08 55 DEC LOAD_NBRPAG ; pages-1 0824: AD 56 08 56 LDA LOAD_ADDRH ; buffer addr 0827: 85 27 57 STA BUFFERH 0829: CE 56 08 58 DEC LOAD_ADDRH ; for next sector 082C: A6 2B 59 LDX SLOT16 082E: 4C 5C 00 60 H082E JMP $005C ; JMP $C65C + RTS. Use the boot0 loader. 61 62 *------------------------------- 63 0831: A6 2B 64 H0831 LDX SLOT16 0833: A9 38 65 LDA #$38 ; SEC (before ROL) 0835: 8D 0B B1 66 STA HB10B 0838: A9 2E 67 LDA #$2E ; ROL (for protected message) 083A: 8D 0C B1 68 STA HB10C 083D: A9 52 69 LDA #$52 ; EOR #$52 083F: 8D CB B8 70 STA HB8CB 0842: 4C 00 B1 71 JMP BOOT2 ; run next level 72 73 *------------------------------- 74 0845: 00 0D 0B 75 SKEWING HEX 000D0B09070503010E0C0A080604020F 0848: 09 07 05 03 01 0E 0C 0A 0850: 08 06 04 02 0F 76 77 *------------------------------- 78 0855: 0F 79 LOAD_NBRPAG DFB $0F 0856: BF 80 LOAD_ADDRH DFB #>$BF00 81 0857: 00 00 00 82 DS \,0 085A: 00 00 00 00 00 00 00 00 0862: 00 00 00 00 00 00 00 00 086A: 00 00 00 00 00 00 00 00 0872: 00 00 00 00 00 00 00 00 087A: 00 00 00 00 00 00 00 00 0882: 00 00 00 00 00 00 00 00 088A: 00 00 00 00 00 00 00 00 0892: 00 00 00 00 00 00 00 00 089A: 00 00 00 00 00 00 00 00 08A2: 00 00 00 00 00 00 00 00 08AA: 00 00 00 00 00 00 00 00 08B2: 00 00 00 00 00 00 00 00 08BA: 00 00 00 00 00 00 00 00 08C2: 00 00 00 00 00 00 00 00 08CA: 00 00 00 00 00 00 00 00 08D2: 00 00 00 00 00 00 00 00 08DA: 00 00 00 00 00 00 00 00 08E2: 00 00 00 00 00 00 00 00 08EA: 00 00 00 00 00 00 00 00 08F2: 00 00 00 00 00 00 00 00 08FA: 00 00 00 00 00 00 83 SAV BOOT1 Object saved as BOOT1,A$0800,L$0100 --End assembly, 256 bytes, Errors: 0 Symbol table - alphabetical order: BOOT2 =$B100 BUFFERH =$27 CLR80VID =$C00C H0817 =$0817 H082E =$082E H0831 =$0831 HB10B =$B10B HB10C =$B10C HB8CB =$B8CB LOAD_ADDRH =$0856 LOAD_NBRPAG =$0855 SECTNUM =$3D SKEWING =$0845 SLOT16 =$2B Symbol table - numerical order: BUFFERH =$27 SLOT16 =$2B SECTNUM =$3D H0817 =$0817 H082E =$082E H0831 =$0831 SKEWING =$0845 LOAD_NBRPAG =$0855 LOAD_ADDRH =$0856 BOOT2 =$B100 HB10B =$B10B HB10C =$B10C HB8CB =$B8CB CLR80VID =$C00C