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
1)
See also CoCo3 Boot Patch