OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [trunk/] [disk/] [tools/] [fs-EOS32/] [mkpboot/] [pbr.s] - Diff between revs 267 and 268

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 267 Rev 268
;
;
; pbr.s -- the partition boot record
; pbr.s -- the partition boot record
;
;
 
 
; Runtime environment:
; Runtime environment:
;
;
; This code must be loaded and started at 0xC0010000.
; This code must be loaded and started at 0xC0010000.
; It allocates a stack from 0xC0011000 downwards. So
; It allocates a stack from 0xC0011000 downwards. So
; it must run within 4K (code + data + stack).
; it must run within 4K (code + data + stack).
;
;
; This code expects the disk number of the boot disk
; This code expects the disk number of the boot disk
; in $16, the start sector of the disk or partition
; in $16, the start sector of the disk or partition
; to be booted in $17 and its size in $18.
; to be booted in $17 and its size in $18.
;
;
; NOTE: THIS IS A FAKE PARTITION BOOT RECORD!
; NOTE: THIS IS A FAKE PARTITION BOOT RECORD!
;       It doesn't load anything, but displays a message
;       It doesn't load anything, but displays a message
;       where the real thing can be downloaded from.
;       where the real thing can be downloaded from.
 
 
        .set    stacktop,0xC0011000     ; top of stack
        .set    stacktop,0xC0011000     ; top of stack
 
 
        .set    cout,0xC0000020         ; the monitor's console output
        .set    cout,0xC0000020         ; the monitor's console output
 
 
        ; display a message and halt
        ; display a message and halt
start:
start:
        add     $29,$0,stacktop          ; setup stack
        add     $29,$0,stacktop          ; setup stack
        add     $4,$0,strtmsg            ; say what is going on
        add     $4,$0,strtmsg            ; say what is going on
        jal     msgout
        jal     msgout
        j       halt
        j       halt
 
 
        ; output message
        ; output message
        ;   $4 pointer to string
        ;   $4 pointer to string
msgout:
msgout:
        sub     $29,$29,8
        sub     $29,$29,8
        stw     $31,$29,4
        stw     $31,$29,4
        stw     $16,$29,0
        stw     $16,$29,0
        add     $16,$4,0         ; $16: pointer to string
        add     $16,$4,0         ; $16: pointer to string
msgout1:
msgout1:
        ldbu    $4,$16,0         ; get character
        ldbu    $4,$16,0         ; get character
        beq     $4,$0,msgout2            ; done?
        beq     $4,$0,msgout2            ; done?
        jal     chrout                  ; output character
        jal     chrout                  ; output character
        add     $16,$16,1               ; bump pointer
        add     $16,$16,1               ; bump pointer
        j       msgout1                 ; continue
        j       msgout1                 ; continue
msgout2:
msgout2:
        ldw     $16,$29,0
        ldw     $16,$29,0
        ldw     $31,$29,4
        ldw     $31,$29,4
        add     $29,$29,8
        add     $29,$29,8
        jr      $31
        jr      $31
 
 
        ; output character
        ; output character
        ;   $4 character
        ;   $4 character
chrout:
chrout:
        sub     $29,$29,4
        sub     $29,$29,4
        stw     $31,$29,0
        stw     $31,$29,0
        add     $8,$0,cout
        add     $8,$0,cout
        jalr    $8
        jalr    $8
        ldw     $31,$29,0
        ldw     $31,$29,0
        add     $29,$29,4
        add     $29,$29,4
        jr      $31
        jr      $31
 
 
        ; halt execution by looping
        ; halt execution by looping
halt:
halt:
        add     $4,$0,hltmsg
        add     $4,$0,hltmsg
        jal     msgout
        jal     msgout
halt1:
halt1:
        j       halt1
        j       halt1
 
 
        ; messages
        ; messages
strtmsg:
strtmsg:
        .byte   "You didn't expect this tiny program to be "
        .byte   "You didn't expect this tiny program to be "
        .byte   "a full-fledged operating system, did you? ;-) "
        .byte   "a full-fledged operating system, did you? ;-) "
        .byte   "The real EOS32 for ECO32 is a project all by "
        .byte   "The real EOS32 for ECO32 is a project all by "
        .byze   "itself. You can find it on GitHub, under the "
        .byte   "itself. You can find it on GitHub, under the "
        .byte   "name 'eos32-on-eco32'.", 0x0D, 0x0A, 0
        .byte   "name 'eos32-on-eco32'.", 0x0D, 0x0A, 0
hltmsg:
hltmsg:
        .byte   "bootstrap halted", 0x0D, 0x0A, 0
        .byte   "bootstrap halted", 0x0D, 0x0A, 0
 
 
        ; boot record signature
        ; boot record signature
        .locate 512-2
        .locate 512-2
        .byte   0x55, 0xAA
        .byte   0x55, 0xAA
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.