# HG changeset patch # User Tormod Volden # Date 1391982809 -3600 # Node ID 77500452de1c326988b4fcef4d5fe94bd7370d54 # Parent 62445183dc968753d99f491c4e7993780649b1f6 bootman: Rename assembler files to .as diff -r 62445183dc96 -r 77500452de1c bootman/boot_config.a --- a/bootman/boot_config.a Sun Feb 09 22:48:05 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - NAM boot_config - TTL Boot manager configuration - - PSECT bc,0,0,0,0,boot_config - -boot_config: - -* autoboot (1 = yes, 0 = no, use menu) -cfg_auto: fcb 0 - -* list of booters to be tried (in order, $0000 terminates list) -* entry format: booter entry point, address, device ID -cfg_boot: fdb llbt_1773,$FF40,0 - fdb llbt_1773,$FF40,1 -* fdb llbt_tc3,$FF70,0 -* fdb llbt_ide,$FF50,0 - fdb $0000 - - endsect diff -r 62445183dc96 -r 77500452de1c bootman/boot_config.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootman/boot_config.as Sun Feb 09 22:53:29 2014 +0100 @@ -0,0 +1,19 @@ + NAM boot_config + TTL Boot manager configuration + + PSECT bc,0,0,0,0,boot_config + +boot_config: + +* autoboot (1 = yes, 0 = no, use menu) +cfg_auto: fcb 0 + +* list of booters to be tried (in order, $0000 terminates list) +* entry format: booter entry point, address, device ID +cfg_boot: fdb llbt_1773,$FF40,0 + fdb llbt_1773,$FF40,1 +* fdb llbt_tc3,$FF70,0 +* fdb llbt_ide,$FF50,0 + fdb $0000 + + endsect diff -r 62445183dc96 -r 77500452de1c bootman/bootman.a --- a/bootman/bootman.a Sun Feb 09 22:48:05 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ - NAM bootman - TTL Boot Manager - -BOOTTRACK equ 0 - - - PSECT bootman,$11,$80,0,0,entry - - VSECT - ENDSECT - -TOP EQU $FE00 - -* The entry point of the boot manager -* Entry: stack is set up, U points to static storage - csect -sectptr rmb 2 - endsect - -entry lbsr mach_init initialize the machine we're running on - leas entry,pcr set up stack - leau entry-256,pcr set up static storage - leax entry-512,pcr set up sector buffer pointer - stx sectptr,u - leax welcome,pcr - bsr writestr - -* start booter calling -bootup - leax cfg_boot,pcr - ldy ,x get address of booter - beq bootup if 0, try again - -* call booter's get info entry - leax attempt,pcr - bsr writestr - jsr 12,y - bsr writestr - leax crlf,pcr - bsr writestr - -loop bra loop - - -attempt fcc "Attempting to boot from " - fcb 0 -welcome fcc "NitrOS-9 Boot Manager" -crlf fcb 13,10 - fcb 0 - -* Helpful routines - -* writestr - write string to output handler -* Entry: -* X = address of string (nul terminated) -* Preserves: -* Y -writestr: - pshs y - leay llio,pcr -writeloop - lda ,x+ - beq writedone - jsr 3,y - bra writeloop -writedone - puls y,pc - - endsect diff -r 62445183dc96 -r 77500452de1c bootman/bootman.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootman/bootman.as Sun Feb 09 22:53:29 2014 +0100 @@ -0,0 +1,69 @@ + NAM bootman + TTL Boot Manager + +BOOTTRACK equ 0 + + + PSECT bootman,$11,$80,0,0,entry + + VSECT + ENDSECT + +TOP EQU $FE00 + +* The entry point of the boot manager +* Entry: stack is set up, U points to static storage + csect +sectptr rmb 2 + endsect + +entry lbsr mach_init initialize the machine we're running on + leas entry,pcr set up stack + leau entry-256,pcr set up static storage + leax entry-512,pcr set up sector buffer pointer + stx sectptr,u + leax welcome,pcr + bsr writestr + +* start booter calling +bootup + leax cfg_boot,pcr + ldy ,x get address of booter + beq bootup if 0, try again + +* call booter's get info entry + leax attempt,pcr + bsr writestr + jsr 12,y + bsr writestr + leax crlf,pcr + bsr writestr + +loop bra loop + + +attempt fcc "Attempting to boot from " + fcb 0 +welcome fcc "NitrOS-9 Boot Manager" +crlf fcb 13,10 + fcb 0 + +* Helpful routines + +* writestr - write string to output handler +* Entry: +* X = address of string (nul terminated) +* Preserves: +* Y +writestr: + pshs y + leay llio,pcr +writeloop + lda ,x+ + beq writedone + jsr 3,y + bra writeloop +writedone + puls y,pc + + endsect diff -r 62445183dc96 -r 77500452de1c bootman/llbt_1773.a --- a/bootman/llbt_1773.a Sun Feb 09 22:48:05 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ - NAM llbt_1773 - TTL WD1773 low-level booter - - PSECT llbt_1773,0,0,0,0,llbt_1773 - - VSECT - ENDSECT - -llbt_1773: - lbsr llinit - lbsr llread - lbsr llwrite - lbsr llterm - lbsr llinfo - -llinit -llread -llwrite -llterm - rts - -llinfo leax info,pcr - rts - -info fcc "Floppy disk drive" - fcb 0 - - endsect diff -r 62445183dc96 -r 77500452de1c bootman/llbt_1773.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootman/llbt_1773.as Sun Feb 09 22:53:29 2014 +0100 @@ -0,0 +1,28 @@ + NAM llbt_1773 + TTL WD1773 low-level booter + + PSECT llbt_1773,0,0,0,0,llbt_1773 + + VSECT + ENDSECT + +llbt_1773: + lbsr llinit + lbsr llread + lbsr llwrite + lbsr llterm + lbsr llinfo + +llinit +llread +llwrite +llterm + rts + +llinfo leax info,pcr + rts + +info fcc "Floppy disk drive" + fcb 0 + + endsect diff -r 62445183dc96 -r 77500452de1c bootman/llio_6551.a --- a/bootman/llio_6551.a Sun Feb 09 22:48:05 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ - NAM llio_coco3 - TTL CoCo 3 low-level I/O handler - - PSECT llio_coco3,0,0,0,0,llio - - VSECT - ENDSECT - -llio: - lbsr llinit - lbsr llread - lbsr llwrite - lbsr llterm - -********** I/O ROUTINES ********** - -* 6551 Parameters -ADDR EQU $FF68 - -A_RXD EQU ADDR+$00 -A_TXD EQU ADDR+$00 -A_STATUS EQU ADDR+$01 -A_RESET EQU ADDR+$01 -A_CMD EQU ADDR+$02 -A_CTRL EQU ADDR+$03 - -* Baud rates -_B2400 EQU $1A 2400 bps, 8-N-1 -_B4800 EQU $1C 4800 bps, 8-N-1 -_B9600 EQU $1E 9600 bps, 8-N-1 -_B19200 EQU $1F 19200 bps, 8-N-1 - -BAUD EQU _B9600 - -* ll_init - Initialize the low-level I/O -* Exit: Carry = 0: Init success; Carry = 1; Init failed -llinit - sta A_RESET soft reset (value not important) -* Set specific modes and functions: -* - no parity, no echo, no Tx interrupt -* - no Rx interrupt, enable Tx/Rx - lda #$0B - sta A_CMD save to command register - lda #BAUD - sta A_CTRL select proper baud rate -* Read any junk rx byte that may be in the register - lda A_RXD - rts - - -* llread - Read one character from 6551 -* -* Entry: None -* Exit: A = character that was read -* -* Note, this routine currently doesn't timeout -llread -r lda A_STATUS get status byte - anda #$08 mask rx buffer status flag - beq r loop if rx buffer empty - lda A_RXD get byte from ACIA data port - rts - -* llwrite - Write one character to 6551 -* -* Entry: A = character to write -* Exit: None -llwrite - pshs a save byte to write -w lda A_STATUS get status byte - anda #$10 mask tx buffer status flag - beq w loop if tx buffer full - puls a get byte - sta A_TXD save to ACIA data port - rts - - -llterm - rts - - IFNE 0 -* llwout - Write an entire string -* llwerr - Write an entire string -llwerr -llwout - pshs a -l@ lda ,x+ - cmpa #C$CR - beq e@ - leay -1,y - beq f@ - bsr Write - bra l@ -e@ bsr Write - lda #C$LF - bsr Write -f@ ldx