===== REL ===== The first piece of OS-9 Level 1 loads from the boot track (track 34, sectors 1-18) into memory starting at $2600. A two-byte signature is followed by the 2 byte execution start address. The RELocate code copies the boot track from $2600 up into $F000 and transfers control there into the Kernel (part 1) module after RELocation. ORG $2600 BOOTSIG FCC "OS" ;2600: 4F 53 'OS' DOS BOOTTRACK OS SIGNATURE EXECADDR FDB REL ;2602: 26 0C '&.' EXECUTION START ADDRESS OS9_BOOT FCC "OSy`BOOT" ;2604: 4F 53 79 60 42 4F 4F 54 'OSy`BOOT' OS-9 BOOT SCREEN STRING ; START OF REL "MODULE" REL CLR PIA0BC ;260C: 7F FF 03 '...' DISABLE VSYNC STA SAMTYSET ;260F: B7 FF DF '...' SAM MAP TYPE=1 "ALL RAM" LDB #$06 ;2612: C6 06 '..' SET COUNTDOWN TO CLEAR 7 BITS (B=6) LDX #SAMF0CLR ;2614: 8E FF C6 '...' START WITH SAM DISPLAY OFFSET F0 BIT REL10 STA ,X++ ;2617: A7 81 '..' CLEAR THE DISPLAY OFFSET BIT THEN X=X+2 DECB ;2619: 5A 'Z' COUNT DOWN 1 BNE REL10 ;261A: 26 FB '&.' DID WE CLEAR OUR 7TH BIT (B=0) STA $01,X ;261C: A7 01 '..' YES, SET DISPLAY OFFSET SCREEN AT $8000 ; CLEAR SCREEN WITH SPACES LDX #M8000 ;261E: 8E 80 00 '...' LDY #M0200 ;2621: 10 8E 02 00 '....' LDA #$60 ;2625: 86 60 '.`' REL20 STA ,X+ ;2627: A7 80 '..' DEY ;2629: 31 3F '1?' BNE REL20 ;262B: 26 FA '&.' ; PUT BANNER ONTO SCREEN LDX #M810C ;262D: 8E 81 0C '...' LEAY OS9_BOOT,PCR ;2630: 31 8C D1 '1..' LDB #$08 ;2633: C6 08 '..' REL30 LDA ,Y+ ;2635: A6 A0 '..' STA ,X+ ;2637: A7 80 '..' DECB ;2639: 5A 'Z' BNE REL30 ;263A: 26 F9 '&.' ; FIXME WHAT IS THIS TST M0072 ;263C: 0D 72 '.r' FIXME TEST ALREADY RELOCATED FLAG? BEQ REL50 ;263E: 27 13 ''.' ; START RELOCATING LEAU >BOOTSIG,PCR ;2640: 33 8D FF BC '3...' LDX #M0F00 ;2644: 8E 0F 00 '...' LDY #MF000 ;2647: 10 8E F0 00 '....' REL40 LDA ,U+ ;264B: A6 C0 '..' STA ,Y+ ;264D: A7 A0 '..' DEX ;264F: 30 1F '0.' BNE REL40 ;2651: 26 F8 '&.' ; RELOCATION COMPLETE, PREPARE FOR OS9 MODULE COLD START REL50 JMP ZF056 ;2653: 7E F0 56 '~.V' JUMP TO RELOCATED MODULES LEAX ▲ [[:OS-9:]]