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 2 byte execution start address follows the two-byte signature 'OS'.

The RELocate code copies the boot track from $2600 up into $F0001) and transfers control there into the Kernel (part 1) module after RELocation.

            ORG   $2602

EXECADDR    FDB   REL         ;2602: 26 0C         EXECUTION START ADDRESS
OS9_BOOT    FCC   "OSy`BOOT"  ;2604: 4F 53 79 60 42 4F 4F 54 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            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      ADDRESS OF NEW TEXT SCREEN TO START CLEARING
            LDY   #M0200      ;2621: 10 8E 02 00   THERE ARE 512 BYTES IN A TEXT SCREEN TO CLEAR
            LDA   #$60        ;2625: 86 60         LETS CLEAR IT WITH A SPACE
REL20       STA   ,X+         ;2627: A7 80         PUT THE SPACE ONTO THE SCREEN
            DEY               ;2629: 31 3F         COUNT DOWN 1
            BNE   REL20       ;262B: 26 FA         IF COUNT NOT YET ZERO, GO BACK TO REL20

; PUT BANNER ONTO SCREEN
            LDX   #M810C      ;262D: 8E 81 0C      ADDRESS OF SCREEN LOCATION TO PRINT AT
            LEAY  OS9_BOOT,PCR  ;2630: 31 8C D1    POINT TO START OF STRING
            LDB   #$08        ;2633: C6 08         SET THE LENGTH OF THE STRING
REL30       LDA   ,Y+         ;2635: A6 A0         LOAD A BYTE FROM STRING AND UPDATE PTR
            STA   ,X+         ;2637: A7 80         STORE THE BYTE ONTO THE SCREEN AND UPDATE PTR
            DECB              ;2639: 5A            COUNT DOWN ONE CHARACTER PRINTED
            BNE   REL30       ;263A: 26 F9         IF COUNT NOT YET ZERO, GO BACK TO REL30

; FIXME WHAT IS THIS
            TST   M0072       ;263C: 0D 72         FIXME TEST ALREADY RELOCATED FLAG?
            BEQ   REL50       ;263E: 27 13         YES, ALREADY RELOCATED JUST GO THERE

; START RELOCATING
            LEAU  >BOOTSIG,PCR  ;2640: 33 8D FF BC THE SOURCE ADDRESS TO RELOCATE FROM?
            LDX   #M0F00      ;2644: 8E 0F 00      HOW MANY BYTES ARE WE RELOCATING?
            LDY   #MF000      ;2647: 10 8E F0 00   WHERE ARE WE RELOCATING THEM TO?
REL40       LDA   ,U+         ;264B: A6 C0         GRAB 2 BYTES FROM SOURCE AND INCREMENT
            STA   ,Y+         ;264D: A7 A0         STORE AT DESTINATION AND INCREMENT
            DEX               ;264F: 30 1F         COUNT DOWN OUR NUMBER OF BYTES TO RELOCATE
            BNE   REL40       ;2651: 26 F8         IF COUNT NOT YET ZERO, GO BACK TO REL40

; RELOCATION COMPLETE, PREPARE FOR OS9 MODULE COLD START
REL50       JMP   ZF056       ;2653: 7E F0 56      JUMP TO RELOCATED MODULES
            LEAX  <M01SYNC,PCR  ;2656: 30 8C 04    LOCATE OS9 MODULE START
            LDD   $09,X       ;2659: EC 09         LOCATE OS9 EXEC ADDRESS
            JMP   D,X         ;265B: 6E 8B         JUMP INTO OS9 MODULE

OS-9

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies