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    <M01SYNC,PCR             ;2656: 30 8C 04       '0..'   LOCATE OS9 MODULE START
        LDD     $09,X                    ;2659: EC 09          '..'    LOCATE OS9 EXEC ADDRESS
        JMP     D,X                      ;265B: 6E 8B          'n.'    JUMP INTO OS9 MODULE

OS-9