Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
os-9:rel [2023/08/10 22:49] – created robertos-9:rel [2025/02/04 22:06] (current) – additional notes and cleanup robert
Line 3: Line 3:
 The first piece of OS-9 Level 1 loads from the boot track (track 34, sectors 1-18) into memory starting at $2600. The first piece of OS-9 Level 1 loads from the boot track (track 34, sectors 1-18) into memory starting at $2600.
  
-two-byte signature is followed by the 2 byte execution start address.+A 2 byte execution start address follows the two-byte signature 'OS'.
  
-The RELocate code copies the boot track from $2600 up into $F000 and transfers control there into the Kernel (part 1) module after RELocation.+The RELocate code copies the boot track from $2600 up into $F000((See also [[CoCo3 Boot Patch]])) and transfers control there into the Kernel (part 1) module after RELocation.
  
 <code> <code>
-        ORG     $2600+            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
  
-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" ; START OF REL "MODULE"
-REL     CLR     PIA0BC                   ;260C: 7F FF 03       '...'   DISABLE VSYNC +REL         CLR   PIA0BC      ;260C: 7F FF 03      DISABLE VSYNC 
-        STA     SAMTYSET                 ;260F: B7 FF DF       '...'   SAM MAP TYPE=1 "ALL RAM" +            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) +            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 +            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 +REL10       STA   ,X++        ;2617: A7 81         CLEAR THE DISPLAY OFFSET BIT THEN X=X+2 
-        DECB                             ;2619: 5A             'Z'     COUNT DOWN 1 +            DECB              ;2619: 5A            COUNT DOWN 1 
-        BNE     REL10                    ;261A: 26 FB          '&.'    DID WE CLEAR OUR 7TH BIT (B=0) +            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+            STA   $01,X       ;261C: A7 01         YES, SET DISPLAY OFFSET SCREEN AT $8000 
 ; CLEAR SCREEN WITH SPACES ; CLEAR SCREEN WITH SPACES
-        LDX     #M8000                   ;261E: 8E 80 00       '...' +            LDX   #M8000      ;261E: 8E 80 00      ADDRESS OF NEW TEXT SCREEN TO START CLEARING 
-        LDY     #M0200                   ;2621: 10 8E 02 00    '....' +            LDY   #M0200      ;2621: 10 8E 02 00   THERE ARE 512 BYTES IN A TEXT SCREEN TO CLEAR 
-        LDA     #$60                     ;2625: 86 60          '.`' +            LDA   #$60        ;2625: 86 60         LETS CLEAR IT WITH A SPACE 
-REL20   STA     ,X+                      ;2627: A7 80          '..' +REL20       STA   ,X+         ;2627: A7 80         PUT THE SPACE ONTO THE SCREEN 
-        DEY                              ;2629: 31 3F          '1?' +            DEY               ;2629: 31 3F         COUNT DOWN 
-        BNE     REL20                    ;262B: 26 FA          '&.'+            BNE   REL20       ;262B: 26 FA         IF COUNT NOT YET ZERO, GO BACK TO REL20 
 ; PUT BANNER ONTO SCREEN ; PUT BANNER ONTO SCREEN
-        LDX     #M810C                   ;262D: 8E 81 0C       '...' +            LDX   #M810C      ;262D: 8E 81 0C      ADDRESS OF SCREEN LOCATION TO PRINT AT 
-        LEAY    OS9_BOOT,PCR             ;2630: 31 8C D1       '1..' +            LEAY  OS9_BOOT,PCR  ;2630: 31 8C D1    POINT TO START OF STRING 
-        LDB     #$08                     ;2633: C6 08          '..' +            LDB   #$08        ;2633: C6 08         SET THE LENGTH OF THE STRING 
-REL30   LDA     ,Y+                      ;2635: A6 A0          '..' +REL30       LDA   ,Y+         ;2635: A6 A0         LOAD A BYTE FROM STRING AND UPDATE PTR 
-        STA     ,X+                      ;2637: A7 80          '..' +            STA   ,X+         ;2637: A7 80         STORE THE BYTE ONTO THE SCREEN AND UPDATE PTR 
-        DECB                             ;2639: 5A             'Z' +            DECB              ;2639: 5A            COUNT DOWN ONE CHARACTER PRINTED 
-        BNE     REL30                    ;263A: 26 F9          '&.'+            BNE   REL30       ;263A: 26 F9         IF COUNT NOT YET ZERO, GO BACK TO REL30 
 ; FIXME WHAT IS THIS ; FIXME WHAT IS THIS
-        TST     M0072                    ;263C: 0D 72          '.r'    FIXME TEST ALREADY RELOCATED FLAG? +            TST   M0072       ;263C: 0D 72         FIXME TEST ALREADY RELOCATED FLAG? 
-        BEQ     REL50                    ;263E: 27 13          ''.'+            BEQ   REL50       ;263E: 27 13         YES, ALREADY RELOCATED JUST GO THERE 
 ; START RELOCATING ; START RELOCATING
-        LEAU    >BOOTSIG,PCR             ;2640: 33 8D FF BC    '3...' +            LEAU  >BOOTSIG,PCR  ;2640: 33 8D FF BC THE SOURCE ADDRESS TO RELOCATE FROM? 
-        LDX     #M0F00                   ;2644: 8E 0F 00       '...' +            LDX   #M0F00      ;2644: 8E 0F 00      HOW MANY BYTES ARE WE RELOCATING? 
-        LDY     #MF000                   ;2647: 10 8E F0 00    '....' +            LDY   #MF000      ;2647: 10 8E F0 00   WHERE ARE WE RELOCATING THEM TO? 
-REL40   LDA     ,U+                      ;264B: A6 C0          '..' +REL40       LDA   ,U+         ;264B: A6 C0         GRAB 2 BYTES FROM SOURCE AND INCREMENT 
-        STA     ,Y+                      ;264D: A7 A0          '..' +            STA   ,Y+         ;264D: A7 A0         STORE AT DESTINATION AND INCREMENT 
-        DEX                              ;264F: 30 1F          '0.' +            DEX               ;264F: 30 1F         COUNT DOWN OUR NUMBER OF BYTES TO RELOCATE 
-        BNE     REL40                    ;2651: 26 F8          '&.'+            BNE   REL40       ;2651: 26 F8         IF COUNT NOT YET ZERO, GO BACK TO REL40 
 ; RELOCATION COMPLETE, PREPARE FOR OS9 MODULE COLD START ; RELOCATION COMPLETE, PREPARE FOR OS9 MODULE COLD START
-REL50   JMP     ZF056                    ;2653: 7E F0 56       '~.V'   JUMP TO RELOCATED MODULES +REL50       JMP   ZF056       ;2653: 7E F0 56      JUMP TO RELOCATED MODULES 
-        LEAX    <M01SYNC,PCR             ;2656: 30 8C 04       '0..'   LOCATE OS9 MODULE START +            LEAX  <M01SYNC,PCR  ;2656: 30 8C 04    LOCATE OS9 MODULE START 
-        LDD     $09,X                    ;2659: EC 09          '..'    LOCATE OS9 EXEC ADDRESS +            LDD   $09,X       ;2659: EC 09         LOCATE OS9 EXEC ADDRESS 
-        JMP     D,X                      ;265B: 6E 8B          'n.'    JUMP INTO OS9 MODULE+            JMP   D,X         ;265B: 6E 8B         JUMP INTO OS9 MODULE
 </code> </code>
  
 ▲ [[:OS-9:]] ▲ [[:OS-9:]]