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

Subversion Repositories raptor64

[/] [raptor64/] [trunk/] [software/] [sample code/] [bootrom.lst] - Diff between revs 10 and 27

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 10 Rev 27
Line 1... Line 1...
 
                                                ; ============================================================================
 
                                                 ; (C) 2012 Robert Finch
 
                                                 ; All Rights Reserved.
 
                                                 ; robfinch@opencores.org
 
                                                 ;
 
                                                 ; This source file is free software: you can redistribute it and/or modify
 
                                                 ; it under the terms of the GNU Lesser General Public License as published
 
                                                 ; by the Free Software Foundation, either version 3 of the License, or
 
                                                 ; (at your option) any later version.
 
                                                 ;
 
                                                 ; This source file is distributed in the hope that it will be useful,
 
                                                 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
 
                                                 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
                                                 ; GNU General Public License for more details.
 
                                                 ;
 
                                                 ; You should have received a copy of the GNU General Public License
 
                                                 ; along with this program.  If not, see .
 
                                                 ;
 
                                                 ; ============================================================================
 
                                                 ;
 
                                                 CR     EQU     0x0D            ;ASCII equates
 
                                                 LF     EQU     0x0A
 
                                                 TAB    EQU     0x09
 
                                                 CTRLC  EQU     0x03
 
                                                 CTRLH  EQU     0x08
 
                                                 CTRLS  EQU     0x13
 
                                                 CTRLX  EQU     0x18
 
 
 
                                                 STACKTOP       EQU             0xFFFF_FFFF_FFFE_FFF8
 
                                                 Milliseconds   EQU             0x400
 
                                                 Lastloc                        EQU             0x408
 
                                                 ScreenColor    EQU             0x414
 
                                                 CursorRow      EQU             0x416
 
                                                 CursorCol      EQU             0x418
 
                                                 KeybdEcho      EQU             0x41A
 
                                                 KeybdBuffer    EQU             0x440
 
                                                 KeybdHead      EQU             0x450
 
                                                 KeybdTail      EQU             0x451
 
                                                 TEXTSCR                EQU             0xFFFF_FFFF_FFD0_0000
 
                                                 COLORSCR       EQU             0xFFFF_FFFF_FFD1_0000
 
                                                 TEXTREG                EQU             0xFFFFFFFF_FFDA0000
 
                                                 TEXT_COLS      EQU             0x0
 
                                                 TEXT_ROWS      EQU             0x2
 
                                                 TEXT_CURPOS    EQU             0x16
 
                                                 KEYBD          EQU             0xFFFF_FFFF_FFDC_0000
 
                                                 KEYBDCLR       EQU             0xFFFF_FFFF_FFDC_0002
 
                                                 UART   EQU             0xFFFF_FFFF_FFDC_0A00
 
                                                 UART_LS                EQU     0xFFFF_FFFF_FFDC_0A01
 
                                                 PIC            EQU             0xFFFF_FFFF_FFDC_0FF0
 
                                                 PSG                    EQU             0xFFFF_FFFF_FFD5_0000
 
                                                 AC97           EQU             0xFFFF_FFFF_FFDC_1000
 
                                                 BOOT_STACK     EQU             0xFFFF_FFFF_FFFE_FFF8
 
                                                 BITMAPSCR      EQU             0x00000001_00200000
 
 
 
                                                 txempty        EQU             0x40
 
                                                 rxfull EQU             0x01
 
 
 
                                                 ;      org 0x070
 
                                                 ;      iret
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;      nop
 
                                                 ;
 
0000000000000000.0                                      code
 
FFFFFFFFFFFFE800.0                                      org 0xFFFF_FFFF_FFFF_E800
 
 
 
                                                 ; jump table
 
                                                 ;
 
FFFFFFFFFFFFE800.0      0CFFFFFFA54                     jmp             SerialGetChar
 
FFFFFFFFFFFFE800.1      0CFFFFFFA60                     jmp             SerialPutChar
 
FFFFFFFFFFFFE800.2      0CFFFFFFA90                     jmp             SetKeyboardEcho
 
FFFFFFFFFFFFE810.0      0CFFFFFFAA6                     jmp             KeybdCheckForKey
 
FFFFFFFFFFFFE810.1      0CFFFFFFA92                     jmp             KeybdGetChar
 
FFFFFFFFFFFFE810.2      0CFFFFFFB65                     jmp             DisplayChar
 
FFFFFFFFFFFFE820.0      0CFFFFFFBF5                     jmp             DisplayString
 
 
 
FFFFFFFFFFFFE820.1                               start:
 
                                                 ;      lea             MSGRAM,a1
 
                                                 ;      jsr             DisplayString
 
 
 
FFFFFFFFFFFFE820.1                               ColdStart:
 
FFFFFFFFFFFFE820.1      0000000000A                     icache_on                               ; turn on the ICache
 
FFFFFFFFFFFFE820.2      0000000000C                     dcache_on                               ; turn on the DCache
 
FFFFFFFFFFFFE830.0      0BEFFFEFFF8                     setlo   sp,#STACKTOP    ; top of stack
 
FFFFFFFFFFFFE830.1      0C7FFFFFA6E                     call    KeybdInit
 
FFFFFFFFFFFFE830.2      0C7FFFFFA50                     call    PICInit
 
FFFFFFFFFFFFE840.0      00000000040                     cli                                             ; enable interrupts
 
FFFFFFFFFFFFE840.1      0A3000000CE                     setlo   r3,#0xCE                ; blue on blue
 
FFFFFFFFFFFFE840.2      18806000414                     sc              r3,ScreenColor
 
FFFFFFFFFFFFE850.0      10806000414                     lc              r3,0x414
 
FFFFFFFFFFFFE850.1      0A300000020                     setlo   r3,#32
 
FFFFFFFFFFFFE850.2      18806000416                     sc              r3,0x416                ; we do a store, then a load through the dcache
 
FFFFFFFFFFFFE860.0      10804000416                     lc              r2,0x416                ;
 
FFFFFFFFFFFFE860.1      10804000416                     lc              r2,0x416                ;
 
FFFFFFFFFFFFE860.2      2F8860000A8                     beq             r2,r3,dcokay
 
FFFFFFFFFFFFE870.0      0000000000D                     dcache_off                              ; data cache failed
 
FFFFFFFFFFFFE870.1                               dcokay:
 
FFFFFFFFFFFFE870.1      10806000414                     lc              r3,ScreenColor
 
FFFFFFFFFFFFE870.2      0C7FFFFFB06                     call    ClearScreen
 
FFFFFFFFFFFFE880.0      0C7FFFFFAF4                     call    ClearBmpScreen
 
FFFFFFFFFFFFE880.1      18800000416                     sc              r0,CursorRow
 
FFFFFFFFFFFFE880.2      18800000418                     sc              r0,CursorCol
 
FFFFFFFFFFFFE890.0      0A1FFFFE920                     setlo   r1,#
 
FFFFFFFFFFFFE890.1      0E1FFFFFFFF                     sethi   r1,#>MSGSTART
 
FFFFFFFFFFFFE890.2      0C7FFFFFBF5                     call    DisplayString
 
                                                 ;      call    SetupAC97               ; and Beep
 
 
 
                                                 ; Allow some other contexts to start up
 
                                                 ; equal processing time for sixteen contexts
 
                                                 ;
 
FFFFFFFFFFFFE8A0.0      00802000AA8                     mfspr   r1,AXC                  ; which context am I
 
FFFFFFFFFFFFE8A0.1      2F840000149                     bne             r1,r0,j4
 
FFFFFFFFFFFFE8A0.2      0A176543210                     setlo   r1,#0x76543210
 
FFFFFFFFFFFFE8B0.0      008400008A9                     mtspr   EP0,r1
 
FFFFFFFFFFFFE8B0.1      008400009A9                     mtspr   EP2,r1
 
FFFFFFFFFFFFE8B0.2      0A1FEDCBA98                     setlo   r1,#0xFEDCBA98
 
FFFFFFFFFFFFE8C0.0      00840000929                     mtspr   EP1,r1
 
FFFFFFFFFFFFE8C0.1      00840000A29                     mtspr   EP3,r1
 
FFFFFFFFFFFFE8C0.2                               j4:
 
FFFFFFFFFFFFE8C0.2      0CFFFFFFCA6                     jmp             Monitor
 
FFFFFFFFFFFFE8D0.0      2F801FFFFCA                     bra             j4
 
 
 
                                                 ;      call    ramtest
 
 
 
                                                 ;-----------------------------------------
 
                                                 ; Hello World!
 
                                                 ;-----------------------------------------
 
FFFFFFFFFFFFE8D0.1                               HelloWorld:
 
FFFFFFFFFFFFE8D0.1      03FBC000018                     subui   r30,r30,#24
 
FFFFFFFFFFFFE8D0.2      27F40000003                     sm              [r30],r1/r2/r31
 
FFFFFFFFFFFFE8E0.0      0A2FFFFE910                     setlo   r2,#MSG
 
FFFFFFFFFFFFE8E0.1                               j3:
 
FFFFFFFFFFFFE8E0.1      10082000000                     lb              r1,[r2]
 
FFFFFFFFFFFFE8E0.2      2F840000108                     beq             r1,r0,j2
 
FFFFFFFFFFFFE8F0.0      0C7FFFFFA60                     call    SerialPutChar
 
FFFFFFFFFFFFE8F0.1      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFE8F0.2      2F801FFFFAA                     bra             j3
 
FFFFFFFFFFFFE900.0                               j2:
 
FFFFFFFFFFFFE900.0      27740000003                     lm              [r30],r1/r2/r31
 
FFFFFFFFFFFFE900.1      0DFBE000018                     ret             #24
 
 
 
 
 
FFFFFFFFFFFFE900.2      37800000000                     align   16
 
FFFFFFFFFFFFE910.0                                      align   16
 
FFFFFFFFFFFFE910.0                               MSG:
 
FFFFFFFFFFFFE910 6F57206F6C6C6548               DB      "Hello World!",0,0,0,0
 
FFFFFFFFFFFFE918 0000000021646C72
 
FFFFFFFFFFFFE920.0                                      align   16
 
FFFFFFFFFFFFE920.0                               MSGSTART:
 
FFFFFFFFFFFFE920 3436726F74706152               db      "Raptor64 system starting....",CR,LF,0,0
 
FFFFFFFFFFFFE928 206D657473797320
 
FFFFFFFFFFFFE930 676E697472617473
 
FFFFFFFFFFFFE938 00000A0D2E2E2E2E
 
 
 
FFFFFFFFFFFFE940.0                                      align 16
 
 
 
                                                 ;----------------------------------------------------------
 
                                                 ; Initialize programmable interrupt controller (PIC)
 
                                                 ;  0 = nmi
 
                                                 ;  1 = keyboard reset
 
                                                 ;  2 = 1000Hz pulse (cursor flash)
 
                                                 ; 15 = keyboard char
 
                                                 ;----------------------------------------------------------
 
FFFFFFFFFFFFE940.0                               PICInit:
 
FFFFFFFFFFFFE940.0      0A1FFFF8007                     setlo   r1,#0x8007      ; enable nmi,kbd_rst,and kbd_irq
 
FFFFFFFFFFFFE940.1      24803DC0FF2                     outc    r1,PIC+2
 
FFFFFFFFFFFFE940.2      0DFBE000000                     ret
 
 
 
                                                 ;-----------------------------------------
 
                                                 ; Get character from serial port
 
                                                 ;-----------------------------------------
 
FFFFFFFFFFFFE950.0                               SerialGetChar:
 
FFFFFFFFFFFFE950.0      03FBC000008                     subui   r30,r30,#8
 
FFFFFFFFFFFFE950.1      19F86000000                     sw              r3,[r30]
 
FFFFFFFFFFFFE950.2      0A1FFDC0A00                     setlo   r1,#UART
 
FFFFFFFFFFFFE960.0                               sgc1:
 
FFFFFFFFFFFFE960.0      20046000001                     inb             r3,1[r1]                ; uart status
 
FFFFFFFFFFFFE960.1      050C6000001                     andi    r3,r3,#rxfull   ; is there a char available ?
 
FFFFFFFFFFFFE960.2      2F8C0000008                     beq             r3,r0,sgc1
 
FFFFFFFFFFFFE970.0      11F86000000                     lw              r3,[r30]
 
FFFFFFFFFFFFE970.1      20042000000                     inb             r1,[r1]
 
FFFFFFFFFFFFE970.2      0DFBE000008                     ret             #8
 
 
 
                                                 ;-----------------------------------------
 
                                                 ; Put character to serial port
 
                                                 ;-----------------------------------------
 
FFFFFFFFFFFFE980.0                               SerialPutChar:
 
FFFFFFFFFFFFE980.0      03FBC000010                     subui   r30,r30,#16
 
FFFFFFFFFFFFE980.1      19F84000008                     sw              r2,8[r30]
 
FFFFFFFFFFFFE980.2      19F86000000                     sw              r3,[r30]
 
FFFFFFFFFFFFE990.0      0A3FFDC0A00                     setlo   r3,#UART
 
FFFFFFFFFFFFE990.1                               spc1:
 
FFFFFFFFFFFFE990.1      200C4000001                     inb             r2,1[r3]                ; uart status
 
FFFFFFFFFFFFE990.2      05084000040                     andi    r2,r2,#txempty  ; is there a char available ?
 
FFFFFFFFFFFFE9A0.0      2F881FFFFA8                     beq             r2,r0,spc1
 
FFFFFFFFFFFFE9A0.1      240C2000000                     outb    r1,[r3]
 
FFFFFFFFFFFFE9A0.2      11F86000000                     lw              r3,[r30]
 
FFFFFFFFFFFFE9B0.0      11F84000008                     lw              r2,8[r30]
 
FFFFFFFFFFFFE9B0.1      0DFBE000010                     ret             #16
 
 
 
                                                 ;==============================================================================
 
                                                 ; Keyboard
 
                                                 ;==============================================================================
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Initialize keyboard
 
                                                 ;------------------------------------------------------------------------------
 
FFFFFFFFFFFFE9B0.2                               KeybdInit:
 
FFFFFFFFFFFFE9B0.2      18000000450                     sb              r0,KeybdHead
 
FFFFFFFFFFFFE9C0.0      18000000451                     sb              r0,KeybdTail
 
FFFFFFFFFFFFE9C0.1      0A100000001                     setlo   r1,#1                   ; turn on keyboard echo
 
FFFFFFFFFFFFE9C0.2      1800200041A                     sb              r1,KeybdEcho
 
FFFFFFFFFFFFE9D0.0      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Normal keyboard interrupt, the lowest priority interrupt in the system.
 
                                                 ; Grab the character from the keyboard device and store it in a buffer.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFE9D0.1                               KeybdIRQ:
 
FFFFFFFFFFFFE9D0.1      03FBC000018                     subui   sp,sp,#24
 
FFFFFFFFFFFFE9D0.2      27F00000007                     sm              [sp],r1/r2/r3
 
FFFFFFFFFFFFE9E0.0      12802000450                     lbu             r1,KeybdHead
 
FFFFFFFFFFFFE9E0.1      0504200000F                     andi    r1,r1,#0x0f                             ; r1 = index into buffer
 
FFFFFFFFFFFFE9E0.2      0A300000440                     setlo   r3,#
 
FFFFFFFFFFFFE9F0.0      0E300000000                     sethi   r3,#>KeybdBuffer
 
FFFFFFFFFFFFE9F0.1                               KeybdIRQa:
 
FFFFFFFFFFFFE9F0.1      20805DC0000                     inch    r2,KEYBD                                ; get keyboard character
 
FFFFFFFFFFFFE9F0.2      24801DC0002                     outc    r0,KEYBD+2                              ; clear keyboard strobe (turns off the IRQ)
 
FFFFFFFFFFFFEA00.0      1A8C2200010                     sb              r2,[r3+r1]                              ; store character in buffer
 
FFFFFFFFFFFFEA00.1      02842000001                     addui   r1,r1,#1                                ; increment head index
 
FFFFFFFFFFFFEA00.2      0504200000F                     andi    r1,r1,#0x0f
 
FFFFFFFFFFFFEA10.0      18002000450                     sb              r1,KeybdHead
 
FFFFFFFFFFFFEA10.1                               KeybdIRQb:
 
FFFFFFFFFFFFEA10.1      12804000451                     lbu             r2,KeybdTail                    ; check to see if we've collided
 
FFFFFFFFFFFFEA10.2      2F844000109                     bne             r1,r2,KeybdIRQc                 ; with the tail
 
FFFFFFFFFFFFEA20.0      02884000001                     addui   r2,r2,#1                                ; if so, increment the tail index
 
FFFFFFFFFFFFEA20.1      0508400000F                     andi    r2,r2,#0x0f                             ; the oldest character will be lost
 
FFFFFFFFFFFFEA20.2      18004000451                     sb              r2,KeybdTail
 
FFFFFFFFFFFFEA30.0                               KeybdIRQc:
 
FFFFFFFFFFFFEA30.0      27700000007                     lm              [sp],r1/r2/r3
 
FFFFFFFFFFFFEA30.1      02FBC000018                     addui   sp,sp,#24
 
FFFFFFFFFFFFEA30.2      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; r1 0=echo off, non-zero = echo on
 
                                                 ;------------------------------------------------------------------------------
 
FFFFFFFFFFFFEA40.0                               SetKeyboardEcho:
 
FFFFFFFFFFFFEA40.0      1800200041A                     sb              r1,KeybdEcho
 
FFFFFFFFFFFFEA40.1      0DFBE000000                     ret
 
 
 
                                                 ;-----------------------------------------
 
                                                 ; Get character from keyboard buffer
 
                                                 ;-----------------------------------------
 
FFFFFFFFFFFFEA40.2                               KeybdGetChar:
 
FFFFFFFFFFFFEA40.2      03FBC000010                     subui   sp,sp,#16
 
FFFFFFFFFFFFEA50.0      27F00000006                     sm              [sp],r2/r3
 
FFFFFFFFFFFFEA50.1      12804000451                     lbu             r2,KeybdTail
 
FFFFFFFFFFFFEA50.2      12802000450                     lbu             r1,KeybdHead
 
FFFFFFFFFFFFEA60.0      2F844000148                     beq             r1,r2,nochar
 
FFFFFFFFFFFFEA60.1      0A300000440                     setlo   r3,#KeybdBuffer
 
FFFFFFFFFFFFEA60.2      1A8C4100005                     lbu             r1,[r3+r2]
 
FFFFFFFFFFFFEA70.0      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFEA70.1      0508400000F                     andi    r2,r2,#0x0f
 
FFFFFFFFFFFFEA70.2      18004000451                     sb              r2,KeybdTail
 
FFFFFFFFFFFFEA80.0      27700000006                     lm              [sp],r2/r3
 
FFFFFFFFFFFFEA80.1      0DFBE000010                     ret             #16
 
FFFFFFFFFFFFEA80.2                               nochar:
 
FFFFFFFFFFFFEA80.2      0A1FFFFFFFF                     setlo   r1,#-1
 
FFFFFFFFFFFFEA90.0      27700000006                     lm              [sp],r2/r3
 
FFFFFFFFFFFFEA90.1      0DFBE000010                     ret             #16
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Check if there is a keyboard character available in the keyboard buffer.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEA90.2                               KeybdCheckForKey:
 
FFFFFFFFFFFFEA90.2      12802000451                     lbu             r1,KeybdTail
 
FFFFFFFFFFFFEAA0.0      12804000450                     lbu             r2,KeybdHead
 
FFFFFFFFFFFFEAA0.1      2F8440000A8                     beq             r1,r2,kck1
 
FFFFFFFFFFFFEAA0.2      0A100000001                     setlo   r1,#1
 
FFFFFFFFFFFFEAB0.0      0DFBE000000                     ret
 
FFFFFFFFFFFFEAB0.1                               kck1:
 
FFFFFFFFFFFFEAB0.1      0104210000A                     xor             r1,r1,r1                ; return zero
 
FFFFFFFFFFFFEAB0.2      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Check if there is a keyboard character available. If so return true (1)
 
                                                 ; otherwise return false (0) in r1.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEAC0.0                               KeybdCheckForKeyDirect:
 
FFFFFFFFFFFFEAC0.0      20803DC0000                     inch    r1,KEYBD
 
FFFFFFFFFFFFEAC0.1      2F8400000A1                     bge             r1,r0,cfkd1
 
FFFFFFFFFFFFEAC0.2      0A100000001                     setlo   r1,#1
 
FFFFFFFFFFFFEAD0.0      0DFBE000000                     ret
 
FFFFFFFFFFFFEAD0.1                               cfkd1:
 
FFFFFFFFFFFFEAD0.1      0104210000A                     xor             r1,r1,r1        ; return 0 in r1
 
FFFFFFFFFFFFEAD0.2      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Get character directly from keyboard. This routine blocks until a key is
 
                                                 ; available.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEAE0.0                               KeybdGetCharDirect:
 
FFFFFFFFFFFFEAE0.0      03FBC000010                     subui   sp,sp,#16
 
FFFFFFFFFFFFEAE0.1      27F40000002                     sm              [sp],r2/r31
 
FFFFFFFFFFFFEAE0.2      0A2FFDC0000                     setlo   r2,KEYBD
 
FFFFFFFFFFFFEAF0.0                               kgc1:
 
FFFFFFFFFFFFEAF0.0      20803DC0000                     inch    r1,KEYBD
 
FFFFFFFFFFFFEAF0.1      2F840000001                     bge             r1,r0,kgc1
 
FFFFFFFFFFFFEAF0.2      24801DC0002                     outc    r0,KEYBD+2              ; clear keyboard strobe
 
FFFFFFFFFFFFEB00.0      050420000FF                     andi    r1,r1,#0xff             ; remove strobe bit
 
FFFFFFFFFFFFEB00.1      1000400041A                     lb              r2,KeybdEcho    ; is keyboard echo on ?
 
FFFFFFFFFFFFEB00.2      2F880000128                     beq             r2,r0,gk1
 
FFFFFFFFFFFFEB10.0      2C84010000D                     bnei    r1,#'\r',gk2    ; convert CR keystroke into CRLF
 
FFFFFFFFFFFFEB10.1      0C7FFFFFC09                     call    CRLF
 
FFFFFFFFFFFFEB10.2      2F8000000AA                     bra             gk1
 
FFFFFFFFFFFFEB20.0                               gk2:
 
FFFFFFFFFFFFEB20.0      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFEB20.1                               gk1:
 
FFFFFFFFFFFFEB20.1      27740000002                     lm              [sp],r2/r31
 
FFFFFFFFFFFFEB20.2      0DFBE000010                     ret             #16
 
 
 
                                                 ;==============================================================================
 
                                                 ;==============================================================================
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; 1000 Hz interrupt
 
                                                 ; - takes care of "flashing" the cursor
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEB30.0                               Pulse1000:
 
FFFFFFFFFFFFEB30.0      03FBC000018                     subui   sp,sp,#24
 
FFFFFFFFFFFFEB30.1      27F40000003                     sm              [sp],r1/r2/lr
 
FFFFFFFFFFFFEB30.2      11802000400                     lw              r1,Milliseconds
 
FFFFFFFFFFFFEB40.0      02842000001                     addui   r1,r1,#1
 
FFFFFFFFFFFFEB40.1      19802000400                     sw              r1,Milliseconds
 
FFFFFFFFFFFFEB40.2      0A2FFD00000                     setlo   r2,TEXTSCR
 
FFFFFFFFFFFFEB50.0      108820000DE                     lc              r1,222[r2]
 
FFFFFFFFFFFFEB50.1      02842000001                     addui   r1,r1,#1
 
FFFFFFFFFFFFEB50.2      188820000DE                     sc              r1,222[r2]
 
FFFFFFFFFFFFEB60.0      10801FF0000                     lc              r0,0xFFFF_FFFF_FFFF_0000        ; clear interrupt
 
FFFFFFFFFFFFEB60.1      11802000400                     lw              r1,Milliseconds
 
FFFFFFFFFFFFEB60.2      0504200007F                     andi    r1,r1,#0x7f
 
FFFFFFFFFFFFEB70.0      2C840080040                     bnei    r1,#64,p10001
 
FFFFFFFFFFFFEB70.1      0C7FFFFFAE1                     call    FlashCursor
 
FFFFFFFFFFFFEB70.2                               p10001:
 
FFFFFFFFFFFFEB70.2      27740000003                     lm              [sp],r1/r2/lr
 
FFFFFFFFFFFFEB80.0      0DFBE000018                     ret             #24
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Flash Cursor
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEB80.1                               FlashCursor:
 
FFFFFFFFFFFFEB80.1      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEB80.2      27F40000007                     sm              [sp],r1/r2/r3/r31
 
FFFFFFFFFFFFEB90.0      0C7FFFFFB55                     call    CalcScreenLoc
 
FFFFFFFFFFFFEB90.1      02842010000                     addui   r1,r1,#0x10000
 
                                                        ; causes screen colors to flip around
 
FFFFFFFFFFFFEB90.2      10844000000                     lc              r2,[r1]
 
FFFFFFFFFFFFEBA0.0      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFEBA0.1      18844000000                     sc              r2,[r1]
 
FFFFFFFFFFFFEBA0.2      11804000408                     lw              r2,Lastloc
 
FFFFFFFFFFFFEBB0.0      2F8440000A8                     beq             r1,r2,flshcrsr1
 
                                                        ; restore the screen colors of the previous cursor location
 
FFFFFFFFFFFFEBB0.1      10806000414                     lc              r3,ScreenColor
 
FFFFFFFFFFFFEBB0.2      18886000000                     sc              r3,[r2]
 
FFFFFFFFFFFFEBC0.0      19802000408                     sw              r1,Lastloc
 
FFFFFFFFFFFFEBC0.1                               flshcrsr1:
 
FFFFFFFFFFFFEBC0.1      27740000007                     lm              [sp],r1/r2/r3/r31
 
FFFFFFFFFFFFEBC0.2      0DFBE000020                     ret             #32
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;------------------------------------------------------------------------------
 
FFFFFFFFFFFFEBD0.0                               ClearBmpScreen:
 
FFFFFFFFFFFFEBD0.0      03FBC000028                     subui   sp,sp,#40
 
FFFFFFFFFFFFEBD0.1      27F4000000F                     sm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFEBD0.2      0A100000554                     setlo   r1,#1364                        ; calc number to clear
 
FFFFFFFFFFFFEBE0.0      0A200000300                     setlo   r2,#768
 
FFFFFFFFFFFFEBE0.1      01044200018                     mulu    r2,r1,r2                        ; r2 = # pixels to clear
 
FFFFFFFFFFFFEBE0.2      01004400009                     or              r4,r0,r2                        ; r4 = # pixels to clear
 
FFFFFFFFFFFFEBF0.0      0A129292929                     setlo   r1,#0x29292929          ;
 
FFFFFFFFFFFFEBF0.1      0A300200000                     setlo   r3,#
 
FFFFFFFFFFFFEBF0.2      0E300000001                     sethi   r3,#>BITMAPSCR
 
FFFFFFFFFFFFEC00.0                               csj4:
 
FFFFFFFFFFFFEC00.0      190C2000000                     sh              r1,[r3]
 
FFFFFFFFFFFFEC00.1      028C6000004                     addui   r3,r3,#4
 
FFFFFFFFFFFFEC00.2      2F80400000F                     loop    r2,csj4
 
FFFFFFFFFFFFEC10.0      2774000000F                     lm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFEC10.1      0DFBE000028                     ret             #40
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Clear the screen and the screen color memory
 
                                                 ; We clear the screen to give a visual indication that the system
 
                                                 ; is working at all.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEC10.2                               ClearScreen:
 
FFFFFFFFFFFFEC10.2      03FBC000028                     subui   sp,sp,#40
 
FFFFFFFFFFFFEC20.0      27F4000000F                     sm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFEC20.1      0A3FFDA0000                     setlo   r3,#TEXTREG
 
FFFFFFFFFFFFEC20.2      108C2000000                     lc              r1,TEXT_COLS[r3]        ; calc number to clear
 
FFFFFFFFFFFFEC30.0      108C4000002                     lc              r2,TEXT_ROWS[r3]
 
FFFFFFFFFFFFEC30.1      01044200018                     mulu    r2,r1,r2                        ; r2 = # chars to clear
 
FFFFFFFFFFFFEC30.2      0A100000020                     setlo   r1,#32                  ; space char
 
FFFFFFFFFFFFEC40.0      10808000414                     lc              r4,ScreenColor
 
FFFFFFFFFFFFEC40.1      0C7FFFFFB45                     call    AsciiToScreen
 
FFFFFFFFFFFFEC40.2      0A3FFD00000                     setlo   r3,#TEXTSCR             ; text screen address
 
FFFFFFFFFFFFEC50.0                               csj4:
 
FFFFFFFFFFFFEC50.0      188C2000000                     sc              r1,[r3]
 
FFFFFFFFFFFFEC50.1      188C8010000                     sc              r4,0x10000[r3]  ; color screen is 0x10000 higher
 
FFFFFFFFFFFFEC50.2      028C6000002                     addu    r3,r3,#2
 
FFFFFFFFFFFFEC60.0      2F805FFFF8F                     loop    r2,csj4
 
FFFFFFFFFFFFEC60.1      2774000000F                     lm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFEC60.2      0DFBE000028                     ret             #40
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Scroll text on the screen upwards
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEC70.0                               ScrollUp:
 
FFFFFFFFFFFFEC70.0      03FBC000028                     subui   sp,sp,#40
 
FFFFFFFFFFFFEC70.1      27F4000000F                     sm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFEC70.2      0A3FFDA0000                     setlo   r3,#TEXTREG
 
FFFFFFFFFFFFEC80.0      108C2000000                     lc              r1,TEXT_COLS[r3]        ; r1 = # text columns
 
FFFFFFFFFFFFEC80.1      108C4000002                     lc              r2,TEXT_ROWS[r3]
 
FFFFFFFFFFFFEC80.2      01044200018                     mulu    r2,r1,r2                        ; calc number of chars to scroll
 
FFFFFFFFFFFFEC90.0      01082200005                     subu    r2,r2,r1                        ; one less row
 
FFFFFFFFFFFFEC90.1      0A3FFD00000                     setlo   r3,#TEXTSCR
 
FFFFFFFFFFFFEC90.2                               scrup1:
 
FFFFFFFFFFFFEC90.2      1A8C2400001                     lc              r4,[r3+r1]                      ; indexed addressing example
 
FFFFFFFFFFFFECA0.0      188C8000000                     sc              r4,[r3]
 
FFFFFFFFFFFFECA0.1      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFECA0.2      2F805FFFFCF                     loop    r2,scrup1
 
 
 
FFFFFFFFFFFFECB0.0      0A3FFDA0000                     setlo   r3,#TEXTREG
 
FFFFFFFFFFFFECB0.1      108C2000002                     lc              r1,TEXT_ROWS[r3]
 
FFFFFFFFFFFFECB0.2      03842000001                     subui   r1,r1,#1
 
FFFFFFFFFFFFECC0.0      0C7FFFFFB34                     call    BlankLine
 
FFFFFFFFFFFFECC0.1      2774000000F                     lm              [sp],r1/r2/r3/r4/r31
 
FFFFFFFFFFFFECC0.2      0DFBE000028                     ret             #40
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Blank out a line on the display
 
                                                 ; line number to blank is in r1
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFECD0.0                               BlankLine:
 
FFFFFFFFFFFFECD0.0      03FBC000018                     subui   sp,sp,#24
 
FFFFFFFFFFFFECD0.1      27F00000007                     sm              [sp],r1/r2/r3
 
FFFFFFFFFFFFECD0.2      0A3FFDA0000                     setlo   r3,TEXTREG                      ; r3 = text register address
 
FFFFFFFFFFFFECE0.0      108C4000000                     lc              r2,TEXT_COLS[r3]        ; r2 = # chars to blank out
 
FFFFFFFFFFFFECE0.1      01082300018                     mulu    r3,r2,r1
 
FFFFFFFFFFFFECE0.2      018C6080000                     shli    r3,r3,#1
 
FFFFFFFFFFFFECF0.0      028C7D00000                     addui   r3,r3,#TEXTSCR          ; r3 = screen address
 
FFFFFFFFFFFFECF0.1      0A100000020                     setlo   r1,#' '
 
FFFFFFFFFFFFECF0.2                               blnkln1:
 
FFFFFFFFFFFFECF0.2      188C2000000                     sc              r1,[r3]
 
FFFFFFFFFFFFED00.0      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFED00.1      2F805FFFFCF                     loop    r2,blnkln1
 
FFFFFFFFFFFFED00.2      27700000007                     lm              [sp],r1/r2/r3
 
FFFFFFFFFFFFED10.0      0DFBE000018                     ret             #24
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Convert ASCII character to screen display character.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFED10.1                               AsciiToScreen:
 
FFFFFFFFFFFFED10.1      050420000FF                     andi    r1,r1,#0x00ff
 
FFFFFFFFFFFFED10.2      2A040240041                     bltui   r1,#'A',atoscr1
 
FFFFFFFFFFFFED20.0      2B04014005A                     bleui   r1,#'Z',atoscr1
 
FFFFFFFFFFFFED20.1      2B84014007A                     bgtui   r1,#'z',atoscr1
 
FFFFFFFFFFFFED20.2      2A040140061                     bltui   r1,#'a',atoscr1
 
FFFFFFFFFFFFED30.0      03042000060                     subi    r1,r1,#0x60
 
FFFFFFFFFFFFED30.1                               atoscr1:
 
FFFFFFFFFFFFED30.1      05842000100                     ori             r1,r1,#0x100
 
FFFFFFFFFFFFED30.2      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Convert screen character to ascii character
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFED40.0                               ScreenToAscii:
 
FFFFFFFFFFFFED40.0      050420000FF                     andi    r1,r1,#0xff
 
FFFFFFFFFFFFED40.1      2B84010001A                     bgtui   r1,#26,stasc1
 
FFFFFFFFFFFFED40.2      0284200003C                     addui   r1,r1,#60
 
FFFFFFFFFFFFED50.0                               stasc1:
 
FFFFFFFFFFFFED50.0      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Calculate screen memory location from CursorRow,CursorCol.
 
                                                 ; Also refreshes the cursor location.
 
                                                 ; Destroys r1,r2,r3
 
                                                 ; r1 = screen location
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFED50.1                               CalcScreenLoc:
 
FFFFFFFFFFFFED50.1      10802000416                     lc              r1,CursorRow
 
FFFFFFFFFFFFED50.2      0504200007F                     andi    r1,r1,#0x7f
 
FFFFFFFFFFFFED60.0      0A3FFDA0000                     setlo   r3,TEXTREG
 
FFFFFFFFFFFFED60.1      208C4000000                     inch    r2,TEXT_COLS[r3]
 
FFFFFFFFFFFFED60.2      01082200018                     mulu    r2,r2,r1
 
FFFFFFFFFFFFED70.0      10802000418                     lc              r1,CursorCol
 
FFFFFFFFFFFFED70.1      0504200007F                     andi    r1,r1,#0x7f
 
FFFFFFFFFFFFED70.2      01082200003                     addu    r2,r2,r1
 
FFFFFFFFFFFFED80.0      248C4000016                     outc    r2,TEXT_CURPOS[r3]
 
FFFFFFFFFFFFED80.1      01884080000                     shli    r2,r2,#1
 
FFFFFFFFFFFFED80.2      02883D00000                     addui   r1,r2,#TEXTSCR                  ; r1 = screen location
 
FFFFFFFFFFFFED90.0      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display a character on the screen
 
                                                 ; d1.b = char to display
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFED90.1                               DisplayChar:
 
FFFFFFFFFFFFED90.1      2C84020000D                     bnei    r1,#'\r',dccr           ; carriage return ?
 
FFFFFFFFFFFFED90.2      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEDA0.0      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEDA0.1      18800000418                     sc              r0,CursorCol            ; just set cursor column to zero on a CR
 
FFFFFFFFFFFFEDA0.2      2F8000001AA                     bra             dcx7
 
FFFFFFFFFFFFEDB0.0                               dccr:
 
FFFFFFFFFFFFEDB0.0      2C840340091                     bnei    r1,#0x91,dcx6           ; cursor right ?
 
FFFFFFFFFFFFEDB0.1      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEDB0.2      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEDC0.0      10804000418                     lc              r2,CursorCol
 
FFFFFFFFFFFFEDC0.1      2C080140038                     beqi    r2,#56,dcx7
 
FFFFFFFFFFFFEDC0.2      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFEDD0.0      18804000418                     sc              r2,CursorCol
 
FFFFFFFFFFFFEDD0.1                               dcx7:
 
FFFFFFFFFFFFEDD0.1      0C7FFFFFB55                     call    CalcScreenLoc
 
FFFFFFFFFFFFEDD0.2      27740000007                     lm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEDE0.0      0DFBE000020                     ret             #32
 
FFFFFFFFFFFFEDE0.1                               dcx6:
 
FFFFFFFFFFFFEDE0.1      2C840300090                     bnei    r1,#0x90,dcx8           ; cursor up ?
 
FFFFFFFFFFFFEDE0.2      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEDF0.0      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEDF0.1      10804000416                     lc              r2,CursorRow
 
FFFFFFFFFFFFEDF0.2      2C0BFE40000                     beqi    r2,#0,dcx7
 
FFFFFFFFFFFFEE00.0      03884000001                     subui   r2,r2,#1
 
FFFFFFFFFFFFEE00.1      18804000416                     sc              r2,CursorRow
 
FFFFFFFFFFFFEE00.2      2F801FFFEAA                     bra             dcx7
 
FFFFFFFFFFFFEE10.0                               dcx8:
 
FFFFFFFFFFFFEE10.0      2C840280093                     bnei    r1,#0x93,dcx9           ; cursor left ?
 
FFFFFFFFFFFFEE10.1      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEE10.2      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEE20.0      10804000418                     lc              r2,CursorCol
 
FFFFFFFFFFFFEE20.1      2C0BFB40000                     beqi    r2,#0,dcx7
 
FFFFFFFFFFFFEE20.2      03884000001                     subui   r2,r2,#1
 
FFFFFFFFFFFFEE30.0      18804000418                     sc              r2,CursorCol
 
FFFFFFFFFFFFEE30.1      2F801FFFD2A                     bra             dcx7
 
FFFFFFFFFFFFEE30.2                               dcx9:
 
FFFFFFFFFFFFEE30.2      2C840340092                     bnei    r1,#0x92,dcx10          ; cursor down ?
 
FFFFFFFFFFFFEE40.0      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEE40.1      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEE40.2      10804000416                     lc              r2,CursorRow
 
FFFFFFFFFFFFEE50.0      2C0BF84001E                     beqi    r2,#30,dcx7
 
FFFFFFFFFFFFEE50.1      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFEE50.2      18804000416                     sc              r2,CursorRow
 
FFFFFFFFFFFFEE60.0      2F801FFFBAA                     bra             dcx7
 
FFFFFFFFFFFFEE60.1                               dcx10:
 
FFFFFFFFFFFFEE60.1      2C840340094                     bnei    r1,#0x94,dcx11                  ; cursor home ?
 
FFFFFFFFFFFFEE60.2      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEE70.0      27F40000007                     sm              [sp],r1/r2/r3/lr
 
FFFFFFFFFFFFEE70.1      10804000418                     lc              r2,CursorCol
 
FFFFFFFFFFFFEE70.2      2F8800000C8                     beq             r2,r0,dcx12
 
FFFFFFFFFFFFEE80.0      18800000418                     sc              r0,CursorCol
 
FFFFFFFFFFFFEE80.1      2F801FFFAAA                     bra             dcx7
 
FFFFFFFFFFFFEE80.2                               dcx12:
 
FFFFFFFFFFFFEE80.2      18800000416                     sc              r0,CursorRow
 
FFFFFFFFFFFFEE90.0      2F801FFFA2A                     bra             dcx7
 
FFFFFFFFFFFFEE90.1                               dcx11:
 
FFFFFFFFFFFFEE90.1      03FBC000030                     subui   sp,sp,#48
 
FFFFFFFFFFFFEE90.2      27F4000001F                     sm              [sp],r1/r2/r3/r4/r5/r31
 
FFFFFFFFFFFFEEA0.0      2C840180099                     bnei    r1,#0x99,dcx13          ; delete ?
 
FFFFFFFFFFFFEEA0.1      0C7FFFFFB55                     call    CalcScreenLoc
 
FFFFFFFFFFFFEEA0.2      01002300009                     or              r3,r0,r1                        ; r3 = screen location
 
FFFFFFFFFFFFEEB0.0      10802000418                     lc              r1,CursorCol            ; r1 = cursor column
 
FFFFFFFFFFFFEEB0.1      2F8000001AA                     bra             dcx5
 
FFFFFFFFFFFFEEB0.2                               dcx13:
 
FFFFFFFFFFFFEEB0.2      2C840680008                     bnei    r1,#CTRLH,dcx3          ; backspace ?
 
FFFFFFFFFFFFEEC0.0      10804000418                     lc              r2,CursorCol
 
FFFFFFFFFFFFEEC0.1      2F8800004A8                     beq             r2,r0,dcx4
 
FFFFFFFFFFFFEEC0.2      03884000001                     subui   r2,r2,#1
 
FFFFFFFFFFFFEED0.0      18804000418                     sc              r2,CursorCol
 
FFFFFFFFFFFFEED0.1      0C7FFFFFB55                     call    CalcScreenLoc           ; a0 = screen location
 
FFFFFFFFFFFFEED0.2      01002300009                     or              r3,r0,r1                        ; r3 = screen location
 
FFFFFFFFFFFFEEE0.0      10802000418                     lc              r1,CursorCol
 
FFFFFFFFFFFFEEE0.1                               dcx5:
 
FFFFFFFFFFFFEEE0.1      108C4000002                     lc              r2,2[r3]
 
FFFFFFFFFFFFEEE0.2      188C4000000                     sc              r2,[r3]
 
FFFFFFFFFFFFEEF0.0      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFEEF0.1      02842000001                     addui   r1,r1,#1
 
FFFFFFFFFFFFEEF0.2      0A4FFDA0000                     setlo   r4,#TEXTREG
 
FFFFFFFFFFFFEF00.0      2090A000000                     inch    r5,TEXT_COLS[r4]
 
FFFFFFFFFFFFEF00.1      2F84BFFFF24                     bltu    r1,r5,dcx5
 
FFFFFFFFFFFFEF00.2      0A200000020                     setlo   r2,#' '
 
FFFFFFFFFFFFEF10.0      188C5FFFFFE                     sc              r2,-2[r3]
 
FFFFFFFFFFFFEF10.1      2F80000022A                     bra             dcx4
 
FFFFFFFFFFFFEF10.2                               dcx3:
 
FFFFFFFFFFFFEF10.2      2C04040000A                     beqi    r1,#'\n',dclf   ; linefeed ?
 
FFFFFFFFFFFFEF20.0      01002400009                     or              r4,r0,r1                ; save r1 in r4
 
FFFFFFFFFFFFEF20.1      0C7FFFFFB55                     call    CalcScreenLoc   ; r1 = screen location
 
FFFFFFFFFFFFEF20.2      01002300009                     or              r3,r0,r1                ; r3 = screen location
 
FFFFFFFFFFFFEF30.0      01008100009                     or              r1,r0,r4                ; restore r1
 
FFFFFFFFFFFFEF30.1      0C7FFFFFB45                     call    AsciiToScreen   ; convert ascii char to screen char
 
FFFFFFFFFFFFEF30.2      188C2000000                     sc              r1,[r3]
 
FFFFFFFFFFFFEF40.0      0C7FFFFFBD8                     call    IncCursorPos
 
FFFFFFFFFFFFEF40.1      2774000001F                     lm              [sp],r1/r2/r3/r4/r5/r31
 
FFFFFFFFFFFFEF40.2      0DFBE000030                     ret             #48
 
FFFFFFFFFFFFEF50.0                               dclf:
 
FFFFFFFFFFFFEF50.0      0C7FFFFFBE4                     call    IncCursorRow
 
FFFFFFFFFFFFEF50.1                               dcx4:
 
FFFFFFFFFFFFEF50.1      2774000001F                     lm              [sp],r1/r2/r3/r4/r5/r31
 
FFFFFFFFFFFFEF50.2      0DFBE000030                     ret             #48
 
 
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Increment the cursor position, scroll the screen if needed.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEF60.0                               IncCursorPos:
 
FFFFFFFFFFFFEF60.0      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEF60.1      27F40000007                     sm              [r30],r1/r2/r3/r31
 
FFFFFFFFFFFFEF60.2      10802000418                     lc              r1,CursorCol
 
FFFFFFFFFFFFEF70.0      02842000001                     addui   r1,r1,#1
 
FFFFFFFFFFFFEF70.1      18802000418                     sc              r1,CursorCol
 
FFFFFFFFFFFFEF70.2      20805DA0000                     inch    r2,TEXTREG+TEXT_COLS
 
FFFFFFFFFFFFEF80.0      2F844000226                     bleu    r1,r2,icc1
 
FFFFFFFFFFFFEF80.1      18800000418                     sc              r0,CursorCol            ; column = 0
 
FFFFFFFFFFFFEF80.2      2F8000000CA                     bra             icr1
 
FFFFFFFFFFFFEF90.0                               IncCursorRow:
 
FFFFFFFFFFFFEF90.0      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFEF90.1      27F40000007                     sm              [sp],r1/r2/r3/r31
 
FFFFFFFFFFFFEF90.2                               icr1:
 
FFFFFFFFFFFFEF90.2      10802000416                     lc              r1,CursorRow
 
FFFFFFFFFFFFEFA0.0      02842000001                     addui   r1,r1,#1
 
FFFFFFFFFFFFEFA0.1      18802000416                     sc              r1,CursorRow
 
FFFFFFFFFFFFEFA0.2      20805DA0002                     inch    r2,TEXTREG+TEXT_ROWS
 
FFFFFFFFFFFFEFB0.0      2F8440000A6                     bleu    r1,r2,icc1
 
FFFFFFFFFFFFEFB0.1      03884000001                     subui   r2,r2,#1                        ; backup the cursor row, we are scrolling up
 
FFFFFFFFFFFFEFB0.2      18804000416                     sc              r2,CursorRow
 
FFFFFFFFFFFFEFC0.0      0C7FFFFFB1C                     call    ScrollUp
 
FFFFFFFFFFFFEFC0.1                               icc1:
 
FFFFFFFFFFFFEFC0.1      0C7FFFFFB55                     call    CalcScreenLoc
 
FFFFFFFFFFFFEFC0.2      27740000007                     lm              [sp],r1/r2/r3/r31
 
FFFFFFFFFFFFEFD0.0      0DFBE000020                     ret             #32
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display a string on the screen.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFEFD0.1                               DisplayString:
 
FFFFFFFFFFFFEFD0.1      037BC000018                     subi    sp,sp,#24
 
FFFFFFFFFFFFEFD0.2      27F40000003                     sm              [sp],r1/r2/r31
 
FFFFFFFFFFFFEFE0.0      01040200009                     or              r2,r1,r0                ; r2 = pointer to string
 
FFFFFFFFFFFFEFE0.1                               dspj1:
 
FFFFFFFFFFFFEFE0.1      12882000000                     lbu             r1,[r2]                 ; move string char into r1
 
FFFFFFFFFFFFEFE0.2      02884000001                     addui   r2,r2,#1                ; increment pointer
 
FFFFFFFFFFFFEFF0.0      2F840000088                     beq             r1,r0,dsret             ; is it end of string ?
 
FFFFFFFFFFFFEFF0.1      0C7FFFFFB65                     call    DisplayChar             ; display character
 
FFFFFFFFFFFFEFF0.2      2F801FFFFAA                     bra             dspj1                   ; go back for next character
 
FFFFFFFFFFFFF000.0                               dsret:
 
FFFFFFFFFFFFF000.0      27740000003                     lm              [r30],r1/r2/r31
 
FFFFFFFFFFFFF000.1      0DFBE000018                     ret             #24
 
 
 
FFFFFFFFFFFFF000.2                               DisplayStringCRLF:
 
FFFFFFFFFFFFF000.2      03FBC000008                     subui   r30,r30,#8
 
FFFFFFFFFFFFF010.0      19FBE000000                     sw              r31,[r30]
 
FFFFFFFFFFFFF010.1      0C7FFFFFBF5                     call    DisplayString
 
FFFFFFFFFFFFF010.2      11FBE000000                     lw              r31,[r30]
 
FFFFFFFFFFFFF020.0      02FBC000008                     addui   r30,r30,#8
 
 
 
FFFFFFFFFFFFF020.1                               CRLF:
 
FFFFFFFFFFFFF020.1      03FBC000010                     subui   r30,r30,#16
 
FFFFFFFFFFFFF020.2      19F82000000                     sw              r1,[r30]
 
FFFFFFFFFFFFF030.0      19FBE000008                     sw              r31,8[r30]
 
FFFFFFFFFFFFF030.1      0A10000000D                     setlo   r1,#'\r'
 
FFFFFFFFFFFFF030.2      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF040.0      0A10000000A                     setlo   r1,#'\n'
 
FFFFFFFFFFFFF040.1      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF040.2      11F82000000                     lw              r1,[r30]
 
FFFFFFFFFFFFF050.0      11FBE000008                     lw              r31,8[r30]
 
FFFFFFFFFFFFF050.1      0DFBE000010                     ret             #16
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display nybble in r1
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF050.2                               DisplayNybble:
 
FFFFFFFFFFFFF050.2      03FBC000010                     subui   r30,r30,#16
 
FFFFFFFFFFFFF060.0      19FBE000008                     sw              r31,8[r30]
 
FFFFFFFFFFFFF060.1      19F82000000                     sw              r1,[r30]
 
FFFFFFFFFFFFF060.2      0504200000F                     andi    r1,r1,#0x0F
 
FFFFFFFFFFFFF070.0      02842000030                     addui   r1,r1,#'0'
 
FFFFFFFFFFFFF070.1      2B040100039                     bleui   r1,#'9',dispnyb1
 
FFFFFFFFFFFFF070.2      02842000007                     addui   r1,r1,#7
 
FFFFFFFFFFFFF080.0                               dispnyb1:
 
FFFFFFFFFFFFF080.0      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF080.1      11F82000000                     lw              r1,[r30]
 
FFFFFFFFFFFFF080.2      11FBE000008                     lw              r31,8[r30]
 
FFFFFFFFFFFFF090.0      0DFBE000010                     ret             #16
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display the byte in r1
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF090.1                               DisplayByte:
 
FFFFFFFFFFFFF090.1      03FBC000010                     subui   sp,sp,#16
 
FFFFFFFFFFFFF090.2      27F40000001                     sm              [sp],r1/r31
 
FFFFFFFFFFFFF0A0.0      01842200004                     rori    r1,r1,#4
 
FFFFFFFFFFFFF0A0.1      0C7FFFFFC16                     call    DisplayNybble
 
FFFFFFFFFFFFF0A0.2      01842200002                     roli    r1,r1,#4
 
FFFFFFFFFFFFF0B0.0      0C7FFFFFC16                     call    DisplayNybble
 
FFFFFFFFFFFFF0B0.1      27740000001                     lm              [sp],r1/r31
 
FFFFFFFFFFFFF0B0.2      0DFBE000010                     ret             #16
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display the 64 bit word in r1
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF0C0.0                               DisplayWord:
 
FFFFFFFFFFFFF0C0.0      03FBC000018                     subui   sp,sp,#24
 
FFFFFFFFFFFFF0C0.1      27F40000005                     sm              [sp],r1/r3/r31
 
FFFFFFFFFFFFF0C0.2      0A300000007                     setlo   r3,#7
 
FFFFFFFFFFFFF0D0.0                               dspwd1:
 
FFFFFFFFFFFFF0D0.0      01842400002                     roli    r1,r1,#8
 
FFFFFFFFFFFFF0D0.1      0C7FFFFFC25                     call    DisplayByte
 
FFFFFFFFFFFFF0D0.2      2F80600000F                     loop    r3,dspwd1
 
FFFFFFFFFFFFF0E0.0      27740000005                     lm              [sp],r1/r3/r31
 
FFFFFFFFFFFFF0E0.1      0DFBE000018                     ret             #24
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Display memory pointed to by r2.
 
                                                 ; destroys r1,r3
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF0E0.2                               DisplayMem:
 
FFFFFFFFFFFFF0E0.2      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF0F0.0      19FBE000000                     sw              lr,[sp]
 
FFFFFFFFFFFFF0F0.1      0A10000003A                     setlo   r1,#':'
 
FFFFFFFFFFFFF0F0.2      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF100.0      01080100009                     or              r1,r2,r0
 
FFFFFFFFFFFFF100.1      0C7FFFFFC30                     call    DisplayWord
 
FFFFFFFFFFFFF100.2      0A300000007                     setlo   r3,#7
 
FFFFFFFFFFFFF110.0                               dspmem1:
 
FFFFFFFFFFFFF110.0      0A100000020                     setlo   r1,#' '
 
FFFFFFFFFFFFF110.1      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF110.2      10082000000                     lb              r1,[r2]
 
FFFFFFFFFFFFF120.0      0C7FFFFFC25                     call    DisplayByte
 
FFFFFFFFFFFFF120.1      02884000001                     addui   r2,r2,#1
 
FFFFFFFFFFFFF120.2      2F807FFFF8F                     loop    r3,dspmem1
 
FFFFFFFFFFFFF130.0      0C7FFFFFC09                     call    CRLF
 
FFFFFFFFFFFFF130.1      11FBE000000                     lw              lr,[sp]
 
FFFFFFFFFFFFF130.2      0DFBE000008                     ret             #8
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Converts binary number in r1 into BCD number in r2 and r1.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF140.0                               BinToBCD:
 
FFFFFFFFFFFFF140.0      03FBC000030                     subui   sp,sp,#48
 
FFFFFFFFFFFFF140.1      27F000000FC                     sm              [sp],r3/r4/r5/r6/r7/r8
 
FFFFFFFFFFFFF140.2      0A20000000A                     setlo   r2,#10
 
FFFFFFFFFFFFF150.0      0A800000013                     setlo   r8,#19          ; number of digits to produce - 1
 
FFFFFFFFFFFFF150.1                               bta1:
 
FFFFFFFFFFFFF150.1      0104430001C                     mod             r3,r1,r2
 
FFFFFFFFFFFFF150.2      018C7E00000                     shli    r3,r3,#60       ; shift result to uppermost bits
 
FFFFFFFFFFFFF160.0      0194FE00000                     shli    r7,r5,#60       ; copy low order nybble of r5 to r4 topmost nybble
 
FFFFFFFFFFFFF160.1      01908200001                     shrui   r4,r4,#4
 
FFFFFFFFFFFFF160.2      0110E400009                     or              r4,r4,r7
 
FFFFFFFFFFFFF170.0      0194A200001                     shrui   r5,r5,#4
 
FFFFFFFFFFFFF170.1      01146500009                     or              r5,r5,r3        ; copy new bcd digit into uppermost bits of r5
 
FFFFFFFFFFFFF170.2      07042000000                     divui   r1,r1,r2        ; r1=r1/10
 
FFFFFFFFFFFFF180.0      2F811FFFEAF                     loop    r8,bta1
 
FFFFFFFFFFFFF180.1      01909800001                     shrui   r4,r4,#48       ; right align number in register
 
FFFFFFFFFFFFF180.2      0194C800000                     shli    r6,r5,#16
 
FFFFFFFFFFFFF190.0      0110C400009                     or              r4,r4,r6        ; copy bits into r4
 
FFFFFFFFFFFFF190.1      0194B800001                     shrui   r5,r5,#48
 
FFFFFFFFFFFFF190.2      01008100009                     or              r1,r0,r4
 
FFFFFFFFFFFFF1A0.0      0100A200009                     or              r2,r0,r5
 
FFFFFFFFFFFFF1A0.1      277000000FC                     lm              [sp],r3/r4/r5/r6/r7/r8
 
FFFFFFFFFFFFF1A0.2      0DFBE000030                     ret             #48
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Converts BCD number in r1 into Ascii number in r2 and r1.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF1B0.0                               BCDToAscii:
 
FFFFFFFFFFFFF1B0.0      03FBC000020                     subui   sp,sp,#32
 
FFFFFFFFFFFFF1B0.1      27F0000009C                     sm              [sp],r3/r4/r5/r8
 
FFFFFFFFFFFFF1B0.2      0A80000000F                     setlo   r8,#15
 
FFFFFFFFFFFFF1C0.0                               bta2:
 
FFFFFFFFFFFFF1C0.0      0504400000F                     andi    r2,r1,#0x0F
 
FFFFFFFFFFFFF1C0.1      05884000030                     ori             r2,r2,#0x30
 
FFFFFFFFFFFFF1C0.2      01885C00000                     shli    r2,r2,#56
 
FFFFFFFFFFFFF1D0.0      01908400001                     shrui   r4,r4,#8
 
FFFFFFFFFFFFF1D0.1      018CBC00000                     shli    r5,r3,#56
 
FFFFFFFFFFFFF1D0.2      0110A400009                     or              r4,r4,r5
 
FFFFFFFFFFFFF1E0.0      018C6400001                     shrui   r3,r3,#8
 
FFFFFFFFFFFFF1E0.1      010C4300009                     or              r3,r3,r2
 
FFFFFFFFFFFFF1E0.2      01842200001                     shrui   r1,r1,#4
 
FFFFFFFFFFFFF1F0.0      2F811FFFE8F                     loop    r8,bta2
 
FFFFFFFFFFFFF1F0.1      01008100009                     or              r1,r0,r4
 
FFFFFFFFFFFFF1F0.2      01006200009                     or              r2,r0,r3
 
FFFFFFFFFFFFF200.0      2770000009C                     lm              [sp],r3/r4/r5/r8
 
FFFFFFFFFFFFF200.1      0DFBE000020                     ret             #32
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Convert a binary number into a 20 character ascii string.
 
                                                 ; r1 = number to convert
 
                                                 ; r2 = address of string buffer
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF200.2                               BinToStr:
 
FFFFFFFFFFFFF200.2      03FBC000038                     subui   sp,sp,#56
 
FFFFFFFFFFFFF210.0      27F400007C4                     sm              [sp],r3/r7/r8/r9/r10/r11/r31
 
FFFFFFFFFFFFF210.1      01004B00009                     or              r11,r0,r2
 
FFFFFFFFFFFFF210.2      0C7FFFFFC50                     call    BinToBCD
 
FFFFFFFFFFFFF220.0      01004A00009                     or              r10,r0,r2       ; save off r2
 
FFFFFFFFFFFFF220.1      0C7FFFFFC6C                     call    BCDToAscii
 
FFFFFFFFFFFFF220.2      0A900000001                     setlo   r9,#1
 
FFFFFFFFFFFFF230.0                               btos3:
 
FFFFFFFFFFFFF230.0      0A800000007                     setlo   r8,#7
 
FFFFFFFFFFFFF230.1                               btos1:
 
FFFFFFFFFFFFF230.1      01A4E180000                     shli    r7,r9,#3
 
FFFFFFFFFFFFF230.2      029CE000000                     addui   r7,r7,r8
 
FFFFFFFFFFFFF240.0      029CE000004                     addui   r7,r7,#4
 
FFFFFFFFFFFFF240.1      050460000FF                     andi    r3,r1,#0xff
 
FFFFFFFFFFFFF240.2      1A9D6300010                     sb              r3,[r7+r11]
 
FFFFFFFFFFFFF250.0      01842400001                     shrui   r1,r1,#8
 
FFFFFFFFFFFFF250.1      2F811FFFF2F                     loop    r8,btos1
 
FFFFFFFFFFFFF250.2      01004100009                     or              r1,r0,r2
 
FFFFFFFFFFFFF260.0      2F813FFFE8F                     loop    r9,btos3
 
                                                 ; the last four digits
 
FFFFFFFFFFFFF260.1      01014100009                     or              r1,r0,r10       ; get back r2
 
FFFFFFFFFFFFF260.2      0C7FFFFFC6C                     call    BCDToAscii
 
FFFFFFFFFFFFF270.0      0A800000003                     setlo   r8,#3
 
FFFFFFFFFFFFF270.1                               btos2:
 
FFFFFFFFFFFFF270.1      050460000FF                     andi    r3,r1,#0xff
 
FFFFFFFFFFFFF270.2      1AA16300010                     sb              r3,[r8+r11]
 
FFFFFFFFFFFFF280.0      01842400001                     shrui   r1,r1,#8
 
FFFFFFFFFFFFF280.1      2F811FFFFAF                     loop    r8,btos2
 
FFFFFFFFFFFFF280.2      182C0000014                     sb              r0,20[r11]      ; null terminate
 
FFFFFFFFFFFFF290.0      277400007C4                     lm              [sp],r3/r7/r8/r9/r10/r11/r31
 
FFFFFFFFFFFFF290.1      0DFBE000038                     ret             #56
 
 
 
 
 
                                                 ;==============================================================================
 
                                                 ;==============================================================================
 
FFFFFFFFFFFFF290.2                               Monitor:
 
FFFFFFFFFFFFF290.2      0BEFFFEFFF8                     setlo   sp,#STACKTOP    ; top of stack; reset the stack pointer
 
FFFFFFFFFFFFF2A0.0      1800000041A                     sb              r0,KeybdEcho    ; turn off keyboard echo
 
FFFFFFFFFFFFF2A0.1                               PromptLn:
 
FFFFFFFFFFFFF2A0.1      0C7FFFFFC09                     call    CRLF
 
FFFFFFFFFFFFF2A0.2      0A100000024                     setlo   r1,#'$'
 
FFFFFFFFFFFFF2B0.0      0C7FFFFFB65                     call    DisplayChar
 
 
 
                                                 ; Get characters until a CR is keyed
 
                                                 ;
 
FFFFFFFFFFFFF2B0.1                               Prompt3:
 
FFFFFFFFFFFFF2B0.1      0C7FFFFFA92                     call    KeybdGetChar
 
FFFFFFFFFFFFF2B0.2      2C04007FFFF                     beqi    r1,#-1,Prompt3  ; wait for a character
 
FFFFFFFFFFFFF2C0.0      2C04010000D                     beqi    r1,#CR,Prompt1
 
FFFFFFFFFFFFF2C0.1      0C7FFFFFB65                     call    DisplayChar
 
FFFFFFFFFFFFF2C0.2      2F801FFFFAA                     bra             Prompt3
 
 
 
                                                 ; Process the screen line that the CR was keyed on
 
                                                 ;
 
FFFFFFFFFFFFF2D0.0                               Prompt1:
 
FFFFFFFFFFFFF2D0.0      18800000418                     sc              r0,CursorCol    ; go back to the start of the line
 
FFFFFFFFFFFFF2D0.1      0C7FFFFFB55                     call    CalcScreenLoc   ; r1 = screen memory location
 
FFFFFFFFFFFFF2D0.2      01040300009                     or              r3,r1,r0
 
FFFFFFFFFFFFF2E0.0      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF2E0.1      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF2E0.2      0C7FFFFFB50                     call    ScreenToAscii
 
FFFFFFFFFFFFF2F0.0      2C840140024                     bnei    r1,#'$',Prompt2 ; skip over '$' prompt character
 
FFFFFFFFFFFFF2F0.1      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF2F0.2      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF300.0      0C7FFFFFB50                     call    ScreenToAscii
 
 
 
                                                 ; Dispatch based on command character
 
                                                 ;
 
FFFFFFFFFFFFF300.1                               Prompt2:
 
FFFFFFFFFFFFF300.1      2C04150003A                     beqi    r1,#':',Editmem         ; $: - edit memory
 
FFFFFFFFFFFFF300.2      2C041A00044                     beqi    r1,#'D',Dumpmem         ; $D - dump memory
 
FFFFFFFFFFFFF310.0      2C075140042                     beqi    r1,#'B',START           ; $B - start tiny basic
 
FFFFFFFFFFFFF310.1      2C04174004A                     beqi    r1,#'J',ExecuteCode     ; $J - execute code
 
FFFFFFFFFFFFF310.2      2C04280004C                     beqi    r1,#'L',LoadS19         ; $L - load S19 file
 
FFFFFFFFFFFFF320.0      2C04054003F                     beqi    r1,#'?',DisplayHelp     ; $? - display help
 
FFFFFFFFFFFFF320.1      2C040100043                     beqi    r1,#'C',TestCLS         ; $C - clear screen
 
FFFFFFFFFFFFF320.2      2F801FFFBCA                     bra             Monitor
 
 
 
FFFFFFFFFFFFF330.0                               TestCLS:
 
FFFFFFFFFFFFF330.0      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF330.1      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF330.2      0C7FFFFFB50                     call    ScreenToAscii
 
FFFFFFFFFFFFF340.0      2C87F58004C                     bnei    r1,#'L',Monitor
 
FFFFFFFFFFFFF340.1      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF340.2      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF350.0      0C7FFFFFB50                     call    ScreenToAscii
 
FFFFFFFFFFFFF350.1      2C87F480053                     bnei    r1,#'S',Monitor
 
FFFFFFFFFFFFF350.2      0C7FFFFFB06                     call    ClearScreen
 
FFFFFFFFFFFFF360.0      18000000418                     sb              r0,CursorCol
 
FFFFFFFFFFFFF360.1      18000000416                     sb              r0,CursorRow
 
FFFFFFFFFFFFF360.2      0C7FFFFFB55                     call    CalcScreenLoc
 
FFFFFFFFFFFFF370.0      2F801FFF94A                     bra             Monitor
 
 
 
FFFFFFFFFFFFF370.1                               DisplayHelp:
 
FFFFFFFFFFFFF370.1      0A1FFFFF390                     setlo   r1,HelpMsg
 
FFFFFFFFFFFFF370.2      0C7FFFFFBF5                     call    DisplayString
 
FFFFFFFFFFFFF380.0      2F801FFF8CA                     bra             Monitor
 
 
 
FFFFFFFFFFFFF380.1      37800000000                     align   16
 
FFFFFFFFFFFFF380.2      37800000000                     align   16
 
FFFFFFFFFFFFF390.0                                      align   16
 
FFFFFFFFFFFFF390.0                               HelpMsg:
 
FFFFFFFFFFFFF390 70736944203D203F               db      "? = Display help",CR,LF
 
FFFFFFFFFFFFF398 706C65682079616C
 
FFFFFFFFFFFFF3A0 203D20534C430A0D               db      "CLS = clear screen",CR,LF
 
FFFFFFFFFFFFF3A8 6373207261656C63
 
FFFFFFFFFFFFF3B0 203A0A0D6E656572               db      ": = Edit memory bytes",CR,LF
 
FFFFFFFFFFFFF3B8 6D2074696445203D
 
FFFFFFFFFFFFF3C0 79622079726F6D65
 
FFFFFFFFFFFFF3C8 3D204C0A0D736574               db      "L = Load S19 file",CR,LF
 
FFFFFFFFFFFFF3D0 31532064616F4C20
 
FFFFFFFFFFFFF3D8 0A0D656C69662039
 
FFFFFFFFFFFFF3E0 706D7544203D2044               db      "D = Dump memory",CR,LF
 
FFFFFFFFFFFFF3E8 0D79726F6D656D20
 
FFFFFFFFFFFFF3F0 617473203D20420A               db      "B = start tiny basic",CR,LF
 
FFFFFFFFFFFFF3F8 20796E6974207472
 
FFFFFFFFFFFFF400 4A0A0D6369736162               db      "J = Jump to code",CR,LF,0
 
FFFFFFFFFFFFF408 20706D754A203D20
 
FFFFFFFFFFFFF410 0D65646F63206F74
 
FFFFFFFFFFFFF418 000000000000000A               align   16
 
FFFFFFFFFFFFF420.0                                      align   16
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Ignore blanks in the input
 
                                                 ; r3 = text pointer
 
                                                 ; r1 destroyed
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF420.0                               ignBlanks:
 
FFFFFFFFFFFFF420.0      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF420.1      19FBE000000                     sw              r31,[sp]
 
FFFFFFFFFFFFF420.2                               ignBlanks1:
 
FFFFFFFFFFFFF420.2      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF430.0      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF430.1      0C7FFFFFB50                     call    ScreenToAscii
 
FFFFFFFFFFFFF430.2      2C07FF80020                     beqi    r1,#' ',ignBlanks1
 
FFFFFFFFFFFFF440.0      038C6000002                     subui   r3,r3,#2
 
FFFFFFFFFFFFF440.1      11FBE000000                     lw              r31,[sp]
 
FFFFFFFFFFFFF440.2      0DFBE000008                     ret             #8
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Edit memory byte(s).
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF450.0                               EditMem:
 
FFFFFFFFFFFFF450.0      0C7FFFFFD08                     call    ignBlanks
 
FFFFFFFFFFFFF450.1      0C7FFFFFD39                     call    GetHexNumber
 
FFFFFFFFFFFFF450.2      01040500009                     or              r5,r1,r0
 
FFFFFFFFFFFFF460.0      0A400000007                     setlo   r4,#7
 
FFFFFFFFFFFFF460.1                               edtmem1:
 
FFFFFFFFFFFFF460.1      0C7FFFFFD08                     call    ignBlanks
 
FFFFFFFFFFFFF460.2      0C7FFFFFD39                     call    GetHexNumber
 
FFFFFFFFFFFFF470.0      18142000000                     sb              r1,[r5]
 
FFFFFFFFFFFFF470.1      0294A000001                     addui   r5,r5,#1
 
FFFFFFFFFFFFF470.2      2F809FFFFAF                     loop    r4,edtmem1
 
FFFFFFFFFFFFF480.0      2F801FFF0CA                     bra             Monitor
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Execute code at the specified address.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF480.1                               ExecuteCode:
 
FFFFFFFFFFFFF480.1      0C7FFFFFD08                     call    ignBlanks
 
FFFFFFFFFFFFF480.2      0C7FFFFFD39                     call    GetHexNumber
 
FFFFFFFFFFFFF490.0      01040300009                     or              r3,r1,r0
 
FFFFFFFFFFFFF490.1      0D0FE000000                     jal             r31,[r3]
 
FFFFFFFFFFFFF490.2      2F801FFF04A                     bra     Monitor
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Do a memory dump of the requested location.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF4A0.0                               DumpMem:
 
FFFFFFFFFFFFF4A0.0      0C7FFFFFD08                     call    ignBlanks
 
FFFFFFFFFFFFF4A0.1      0C7FFFFFD39                     call    GetHexNumber
 
FFFFFFFFFFFFF4A0.2      01040200009                     or              r2,r1,r0
 
FFFFFFFFFFFFF4B0.0      0C7FFFFFC09                     call    CRLF
 
FFFFFFFFFFFFF4B0.1      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4B0.2      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4C0.0      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4C0.1      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4C0.2      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4D0.0      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4D0.1      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4D0.2      0C7FFFFFC3A                     call    DisplayMem
 
FFFFFFFFFFFFF4E0.0      2F801FFEDCA                     bra             Monitor
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Get a hexidecimal number. Maximum of sixteen digits.
 
                                                 ; R3 = text pointer (updated)
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF4E0.1                               GetHexNumber:
 
FFFFFFFFFFFFF4E0.1      03FBC000018                     subui   sp,sp,#24
 
FFFFFFFFFFFFF4E0.2      27F4000000A                     sm              [sp],r2/r4/r31
 
FFFFFFFFFFFFF4F0.0      0A200000000                     setlo   r2,#0
 
FFFFFFFFFFFFF4F0.1      0A40000000F                     setlo   r4,#15
 
FFFFFFFFFFFFF4F0.2                               gthxn2:
 
FFFFFFFFFFFFF4F0.2      108C2000000                     lc              r1,[r3]
 
FFFFFFFFFFFFF500.0      028C6000002                     addui   r3,r3,#2
 
FFFFFFFFFFFFF500.1      0C7FFFFFB50                     call    ScreenToAscii
 
FFFFFFFFFFFFF500.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF510.0      2C0401BFFFF                     beqi    r1,#-1,gthxn1
 
FFFFFFFFFFFFF510.1      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF510.2      0504200000F                     andi    r1,r1,#0x0f
 
FFFFFFFFFFFFF520.0      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF520.1      2F809FFFECF                     loop    r4,gthxn2
 
FFFFFFFFFFFFF520.2                               gthxn1:
 
FFFFFFFFFFFFF520.2      01080100009                     or              r1,r2,r0
 
FFFFFFFFFFFFF530.0      2774000000A                     lm              [sp],r2/r4/r31
 
FFFFFFFFFFFFF530.1      0DFBE000018                     ret             #24
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Convert ASCII character in the range '0' to '9', 'a' to 'f' or 'A' to 'F'
 
                                                 ; to a hex nybble.
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF530.2                               AsciiToHexNybble:
 
FFFFFFFFFFFFF530.2      2A040540030                     bltui   r1,#'0',gthx3
 
FFFFFFFFFFFFF540.0      2B840100039                     bgtui   r1,#'9',gthx5
 
FFFFFFFFFFFFF540.1      03842000030                     subui   r1,r1,#'0'
 
FFFFFFFFFFFFF540.2      0DFBE000000                     ret
 
FFFFFFFFFFFFF550.0                               gthx5:
 
FFFFFFFFFFFFF550.0      2A040340041                     bltui   r1,#'A',gthx3
 
FFFFFFFFFFFFF550.1      2B840180046                     bgtui   r1,#'F',gthx6
 
FFFFFFFFFFFFF550.2      03842000041                     subui   r1,r1,#'A'
 
FFFFFFFFFFFFF560.0      0284200000A                     addui   r1,r1,#10
 
FFFFFFFFFFFFF560.1      0DFBE000000                     ret
 
FFFFFFFFFFFFF560.2                               gthx6:
 
FFFFFFFFFFFFF560.2      2A040240061                     bltui   r1,#'a',gthx3
 
FFFFFFFFFFFFF570.0      2B840140066                     bgtui   r1,#'f',gthx3
 
FFFFFFFFFFFFF570.1      03842000061                     subui   r1,r1,#'a'
 
FFFFFFFFFFFFF570.2      0284200000A                     addui   r1,r1,#10
 
FFFFFFFFFFFFF580.0      0DFBE000000                     ret
 
FFFFFFFFFFFFF580.1                               gthx3:
 
FFFFFFFFFFFFF580.1      0A1FFFFFFFF                     setlo   r1,#-1          ; not a hex number
 
FFFFFFFFFFFFF580.2      0DFBE000000                     ret
 
 
 
                                                 ;==============================================================================
 
                                                 ; Load an S19 format file
 
                                                 ;==============================================================================
 
                                                 ;
 
FFFFFFFFFFFFF590.0                               LoadS19:
 
FFFFFFFFFFFFF590.0      2F80000008A                     bra             ProcessRec
 
FFFFFFFFFFFFF590.1                               NextRec:
 
FFFFFFFFFFFFF590.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF590.2      2C84004000A                     bne             r1,#LF,NextRec
 
FFFFFFFFFFFFF5A0.0                               ProcessRec:
 
FFFFFFFFFFFFF5A0.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF5A0.1      2C07CF8001A                     beqi    r1,#26,Monitor  ; CTRL-Z ?
 
FFFFFFFFFFFFF5A0.2      2C87FF40053                     bnei    r1,#'S',NextRec
 
FFFFFFFFFFFFF5B0.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF5B0.1      2807FE40030                     blt             r1,#'0',NextRec
 
FFFFFFFFFFFFF5B0.2      2987FE40039                     bgt             r1,#'9',NextRec
 
FFFFFFFFFFFFF5C0.0      01040400009                     or              r4,r1,r0                ; r4 = record type
 
FFFFFFFFFFFFF5C0.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF5C0.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF5D0.0      01040200009                     or              r2,r1,r0
 
FFFFFFFFFFFFF5D0.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF5D0.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF5E0.0      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF5E0.1      01082200009                     or              r2,r2,r1                ; r2 = byte count
 
FFFFFFFFFFFFF5E0.2      01082300009                     or              r3,r2,r1                ; r3 = byte count
 
FFFFFFFFFFFFF5F0.0      2C13FA40030                     beqi    r4,#'0',NextRec ; manufacturer ID record, ignore
 
FFFFFFFFFFFFF5F0.1      2C100A40031                     beqi    r4,#'1',ProcessS1
 
FFFFFFFFFFFFF5F0.2      2C100B00032                     beqi    r4,#'2',ProcessS2
 
FFFFFFFFFFFFF600.0      2C100A80033                     beqi    r4,#'3',ProcessS3
 
FFFFFFFFFFFFF600.1      2C13F940035                     beqi    r4,#'5',NextRec ; record count record, ignore
 
FFFFFFFFFFFFF600.2      2C100B40037                     beqi    r4,#'7',ProcessS7
 
FFFFFFFFFFFFF610.0      2C100B40038                     beqi    r4,#'8',ProcessS8
 
FFFFFFFFFFFFF610.1      2C100C40039                     beqi    r4,#'9',ProcessS9
 
FFFFFFFFFFFFF610.2      2F801FFFC2A                     bra             NextRec
 
 
 
FFFFFFFFFFFFF620.0                               pcssxa:
 
FFFFFFFFFFFFF620.0      050C60000FF                     andi    r3,r3,#0xff
 
FFFFFFFFFFFFF620.1      038C6000001                     subui   r3,r3,#1                ; one less for loop
 
FFFFFFFFFFFFF620.2                               pcss1a:
 
FFFFFFFFFFFFF620.2      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF630.0      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF630.1      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF630.2      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF640.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF640.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF640.2      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF650.0      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF650.1      18144000000                     sb              r2,[r5]
 
FFFFFFFFFFFFF650.2      0294A000001                     addui   r5,r5,#1
 
FFFFFFFFFFFFF660.0      2F807FFFE4F                     loop    r3,pcss1a
 
                                                 ; Get the checksum byte
 
FFFFFFFFFFFFF660.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF660.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF670.0      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF670.1      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF670.2      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF680.0      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF680.1      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF680.2      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF690.0      2F801FFF82A                     bra             NextRec
 
 
 
FFFFFFFFFFFFF690.1                               ProcessS1:
 
FFFFFFFFFFFFF690.1      0C7FFFFFDB9                     call    S19Get16BitAddress
 
FFFFFFFFFFFFF690.2      2F801FFFC8A                     bra             pcssxa
 
FFFFFFFFFFFFF6A0.0                               ProcessS2:
 
FFFFFFFFFFFFF6A0.0      0C7FFFFFDC1                     call    S19Get24BitAddress
 
FFFFFFFFFFFFF6A0.1      2F801FFFC0A                     bra             pcssxa
 
FFFFFFFFFFFFF6A0.2                               ProcessS3:
 
FFFFFFFFFFFFF6A0.2      0C7FFFFFDC9                     call    S19Get32BitAddress
 
FFFFFFFFFFFFF6B0.0      2F801FFFB8A                     bra             pcssxa
 
FFFFFFFFFFFFF6B0.1                               ProcessS7:
 
FFFFFFFFFFFFF6B0.1      0C7FFFFFDC9                     call    S19Get32BitAddress
 
FFFFFFFFFFFFF6B0.2      1980A000000                     sw              r5,S19StartAddress
 
FFFFFFFFFFFFF6C0.0      2F801FFDECA                     bra             Monitor
 
FFFFFFFFFFFFF6C0.1                               ProcessS8:
 
FFFFFFFFFFFFF6C0.1      0C7FFFFFDC1                     call    S19Get24BitAddress
 
FFFFFFFFFFFFF6C0.2      1980A000000                     sw              r5,S19StartAddress
 
FFFFFFFFFFFFF6D0.0      2F801FFDE4A                     bra             Monitor
 
FFFFFFFFFFFFF6D0.1                               ProcessS9:
 
FFFFFFFFFFFFF6D0.1      0C7FFFFFDB9                     call    S19Get16BitAddress
 
FFFFFFFFFFFFF6D0.2      1980A000000                     sw              r5,S19StartAddress
 
FFFFFFFFFFFFF6E0.0      2F801FFDDCA                     bra             Monitor
 
 
 
FFFFFFFFFFFFF6E0.1                               S19Get16BitAddress:
 
FFFFFFFFFFFFF6E0.1      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF6E0.2      19FBE000000                     sw              r31,[sp]
 
FFFFFFFFFFFFF6F0.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF6F0.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF6F0.2      01040200009                     or              r2,r1,r0
 
FFFFFFFFFFFFF700.0      2F8000004AA                     bra             S1932b
 
 
 
FFFFFFFFFFFFF700.1                               S19Get24BitAddress:
 
FFFFFFFFFFFFF700.1      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF700.2      19FBE000000                     sw              r31,[sp]
 
FFFFFFFFFFFFF710.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF710.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF710.2      01040200009                     or              r2,r1,r0
 
FFFFFFFFFFFFF720.0      2F80000024A                     bra             S1932a
 
 
 
FFFFFFFFFFFFF720.1                               S19Get32BitAddress:
 
FFFFFFFFFFFFF720.1      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF720.2      19FBE000000                     sw              r31,[sp]
 
FFFFFFFFFFFFF730.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF730.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF730.2      01040200009                     or              r2,r1,r0
 
FFFFFFFFFFFFF740.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF740.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF740.2      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF750.0      01044200009                     or              r2,r1,r2
 
FFFFFFFFFFFFF750.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF750.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF760.0      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF760.1      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF760.2                               S1932a:
 
FFFFFFFFFFFFF760.2      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF770.0      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF770.1      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF770.2      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF780.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF780.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF780.2      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF790.0      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF790.1                               S1932b:
 
FFFFFFFFFFFFF790.1      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF790.2      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF7A0.0      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF7A0.1      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF7A0.2      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF7B0.0      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF7B0.1      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF7B0.2      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF7C0.0      0C7FFFFFDFC                     call    sGetChar
 
FFFFFFFFFFFFF7C0.1      0C7FFFFFD4E                     call    AsciiToHexNybble
 
FFFFFFFFFFFFF7C0.2      01884200000                     shli    r2,r2,#4
 
FFFFFFFFFFFFF7D0.0      01082200009                     or              r2,r2,r1
 
FFFFFFFFFFFFF7D0.1      0110840000A                     xor             r4,r4,r4
 
FFFFFFFFFFFFF7D0.2      01080500009                     or              r5,r2,r0
 
FFFFFFFFFFFFF7E0.0      11FBE000000                     lw              r31,[sp]
 
FFFFFFFFFFFFF7E0.1      02FBC000008                     addui   sp,sp,#8
 
FFFFFFFFFFFFF7E0.2      0DFBE000000                     ret
 
 
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ; Get a character from auxillary input, checking the keyboard status for a
 
                                                 ; CTRL-C
 
                                                 ;------------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF7F0.0                               sGetChar:
 
FFFFFFFFFFFFF7F0.0      03FBC000008                     subui   sp,sp,#8
 
FFFFFFFFFFFFF7F0.1      19FBE000000                     sw              r31,[sp]
 
FFFFFFFFFFFFF7F0.2                               sgc2:
 
FFFFFFFFFFFFF7F0.2      0C7FFFFFAA6                     call    KeybdCheckForKey
 
FFFFFFFFFFFFF800.0      2F841FF8B08                     beq             r1,r0,sgc1
 
FFFFFFFFFFFFF800.1      0C7FFFFFA92                     call    KeybdGetchar
 
FFFFFFFFFFFFF800.2      2C07A980000                     beqi    r1,#CRTLC,Monitor
 
FFFFFFFFFFFFF810.0                               sgc1:
 
FFFFFFFFFFFFF810.0      0C7FFFFFE30                     call    AUXIN
 
FFFFFFFFFFFFF810.1      2F841FFFF48                     beq             r1,r0,sgc2
 
FFFFFFFFFFFFF810.2      11FBE000000                     lw              r31,[sp]
 
FFFFFFFFFFFFF820.0      02FBC000008                     addui   sp,sp,#8
 
FFFFFFFFFFFFF820.1      0DFBE000000                     ret
 
 
 
                                                 ;--------------------------------------------------------------------------
 
                                                 ; Sound a 800 Hz beep
 
                                                 ;--------------------------------------------------------------------------
 
                                                 ;
 
FFFFFFFFFFFFF820.2                               SetupAC97:
 
FFFFFFFFFFFFF820.2      05802000000                     ori             r1,r0,#0                ; trigger a read of register 26
 
FFFFFFFFFFFFF830.0      18803DC1026                     sc              r1,AC97+0x26
 
FFFFFFFFFFFFF830.1                               sac971:                                                ; wait for status to register 0xF (all ready)
 
FFFFFFFFFFFFF830.1      10803DC1026                     lc              r1,AC97+0x26
 
FFFFFFFFFFFFF830.2      2C84004000F                     bnei    r1,#0x0F,sac971
 
FFFFFFFFFFFFF840.0      05802000000                     ori             r1,r0,#0                ; master volume, 0db attenuation, mute off
 
FFFFFFFFFFFFF840.1      18803DC1002                     sc              r1,AC97+2
 
FFFFFFFFFFFFF840.2      18803DC1004                     sc              r1,AC97+4               ; headphone volume, 0db attenuation, mute off
 
FFFFFFFFFFFFF850.0      05802001F40                     ori             r1,r0,#8000             ; wait a while for the settings to take effect
 
FFFFFFFFFFFFF850.1                               sac972:
 
FFFFFFFFFFFFF850.1      2F80200002F                     loop    r1,sac972
 
 
 
FFFFFFFFFFFFF850.2                               Beep:
 
FFFFFFFFFFFFF850.2      0580200000F                     ori             r1,r0,#15               ; master volume to max
 
FFFFFFFFFFFFF860.0      18803D50080                     sc              r1,PSG+128
 
FFFFFFFFFFFFF860.1      0580200346E                     ori             r1,r0,#13422    ; 800Hz
 
FFFFFFFFFFFFF860.2      18803D50000                     sc              r1,PSG
 
FFFFFFFFFFFFF870.0      05802000020                     ori             r1,r0,#32               ; attack (8.192 ms)
 
FFFFFFFFFFFFF870.1      18803D50008                     sc              r1,PSG+8
 
FFFFFFFFFFFFF870.2      05802000040                     ori             r1,r0,#64               ; decay  (16.384 ms)
 
FFFFFFFFFFFFF880.0      18803D5000A                     sc              r1,PSG+10
 
FFFFFFFFFFFFF880.1      058020000C0                     ori             r1,r0,#0xC0             ; sustain level
 
FFFFFFFFFFFFF880.2      18803D5000C                     sc              r1,PSG+12
 
FFFFFFFFFFFFF890.0      05802000FA0                     ori             r1,r0,#4000             ; release (1.024 s)
 
FFFFFFFFFFFFF890.1      18803D5000E                     sc              r1,PSG+14
 
FFFFFFFFFFFFF890.2      05802001104                     ori             r1,r0,#0x1104   ; gate, output enable, triangle waveform
 
FFFFFFFFFFFFF8A0.0      18803D50004                     sc              r1,PSG+4
 
FFFFFFFFFFFFF8A0.1      38000000000
 
FFFFFFFFFFFFF8A0.2      058037D7840                     ori             r1,r0,#25000000 ; delay about 1s
 
FFFFFFFFFFFFF8B0.0                               beep1:
 
FFFFFFFFFFFFF8B0.0      2F80200000F                     loop    r1,beep1
 
FFFFFFFFFFFFF8B0.1      05802000000                     ori             r1,r0,#0x0000   ; gate off, output enable off, no waveform
 
FFFFFFFFFFFFF8B0.2      0DFBE000000                     ret
 
 
 
                                                 ;*
 
                                                 ;* ===== Input a character from the host into register D0 (or
 
                                                 ;*     return Zero status if there's no character available).
 
                                                 ;*
 
FFFFFFFFFFFFF8C0.0                               AUXIN:
 
FFFFFFFFFFFFF8C0.0      20003DC0A01                     inb             r1,UART_LS              ; is character ready ?
 
FFFFFFFFFFFFF8C0.1      05042000001                     andi    r1,r1,#rxfull
 
FFFFFFFFFFFFF8C0.2      2F8400000C8                     beq             r1,r0,AXIRET    ;if not, return Zero status
 
FFFFFFFFFFFFF8D0.0      20003DC0A00                     inb             r1,UART                 ; else get the character
 
FFFFFFFFFFFFF8D0.1      0504200007F                     andi    r1,r1,#0x7f             ;zero out the high bit
 
FFFFFFFFFFFFF8D0.2                               AXIRET:
 
FFFFFFFFFFFFF8D0.2      0DFBE000000                     ret
 
 
 
                                                 ;*
 
                                                 ;* ===== Return to the resident monitor, operating system, etc.
 
                                                 ;*
 
FFFFFFFFFFFFF8E0.0                               BYEBYE:
 
FFFFFFFFFFFFF8E0.0      0CFFFFFFCA6                     jmp             Monitor
 
                                                 ;    MOVE.B    #228,D7         ;return to Tutor
 
                                                 ;      TRAP    #14
 
 
 
FFFFFFFFFFFFF8E0.1      37800000000                     align 16
 
FFFFFFFFFFFFF8E0.2      37800000000                     align 16
 
FFFFFFFFFFFFF8F0.0                                      align 16
 
FFFFFFFFFFFFF8F0 726F747061520A0D        msgInit db     CR,LF,"Raptor64 Tiny BASIC v1.0",CR,LF,"(C) 2012  Robert Finch",CR,LF,LF,0
 
FFFFFFFFFFFFF8F8 20796E6954203436
 
FFFFFFFFFFFFF900 3176204349534142
 
FFFFFFFFFFFFF908 202943280A0D302E
 
FFFFFFFFFFFFF910 6F52202032313032
 
FFFFFFFFFFFFF918 6E69462074726562
 
FFFFFFFFFFFFF920 0A0D000A0A0D6863        OKMSG  db      CR,LF,"OK",CR,LF,0
 
FFFFFFFFFFFFF928 616857000A0D4B4F        msgWhat        db      "What?",CR,LF,0
 
FFFFFFFFFFFFF930 726F53000A0D3F74        SRYMSG db      "Sorry."
 
FFFFFFFFFFFFF938 6F43000A0D2E7972        msgReadError   db      "Compact FLASH read error",CR,LF,0
 
FFFFFFFFFFFFF940 4C4620746361706D
 
FFFFFFFFFFFFF948 6461657220485341
 
FFFFFFFFFFFFF950 0A0D726F72726520
 
FFFFFFFFFFFFF958 207265626D754E00        msgNumTooBig   db      "Number is too big",CR,LF,0
 
FFFFFFFFFFFFF960 62206F6F74207369
 
FFFFFFFFFFFFF968 766944000A0D6769        msgDivZero             db      "Division by zero",CR,LF,0
 
FFFFFFFFFFFFF970 7962206E6F697369
 
FFFFFFFFFFFFF978 000A0D6F72657A20
 
FFFFFFFFFFFFF980 7620666F2074754F        msgVarSpace     db  "Out of variable space",CR,LF,0
 
FFFFFFFFFFFFF988 20656C6261697261
 
FFFFFFFFFFFFF990 000A0D6563617073
 
FFFFFFFFFFFFF998 6620736574796220        msgBytesFree   db      " bytes free",CR,LF,0
 
FFFFFFFFFFFFF9A0 0A0D000A0D656572        msgReady               db      CR,LF,"Ready",CR,LF,0
 
FFFFFFFFFFFFF9A8 000A0D7964616552
 
FFFFFFFFFFFFF9B0 6E69746365707845        msgComma               db      "Expecting a comma",CR,LF,0
 
FFFFFFFFFFFFF9B8 6D6D6F6320612067
 
FFFFFFFFFFFFF9C0 656E694C000A0D61        msgLineRange   db      "Line number too big",CR,LF,0
 
FFFFFFFFFFFFF9C8 207265626D756E20
 
FFFFFFFFFFFFF9D0 0D676962206F6F74
 
FFFFFFFFFFFFF9D8 746365707845000A        msgVar                 db      "Expecting a variable",CR,LF,0
 
FFFFFFFFFFFFF9E0 6176206120676E69
 
FFFFFFFFFFFFF9E8 0A0D656C62616972
 
FFFFFFFFFFFFF9F0 64616220444E5200        msgRNDBad              db      "RND bad parameter",CR,LF,0
 
FFFFFFFFFFFFF9F8 74656D6172617020
 
FFFFFFFFFFFFFA00 535953000A0D7265        msgSYSBad              db      "SYS bad address",CR,LF,0
 
FFFFFFFFFFFFFA08 6464612064616220
 
FFFFFFFFFFFFFA10 49000A0D73736572        msgInputVar            db      "INPUT expecting a variable",CR,LF,0
 
FFFFFFFFFFFFFA18 707865205455504E
 
FFFFFFFFFFFFFA20 6120676E69746365
 
FFFFFFFFFFFFFA28 6C62616972617620
 
FFFFFFFFFFFFFA30 5458454E000A0D65        msgNextFor             db      "NEXT without FOR",CR,LF,0
 
FFFFFFFFFFFFFA38 74756F6874697720
 
FFFFFFFFFFFFFA40 4E000A0D524F4620        msgNextVar             db      "NEXT expecting a defined variable",CR,LF,0
 
FFFFFFFFFFFFFA48 6570786520545845
 
FFFFFFFFFFFFFA50 206120676E697463
 
FFFFFFFFFFFFFA58 2064656E69666564
 
FFFFFFFFFFFFFA60 656C626169726176
 
FFFFFFFFFFFFFA68 2F4F544F47000A0D        msgBadGotoGosub        db      "GOTO/GOSUB bad line number",CR,LF,0
 
FFFFFFFFFFFFFA70 6162204255534F47
 
FFFFFFFFFFFFFA78 6E20656E696C2064
 
FFFFFFFFFFFFFA80 000A0D7265626D75
 
FFFFFFFFFFFFFA88 77204E5255544552        msgRetWoGosub   db     "RETURN without GOSUB",CR,LF,0
 
FFFFFFFFFFFFFA90 472074756F687469
 
FFFFFFFFFFFFFA98 50000A0D4255534F        msgTooBig              db      "Program is too big",CR,LF,0
 
FFFFFFFFFFFFFAA0 69206D6172676F72
 
FFFFFFFFFFFFFAA8 6962206F6F742073
 
FFFFFFFFFFFFFAB0 72747845000A0D67        msgExtraChars  db      "Extra characters on line ignored",CR,LF,0
 
FFFFFFFFFFFFFAB8 6361726168632061
 
FFFFFFFFFFFFFAC0 206E6F2073726574
 
FFFFFFFFFFFFFAC8 6E676920656E696C
 
 
 
FFFFFFFFFFFFFAD7.0                               INITMSG:
 
FFFFFFFFFFFFFAD0 0D000A0D6465726F               db              CR,LF,'Raptor64 Tiny BASIC, v1.0',CR,LF,LF,0
 
FFFFFFFFFFFFFADF.0                               OKMSG:
 
FFFFFFFFFFFFFAD8 0D000A0A0D00520A               db              CR,LF,'OK',CR,LF,0
 
FFFFFFFFFFFFFAE6.0                               HOWMSG:
 
FFFFFFFFFFFFFAE0 0048000A0D004F0A               db              'How?',CR,LF,0
 
FFFFFFFFFFFFFAEB.0                               WHTMSG:
 
FFFFFFFFFFFFFAE8 000A0D0057000A0D               db              'What?',CR,LF,0
 
FFFFFFFFFFFFFAF0.0                               SRYMSG:
 
FFFFFFFFFFFFFAF2.0                               CLMSG:
 
                                                 ;      DC.B    0        ;<- for aligning on a word boundary
 
FFFFFFFFFFFFFAF0 000000000A0D0053               align   16
 
FFFFFFFFFFFFFAF8 0000000000000000
 
FFFFFFFFFFFFFB00.0                                      align   16
 
 
 
                                                 LSTROM EQU             $
 
                                                        ;       end of possible ROM area
 
 
 
0000000000000110                                        bss
 
0000000000000110                                        align   16
 
 
 
0000000000000080                                                org             0x0080
 
0000000000000088                                         align   8
 
0000000000000088 0000000000000001        OSSP   dw      1       ; OS value of sp
 
0000000000000090 0000000000000001        CURRNT dw      1       ;       Current line pointer
 
0000000000000098 0000000000000001        STKGOS dw      1       ;       Saves stack pointer in 'GOSUB'
 
00000000000000A0 0000000000000001        STKINP dw      1       ;       Saves stack pointer during 'INPUT'
 
00000000000000A8 0000000000000001        LOPVAR dw      1       ;       'FOR' loop save area
 
00000000000000B0 0000000000000001        LOPINC dw      1       ;       increment
 
00000000000000B8 0000000000000001        LOPLMT dw      1       ;       limit
 
00000000000000C0 0000000000000001        LOPLN  dw      1       ;       line number
 
00000000000000C8 0000000000000001        LOPPT  dw      1       ;       text pointer
 
00000000000000D0 0000000000000001        TXTUNF dw      1       ;       points to unfilled text area
 
00000000000000D8 0000000000000001        VARBGN dw      1       ;       points to variable area
 
00000000000000E0 0000000000000001        IVARBGN dw  1   ;   points to integer variable area
 
00000000000000E8 0000000000000001        SVARBGN dw  1   ;   points to string variable area
 
00000000000000F0 0000000000000001        FVARBGN dw  1   ;   points to float variable area
 
00000000000000F8 0000000000000001        STKBOT dw      1       ;       holds lower limit for stack growth
 
FF 0000000000000000      NUMWKA fill.b  12,0                    ; numeric work area
 
107 00000000000000
 
107 0000000000000000     BUFFER fill.b  BUFLEN,0x00             ;               Keyboard input buffer
 
10F 00
 
 
FFFFFFFFFFFFF000.0                                      org 0xFFFF_FFFF_FFFF_F000
 
FFFFFFFFFFFFF000.0                               start:
 
FFFFFFFFFFFFF000.0      048020013FD                     ori             r1,r0,#5117             ; test data
 
FFFFFFFFFFFFF000.1      00848000018                     sqrt    r4,r1
 
FFFFFFFFFFFFF000.2      00848000018                     sqrt    r4,r1
 
FFFFFFFFFFFFF010.0      0480400042B                     ori             r2,r0,#1067
 
FFFFFFFFFFFFF010.1      01044500018                     mulu    r5,r1,r2
 
FFFFFFFFFFFFF010.2      04803D00000                     ori             r1,r0,#0xFFFF_FFFF_FFD0_0000
 
FFFFFFFFFFFFF020.0      04804000032                     ori     r2,r0,#0x32
 
FFFFFFFFFFFFF020.1      0480600064C                     ori     r3,r0,#1612
 
FFFFFFFFFFFFF020.2                               j1:
 
FFFFFFFFFFFFF020.2      18844000000                     sc              r2,[r1]
 
FFFFFFFFFFFFF030.0      02042000002                     addi    r1,r1,#2
 
FFFFFFFFFFFFF030.1      028C6000001                     subi    r3,r3,#1
 
FFFFFFFFFFFFF030.2      288C1FFFFFE                     bne             r3,r0,j1
 
FFFFFFFFFFFFF040.0      0C7FFFFFC16                     call    Getkey
 
FFFFFFFFFFFFF040.1      37800000000                     nop
 
FFFFFFFFFFFFF040.2      37800000000                     nop
 
FFFFFFFFFFFFF050.0      37800000000                     nop
 
FFFFFFFFFFFFF050.1      37800000000                     nop
 
 
 
FFFFFFFFFFFFF050.2                               Getkey:
 
FFFFFFFFFFFFF050.2      04803DC0000                     ori             r1,r0,#0xFFFF_FFFF_FFDC_0000
 
FFFFFFFFFFFFF060.0                               sr1:
 
FFFFFFFFFFFFF060.0      10044000000                     lb              r2,[r1]
 
FFFFFFFFFFFFF060.1      2A880000000                     bge             r2,r0,sr1
 
FFFFFFFFFFFFF060.2      10040000001                     lb              r0,1[r1]                ; clear keyboard strobe
 
FFFFFFFFFFFFF070.0      0D83E000000                     ret
 
 
 
                                                 ;==============================================================================
                                                 ;==============================================================================
                                                 ; Checkerboard RAM tester
                                                 ; Checkerboard RAM tester
                                                 ;==============================================================================
                                                 ;==============================================================================
                                                 ;
                                                 ;
FFFFFFFFFFFFF070.1                               ramtest:
FFFFFFFFFFFFFB00.0                                      code
FFFFFFFFFFFFF070.1      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFFB00.0                                      align   16
FFFFFFFFFFFFF070.2      3D5552AAAD5
FFFFFFFFFFFFFB00.0                               ramtest:
FFFFFFFFFFFFF080.0      04802AA5555                     ori             r1,r0,#0xAAAA5555AAAA5555       ; checkerboard pattern
FFFFFFFFFFFFFB00.0      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFF080.1                               ramtest2:
FFFFFFFFFFFFFB00.1      3D5552AAAD5
FFFFFFFFFFFFF080.1      19A02000000                     sw              r1,[r8]                 ; save the checkerboard to memory
FFFFFFFFFFFFFB00.2      05802AA5555                     ori             r1,r0,#0xAAAA5555AAAA5555       ; checkerboard pattern
FFFFFFFFFFFFF080.2      11A04000000                     lw              r2,[r8]                 ; read it back
FFFFFFFFFFFFFB10.0                               ramtest2:
FFFFFFFFFFFFF090.0      01044300006                     cmp             r3,r1,r2                ; is it the same ?
FFFFFFFFFFFFFB10.0      19A02000000                     sw              r1,[r8]                 ; save the checkerboard to memory
FFFFFFFFFFFFF090.1      080C2000008                     bnez    r3,r0,ramtest1
FFFFFFFFFFFFFB10.1      11A04000000                     lw              r2,[r8]                 ; read it back
FFFFFFFFFFFFF090.2      02210000008                     addi    r8,r8,#8                ; increment RAM pointer
FFFFFFFFFFFFFB10.2      01044300006                     cmp             r3,r1,r2                ; is it the same ?
FFFFFFFFFFFFF0A0.0      38000000000
FFFFFFFFFFFFFB20.0      2F8C00000C9                     bne     r3,r0,ramtest1
FFFFFFFFFFFFF0A0.1      03207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFFB20.1      02A10000008                     addui   r8,r8,#8                ; increment RAM pointer
FFFFFFFFFFFFF0A0.2      080C5FFFFF9                     bltz    r3,r0,ramtest2
FFFFFFFFFFFFFB20.2      38000000002
FFFFFFFFFFFFF0B0.0                               ramtest1:
FFFFFFFFFFFFFB30.0      04206000000                     cmpi    r3,r8,#0x0000_0000_0400_0000
FFFFFFFFFFFFF0B0.0      01200A00009                     or              r10,r8,r0               ; r10 = max ram address
FFFFFFFFFFFFFB30.1      2F8C1FFFF00                     blt             r3,r0,ramtest2
 
FFFFFFFFFFFFFB30.2                               ramtest1:
 
FFFFFFFFFFFFFB30.2      01200A00009                     or              r10,r8,r0               ; r10 = max ram address
                                                        ; readback the checkerboard pattern
                                                        ; readback the checkerboard pattern
FFFFFFFFFFFFF0B0.1      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFFB40.0      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFF0B0.2                               ramtest4:
FFFFFFFFFFFFFB40.1                               ramtest4:
FFFFFFFFFFFFF0B0.2      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFFB40.1      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFF0C0.0      3D5552AAAD5
FFFFFFFFFFFFFB40.2      3D5552AAAD5
FFFFFFFFFFFFF0C0.1      03086AA5555                     cmpi    r3,r2,#0xAAAA5555AAAA5555
FFFFFFFFFFFFFB50.0      04086AA5555                     cmpi    r3,r2,#0xAAAA5555AAAA5555
FFFFFFFFFFFFF0C0.2      080C2000009                     bnez    r3,r0,ramtest3
FFFFFFFFFFFFFB50.1      2F8C0000109                     bne             r3,r0,ramtest3
FFFFFFFFFFFFF0D0.0      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFFB50.2      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFF0D0.1      38000000000
FFFFFFFFFFFFFB60.0      38000000000
FFFFFFFFFFFFF0D0.2      03207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFFB60.1      04207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFF0E0.0      080C5FFFFF6                     bltz    r3,r0,ramtest4
FFFFFFFFFFFFFB60.2      2F8C1FFFF20                     blt     r3,r0,ramtest4
FFFFFFFFFFFFF0E0.1                               ramtest3:
FFFFFFFFFFFFFB70.0                               ramtest3:
FFFFFFFFFFFFF0E0.1      28A1400001E                     bne             r8,r10,ramtest8 ; check for equal maximum address
FFFFFFFFFFFFFB70.0      2FA140003A9                     bne             r8,r10,ramtest8 ; check for equal maximum address
 
 
                                                        ; perform ramtest again with inverted checkerboard
                                                        ; perform ramtest again with inverted checkerboard
FFFFFFFFFFFFF0E0.2      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFFB70.1      01000800009                     or              r8,r0,r0                ; r8 = 0
FFFFFFFFFFFFF0F0.0      3AAAAD5552A
FFFFFFFFFFFFFB70.2      3AAAAD5552A
FFFFFFFFFFFFF0F0.1      0480355AAAA                     ori             r1,r0,#0x5555AAAA5555AAAA
FFFFFFFFFFFFFB80.0      0580355AAAA                     ori             r1,r0,#0x5555AAAA5555AAAA
FFFFFFFFFFFFF0F0.2                               ramtest5:
FFFFFFFFFFFFFB80.1                               ramtest5:
FFFFFFFFFFFFF0F0.2      19A02000000                     sw              r1,[r8]
FFFFFFFFFFFFFB80.1      19A02000000                     sw              r1,[r8]
FFFFFFFFFFFFF100.0      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFFB80.2      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFF100.1      01044300006                     cmp             r3,r1,r2
FFFFFFFFFFFFFB90.0      01044300006                     cmp             r3,r1,r2
FFFFFFFFFFFFF100.2      080C2000009                     bnez    r3,r0,ramtest6
FFFFFFFFFFFFFB90.1      2F8C0000109                     bne             r3,r0,ramtest6
FFFFFFFFFFFFF110.0      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFFB90.2      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFF110.1      38000000000
FFFFFFFFFFFFFBA0.0      38000000000
FFFFFFFFFFFFF110.2      03207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFFBA0.1      04207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFF120.0      080C5FFFFF6                     bltz    r3,r0,ramtest5
FFFFFFFFFFFFFBA0.2      2F8C1FFFF20                     blt             r3,r0,ramtest5
FFFFFFFFFFFFF120.1                               ramtest6:
FFFFFFFFFFFFFBB0.0                               ramtest6:
FFFFFFFFFFFFF120.1      01200B00009                     or              r11,r8,r0               ; r11 = max ram address
FFFFFFFFFFFFFBB0.0      01200B00009                     or              r11,r8,r0               ; r11 = max ram address
                                                        ; readback checkerboard
                                                        ; readback checkerboard
FFFFFFFFFFFFF120.2      01000800009                     or              r8,r0,r0
FFFFFFFFFFFFFBB0.1      01000800009                     or              r8,r0,r0
FFFFFFFFFFFFF130.0                               ramtest7:
FFFFFFFFFFFFFBB0.2                               ramtest7:
FFFFFFFFFFFFF130.0      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFFBB0.2      11A04000000                     lw              r2,[r8]
FFFFFFFFFFFFF130.1      3AAAAD5552A
FFFFFFFFFFFFFBC0.0      3AAAAD5552A
FFFFFFFFFFFFF130.2      0308755AAAA                     cmpi    r3,r2,#0x5555AAAA5555AAAA
FFFFFFFFFFFFFBC0.1      0408755AAAA                     cmpi    r3,r2,#0x5555AAAA5555AAAA
FFFFFFFFFFFFF140.0      080C2000006                     bnez    r3,r0,ramtest8
FFFFFFFFFFFFFBC0.2      2F8C0000129                     bne             r3,r0,ramtest8
FFFFFFFFFFFFF140.1      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFFBD0.0      02210000008                     addi    r8,r8,#8
FFFFFFFFFFFFF140.2      38000000000
FFFFFFFFFFFFFBD0.1      38000000000
FFFFFFFFFFFFF150.0      03207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFFBD0.2      04207000000                     cmpi    r3,r8,#0x0000_0000_0100_0000
FFFFFFFFFFFFF150.1      080C5FFFFF8                     bltz    r3,r0,ramtest7
FFFFFFFFFFFFFBE0.0      2F8C1FFFEC0                     blt             r3,r0,ramtest7
FFFFFFFFFFFFF150.2                               ramtest8:
FFFFFFFFFFFFFBE0.1                               ramtest8:
FFFFFFFFFFFFF150.2      28216000005                     beq             r8,r11,ramtest9
FFFFFFFFFFFFFBE0.1      2FA16000088                     beq             r8,r11,ramtest9
FFFFFFFFFFFFF160.0      01216800014                     min             r8,r8,r11
FFFFFFFFFFFFFBE0.2      01216800014                     min             r8,r8,r11
FFFFFFFFFFFFF160.1                               ramtest9:
FFFFFFFFFFFFFBF0.0                               ramtest9:
FFFFFFFFFFFFF160.1      28214000004                     beq             r8,r10,ramtest10
FFFFFFFFFFFFFBF0.0      2FA14000048                     beq             r8,r10,ramtest10
FFFFFFFFFFFFF160.2      01214800014                     min             r8,r8,r10
FFFFFFFFFFFFFBF0.1      01214800014                     min             r8,r8,r10
FFFFFFFFFFFFF170.0                               ramtest10:
FFFFFFFFFFFFFBF0.2                               ramtest10:
FFFFFFFFFFFFF170.0      19810000400                     sw              r8,0x00000400   ;memend
FFFFFFFFFFFFFBF0.2      19810000400                     sw              r8,0x00000400   ;memend
 
FFFFFFFFFFFFFC00.0      0DFBE000000                     ret
 
 
 
                                                 ;-------------------------------------------
 
                                                 ; IRQ routine
 
                                                 ;-------------------------------------------
 
FFFFFFFFFFFFFC00.1                               irqrout:
 
FFFFFFFFFFFFFC00.1      03FBC000010                     subui   sp,sp,#16
 
FFFFFFFFFFFFFC00.2      27F40000001                     sm              [sp],r1/lr
 
FFFFFFFFFFFFFC10.0      20803DC0FF0                     inch    r1,PIC
 
FFFFFFFFFFFFFC10.1      2C06C140001                     beqi    r1,#1,ColdStart
 
FFFFFFFFFFFFFC10.2                               irqrout3:
 
FFFFFFFFFFFFFC10.2      2C840180002                     bnei    r1,#2,irqrout2
 
FFFFFFFFFFFFFC20.0      0C7FFFFFACC                     call    Pulse1000
 
FFFFFFFFFFFFFC20.1      2F8000000AA                     bra             irqrout1
 
FFFFFFFFFFFFFC20.2                               irqrout2:
 
FFFFFFFFFFFFFC20.2      2C84014000F                     bnei    r1,#15,irqrout1
 
FFFFFFFFFFFFFC30.0      0C7FFFFFA75                     call    KeybdIRQ
 
FFFFFFFFFFFFFC30.1                               irqrout1:
 
FFFFFFFFFFFFFC30.1      27740000001                     lm              [sp],r1/lr
 
FFFFFFFFFFFFFC30.2      02FBC000010                     addui   sp,sp,#16
 
FFFFFFFFFFFFFC40.0      00000000020                     iret
 
 
 
                                                 ;-------------------------------------------
 
                                                 ; NMI routine
 
                                                 ;-------------------------------------------
 
FFFFFFFFFFFFFC40.1                               nmirout:
 
FFFFFFFFFFFFFC40.1      00000000020                     iret
 
 
 
                                                 ;-------------------------------------------
 
                                                 ; Handle miss on Data TLB
 
                                                 ;-------------------------------------------
 
FFFFFFFFFFFFFC40.2                               DTLBHandler:
 
FFFFFFFFFFFFFC40.2      19803FF0000                     sw              r1,0xFFFF_FFFF_FFFF_0000
 
FFFFFFFFFFFFFC50.0      19805FF0008                     sw              r2,0xFFFF_FFFF_FFFF_0008
 
FFFFFFFFFFFFFC50.1                               dh1:
 
FFFFFFFFFFFFFC50.1      00802000034                     omgi    r1,#0           ; try open mutex gate #0 (TLB protector)
 
FFFFFFFFFFFFFC50.2      2F840000029                     bne             r1,r0,dh1       ; spinlock if gate is closed
 
FFFFFFFFFFFFFC60.0      00802000228                     mfspr   r1,PTA          ; get the page table address
 
FFFFFFFFFFFFFC60.1      00804000428                     mfspr   r2,BadVAddr     ; get the bad virtual address
 
FFFFFFFFFFFFFC60.2      008800005A9                     mtspr   TLBVirtPage,r2  ; which virtual address to update
 
FFFFFFFFFFFFFC70.0      01884680001                     shrui   r2,r2,#13       ; turn va into index
 
FFFFFFFFFFFFFC70.1      01044100003                     addu    r1,r1,r2
 
FFFFFFFFFFFFFC70.2      11844000000                     lw              r2,[r1]         ; get the physical address from the table
 
FFFFFFFFFFFFFC80.0      05084000000                     and             r2,r2,#FFFF_FFFF_FFFF_E000      ; mask off lower bits
 
FFFFFFFFFFFFFC80.1      00880000529                     mtspr   TLBPhysPage0,r2 ;
 
FFFFFFFFFFFFFC80.2      11844000008                     lw              r2,8[r1]        ; get the physical address from the table
 
FFFFFFFFFFFFFC90.0      05084000000                     and             r2,r2,#FFFF_FFFF_FFFF_E000      ; mask off lower bits
 
FFFFFFFFFFFFFC90.1      008800005A9                     mtspr   TLBPhysPage1,r2 ;
 
FFFFFFFFFFFFFC90.2      00800000034                     tlbwr                           ; update a random entry in the TLB
 
FFFFFFFFFFFFFCA0.0      00800000035                     cmgi    #0                      ; close the mutex gate
 
FFFFFFFFFFFFFCA0.1      11803FF0000                     lw              r1,0xFFFF_FFFF_FFFF_0000
 
FFFFFFFFFFFFFCA0.2      11805FF0008                     lw              r2,0xFFFF_FFFF_FFFF_0008
 
FFFFFFFFFFFFFCB0.0      00000000020                     iret
 
FFFFFFFFFFFFFCB0.1      37800000000                     nop
 
FFFFFFFFFFFFFCB0.2      37800000000                     nop
 
 
 
FFFFFFFFFFFFFFB0.0                                      org             0xFFFF_FFFF_FFFF_FFB0
 
FFFFFFFFFFFFFFB0.0      0CFFFFFFF12                     jmp             DTLBHandler
 
FFFFFFFFFFFFFFB0.1      37800000000                     nop
 
FFFFFFFFFFFFFFB0.2      37800000000                     nop
FFFFFFFFFFFFFFC0.0                                      org             0xFFFF_FFFF_FFFF_FFC0
FFFFFFFFFFFFFFC0.0                                      org             0xFFFF_FFFF_FFFF_FFC0
FFFFFFFFFFFFFFC0.0      37800000000                     nop
FFFFFFFFFFFFFFC0.0      0CFFFFFFF12                     jmp             DTLBHandler
FFFFFFFFFFFFFFC0.1      37800000000                     nop
FFFFFFFFFFFFFFC0.1      37800000000                     nop
FFFFFFFFFFFFFFC0.2      37800000000                     nop
FFFFFFFFFFFFFFC0.2      37800000000                     nop
FFFFFFFFFFFFFFD0.0      37800000000                     nop
FFFFFFFFFFFFFFD0.0                                      org     0xFFFF_FFFF_FFFF_FFD0
 
FFFFFFFFFFFFFFD0.0      0CFFFFFFF01                     jmp             irqrout
FFFFFFFFFFFFFFD0.1      37800000000                     nop
FFFFFFFFFFFFFFD0.1      37800000000                     nop
FFFFFFFFFFFFFFD0.2      37800000000                     nop
FFFFFFFFFFFFFFD0.2      37800000000                     nop
FFFFFFFFFFFFFFE0.0      37800000000                     nop
FFFFFFFFFFFFFFE0.0                                      org     0xFFFF_FFFF_FFFF_FFE0
 
FFFFFFFFFFFFFFE0.0      0CFFFFFFF11                     jmp             nmirout
FFFFFFFFFFFFFFE0.1      37800000000                     nop
FFFFFFFFFFFFFFE0.1      37800000000                     nop
FFFFFFFFFFFFFFE0.2      37800000000                     nop
FFFFFFFFFFFFFFE0.2      37800000000                     nop
FFFFFFFFFFFFFFF0.0                                      org             0xFFFF_FFFF_FFFF_FFF0
FFFFFFFFFFFFFFF0.0                                      org             0xFFFF_FFFF_FFFF_FFF0
FFFFFFFFFFFFFFF0.0      0CFFFFFFC00                     jmp             start
FFFFFFFFFFFFFFF0.0      0CFFFFFFA09                     jmp             start
 
FFFFFFFFFFFFFFF0.1      37800000000                     nop
 
FFFFFFFFFFFFFFF0.2      37800000000                     nop
 
 
 
 
 
 
 
0000000000000000.0      00000000000
 
0000000000000000.1      00000000000
 
 
 
 
FFFFFFFFFFFFFFF0.1      00000000000
Symbol Table:
FFFFFFFFFFFFFFF0.2      00000000000
==========================================================
 
Name                   Typ  Segment     Address/Value
 
----------------------------------------------------------
 
CR                      C       constant        000000000000000D
 
LF                      C       constant        000000000000000A
 
TAB                     C       constant        0000000000000009
 
CTRLC                   C       constant        0000000000000003
 
CTRLH                   C       constant        0000000000000008
 
CTRLS                   C       constant        0000000000000013
 
CTRLX                   C       constant        0000000000000018
 
STACKTOP                C       constant        FFFFFFFFFFFEFFF8
 
Milliseconds            C       constant        0000000000000400
 
Lastloc                 C       constant        0000000000000408
 
ScreenColor             C       constant        0000000000000414
 
CursorRow               C       constant        0000000000000416
 
CursorCol               C       constant        0000000000000418
 
KeybdEcho               C       constant        000000000000041A
 
KeybdBuffer             C       constant        0000000000000440
 
KeybdHead               C       constant        0000000000000450
 
KeybdTail               C       constant        0000000000000451
 
TEXTSCR                 C       constant        FFFFFFFFFFD00000
 
COLORSCR                C       constant        FFFFFFFFFFD10000
 
TEXTREG                 C       constant        FFFFFFFFFFDA0000
 
TEXT_COLS               C       constant        0000000000000000
 
TEXT_ROWS               C       constant        0000000000000002
 
TEXT_CURPOS             C       constant        0000000000000016
 
KEYBD                   C       constant        FFFFFFFFFFDC0000
 
KEYBDCLR                C       constant        FFFFFFFFFFDC0002
 
UART                    C       constant        FFFFFFFFFFDC0A00
 
UART_LS                 C       constant        FFFFFFFFFFDC0A01
 
PIC                     C       constant        FFFFFFFFFFDC0FF0
 
PSG                     C       constant        FFFFFFFFFFD50000
 
AC97                    C       constant        FFFFFFFFFFDC1000
 
BOOT_STACK              C       constant        FFFFFFFFFFFEFFF8
 
BITMAPSCR               C       constant        0000000100200000
 
txempty                 C       constant        0000000000000040
 
rxfull                  C       constant        0000000000000001
 
SerialGetChar           L       code            FFFFFFFFFFFFE950.0
 
SerialPutChar           L       code            FFFFFFFFFFFFE980.0
 
SetKeyboardEcho         L       code            FFFFFFFFFFFFEA40.0
 
KeybdCheckForKey        L       code            FFFFFFFFFFFFEA90.2
 
KeybdGetChar            L       code            FFFFFFFFFFFFEA40.2
 
DisplayChar             L       code            FFFFFFFFFFFFED90.1
 
DisplayString           L       code            FFFFFFFFFFFFEFD0.1
 
start                   L       code            FFFFFFFFFFFFE820.1
 
ColdStart               L       code            FFFFFFFFFFFFE820.1
 
KeybdInit               L       code            FFFFFFFFFFFFE9B0.2
 
PICInit                 L       code            FFFFFFFFFFFFE940.0
 
dcokay                  L       code            FFFFFFFFFFFFE870.1
 
ClearScreen             L       code            FFFFFFFFFFFFEC10.2
 
ClearBmpScreen          L       code            FFFFFFFFFFFFEBD0.0
 
j4                      L       code            FFFFFFFFFFFFE8C0.2
 
Monitor                 L       code            FFFFFFFFFFFFF290.2
 
HelloWorld              L       code            FFFFFFFFFFFFE8D0.1
 
j3                      L       code            FFFFFFFFFFFFE8E0.1
 
j2                      L       code            FFFFFFFFFFFFE900.0
 
MSG                     L       code            FFFFFFFFFFFFE910.0
 
MSGSTART                L       code            FFFFFFFFFFFFE920.0
 
sgc1                    L       code            FFFFFFFFFFFFF810.0
 
spc1                    L       code            FFFFFFFFFFFFE990.1
 
KeybdIRQ                L       code            FFFFFFFFFFFFE9D0.1
 
KeybdIRQa               L       code            FFFFFFFFFFFFE9F0.1
 
KeybdIRQb               L       code            FFFFFFFFFFFFEA10.1
 
KeybdIRQc               L       code            FFFFFFFFFFFFEA30.0
 
nochar                  L       code            FFFFFFFFFFFFEA80.2
 
kck1                    L       code            FFFFFFFFFFFFEAB0.1
 
KeybdCheckForKeyDirect  L       code            FFFFFFFFFFFFEAC0.0
 
cfkd1                   L       code            FFFFFFFFFFFFEAD0.1
 
KeybdGetCharDirect      L       code            FFFFFFFFFFFFEAE0.0
 
kgc1                    L       code            FFFFFFFFFFFFEAF0.0
 
gk1                     L       code            FFFFFFFFFFFFEB20.1
 
gk2                     L       code            FFFFFFFFFFFFEB20.0
 
CRLF                    L       code            FFFFFFFFFFFFF020.1
 
Pulse1000               L       code            FFFFFFFFFFFFEB30.0
 
p10001                  L       code            FFFFFFFFFFFFEB70.2
 
FlashCursor             L       code            FFFFFFFFFFFFEB80.1
 
CalcScreenLoc           L       code            FFFFFFFFFFFFED50.1
 
flshcrsr1               L       code            FFFFFFFFFFFFEBC0.1
 
csj4                    L       code            FFFFFFFFFFFFEC50.0
 
AsciiToScreen           L       code            FFFFFFFFFFFFED10.1
 
ScrollUp                L       code            FFFFFFFFFFFFEC70.0
 
scrup1                  L       code            FFFFFFFFFFFFEC90.2
 
BlankLine               L       code            FFFFFFFFFFFFECD0.0
 
blnkln1                 L       code            FFFFFFFFFFFFECF0.2
 
atoscr1                 L       code            FFFFFFFFFFFFED30.1
 
ScreenToAscii           L       code            FFFFFFFFFFFFED40.0
 
stasc1                  L       code            FFFFFFFFFFFFED50.0
 
dccr                    L       code            FFFFFFFFFFFFEDB0.0
 
dcx7                    L       code            FFFFFFFFFFFFEDD0.1
 
dcx6                    L       code            FFFFFFFFFFFFEDE0.1
 
dcx8                    L       code            FFFFFFFFFFFFEE10.0
 
dcx9                    L       code            FFFFFFFFFFFFEE30.2
 
dcx10                   L       code            FFFFFFFFFFFFEE60.1
 
dcx11                   L       code            FFFFFFFFFFFFEE90.1
 
dcx12                   L       code            FFFFFFFFFFFFEE80.2
 
dcx13                   L       code            FFFFFFFFFFFFEEB0.2
 
dcx5                    L       code            FFFFFFFFFFFFEEE0.1
 
dcx3                    L       code            FFFFFFFFFFFFEF10.2
 
dcx4                    L       code            FFFFFFFFFFFFEF50.1
 
dclf                    L       code            FFFFFFFFFFFFEF50.0
 
IncCursorPos            L       code            FFFFFFFFFFFFEF60.0
 
IncCursorRow            L       code            FFFFFFFFFFFFEF90.0
 
icc1                    L       code            FFFFFFFFFFFFEFC0.1
 
icr1                    L       code            FFFFFFFFFFFFEF90.2
 
dspj1                   L       code            FFFFFFFFFFFFEFE0.1
 
dsret                   L       code            FFFFFFFFFFFFF000.0
 
DisplayStringCRLF       L       code            FFFFFFFFFFFFF000.2
 
DisplayNybble           L       code            FFFFFFFFFFFFF050.2
 
dispnyb1                L       code            FFFFFFFFFFFFF080.0
 
DisplayByte             L       code            FFFFFFFFFFFFF090.1
 
DisplayWord             L       code            FFFFFFFFFFFFF0C0.0
 
dspwd1                  L       code            FFFFFFFFFFFFF0D0.0
 
DisplayMem              L       code            FFFFFFFFFFFFF0E0.2
 
dspmem1                 L       code            FFFFFFFFFFFFF110.0
 
BinToBCD                L       code            FFFFFFFFFFFFF140.0
 
bta1                    L       code            FFFFFFFFFFFFF150.1
 
BCDToAscii              L       code            FFFFFFFFFFFFF1B0.0
 
bta2                    L       code            FFFFFFFFFFFFF1C0.0
 
BinToStr                L       code            FFFFFFFFFFFFF200.2
 
btos3                   L       code            FFFFFFFFFFFFF230.0
 
btos1                   L       code            FFFFFFFFFFFFF230.1
 
btos2                   L       code            FFFFFFFFFFFFF270.1
 
PromptLn                L       code            FFFFFFFFFFFFF2A0.1
 
Prompt3                 L       code            FFFFFFFFFFFFF2B0.1
 
Prompt1                 L       code            FFFFFFFFFFFFF2D0.0
 
Prompt2                 L       code            FFFFFFFFFFFFF300.1
 
Editmem                 L       code            FFFFFFFFFFFFF450.0
 
Dumpmem                 L       code            FFFFFFFFFFFFF4A0.0
 
ExecuteCode             L       code            FFFFFFFFFFFFF480.1
 
LoadS19                 L       code            FFFFFFFFFFFFF590.0
 
DisplayHelp             L       code            FFFFFFFFFFFFF370.1
 
TestCLS                 L       code            FFFFFFFFFFFFF330.0
 
HelpMsg                 L       code            FFFFFFFFFFFFF390.0
 
ignBlanks               L       code            FFFFFFFFFFFFF420.0
 
ignBlanks1              L       code            FFFFFFFFFFFFF420.2
 
GetHexNumber            L       code            FFFFFFFFFFFFF4E0.1
 
edtmem1                 L       code            FFFFFFFFFFFFF460.1
 
gthxn2                  L       code            FFFFFFFFFFFFF4F0.2
 
AsciiToHexNybble        L       code            FFFFFFFFFFFFF530.2
 
gthxn1                  L       code            FFFFFFFFFFFFF520.2
 
gthx3                   L       code            FFFFFFFFFFFFF580.1
 
gthx5                   L       code            FFFFFFFFFFFFF550.0
 
gthx6                   L       code            FFFFFFFFFFFFF560.2
 
ProcessRec              L       code            FFFFFFFFFFFFF5A0.0
 
NextRec                 L       code            FFFFFFFFFFFFF590.1
 
sGetChar                L       code            FFFFFFFFFFFFF7F0.0
 
ProcessS1               L       code            FFFFFFFFFFFFF690.1
 
ProcessS2               L       code            FFFFFFFFFFFFF6A0.0
 
ProcessS3               L       code            FFFFFFFFFFFFF6A0.2
 
ProcessS7               L       code            FFFFFFFFFFFFF6B0.1
 
ProcessS8               L       code            FFFFFFFFFFFFF6C0.1
 
ProcessS9               L       code            FFFFFFFFFFFFF6D0.1
 
pcssxa                  L       code            FFFFFFFFFFFFF620.0
 
pcss1a                  L       code            FFFFFFFFFFFFF620.2
 
S19Get16BitAddress      L       code            FFFFFFFFFFFFF6E0.1
 
S19Get24BitAddress      L       code            FFFFFFFFFFFFF700.1
 
S19Get32BitAddress      L       code            FFFFFFFFFFFFF720.1
 
S1932b                  L       code            FFFFFFFFFFFFF790.1
 
S1932a                  L       code            FFFFFFFFFFFFF760.2
 
sgc2                    L       code            FFFFFFFFFFFFF7F0.2
 
AUXIN                   L       code            FFFFFFFFFFFFF8C0.0
 
SetupAC97               L       code            FFFFFFFFFFFFF820.2
 
sac971                  L       code            FFFFFFFFFFFFF830.1
 
sac972                  L       code            FFFFFFFFFFFFF850.1
 
Beep                    L       code            FFFFFFFFFFFFF850.2
 
beep1                   L       code            FFFFFFFFFFFFF8B0.0
 
AXIRET                  L       code            FFFFFFFFFFFFF8D0.2
 
BYEBYE                  L       code            FFFFFFFFFFFFF8E0.0
 
msgInit                 L       code            FFFFFFFFFFFFF8F0.0
 
OKMSG                   L       code            FFFFFFFFFFFFFADF.0
 
msgWhat                 L       code            FFFFFFFFFFFFF92D.0
 
SRYMSG                  L       code            FFFFFFFFFFFFFAF0.0
 
CLMSG                   L       code            FFFFFFFFFFFFFAF2.0
 
msgReadError            L       code            FFFFFFFFFFFFF93E.0
 
msgNumTooBig            L       code            FFFFFFFFFFFFF959.0
 
msgDivZero              L       code            FFFFFFFFFFFFF96D.0
 
msgVarSpace             L       code            FFFFFFFFFFFFF980.0
 
msgBytesFree            L       code            FFFFFFFFFFFFF998.0
 
msgReady                L       code            FFFFFFFFFFFFF9A6.0
 
msgComma                L       code            FFFFFFFFFFFFF9B0.0
 
msgLineRange            L       code            FFFFFFFFFFFFF9C4.0
 
msgVar                  L       code            FFFFFFFFFFFFF9DA.0
 
msgRNDBad               L       code            FFFFFFFFFFFFF9F1.0
 
msgSYSBad               L       code            FFFFFFFFFFFFFA05.0
 
msgInputVar             L       code            FFFFFFFFFFFFFA17.0
 
msgNextFor              L       code            FFFFFFFFFFFFFA34.0
 
msgNextVar              L       code            FFFFFFFFFFFFFA47.0
 
msgBadGotoGosub         L       code            FFFFFFFFFFFFFA6B.0
 
msgRetWoGosub           L       code            FFFFFFFFFFFFFA88.0
 
msgTooBig               L       code            FFFFFFFFFFFFFA9F.0
 
msgExtraChars           L       code            FFFFFFFFFFFFFAB4.0
 
INITMSG                 L       code            FFFFFFFFFFFFFAD7.0
 
HOWMSG                  L       code            FFFFFFFFFFFFFAE6.0
 
WHTMSG                  L       code            FFFFFFFFFFFFFAEB.0
 
LSTROM                  C       constant        0000000000000000
 
typef                   L       bss             0000000000000080
 
OSSP                    L       bss             0000000000000088
 
CURRNT                  L       bss             0000000000000090
 
STKGOS                  L       bss             0000000000000098
 
STKINP                  L       bss             00000000000000A0
 
LOPVAR                  L       bss             00000000000000A8
 
LOPINC                  L       bss             00000000000000B0
 
LOPLMT                  L       bss             00000000000000B8
 
LOPLN                   L       bss             00000000000000C0
 
LOPPT                   L       bss             00000000000000C8
 
TXTUNF                  L       bss             00000000000000D0
 
VARBGN                  L       bss             00000000000000D8
 
IVARBGN                 L       bss             00000000000000E0
 
SVARBGN                 L       bss             00000000000000E8
 
FVARBGN                 L       bss             00000000000000F0
 
STKBOT                  L       bss             00000000000000F8
 
NUMWKA                  L       bss             0000000000000100
 
BUFFER                  L       bss             000000000000010E
 
ramtest                 L       code            FFFFFFFFFFFFFB00.0
 
ramtest2                L       code            FFFFFFFFFFFFFB10.0
 
ramtest1                L       code            FFFFFFFFFFFFFB30.2
 
ramtest4                L       code            FFFFFFFFFFFFFB40.1
 
ramtest3                L       code            FFFFFFFFFFFFFB70.0
 
ramtest8                L       code            FFFFFFFFFFFFFBE0.1
 
ramtest5                L       code            FFFFFFFFFFFFFB80.1
 
ramtest6                L       code            FFFFFFFFFFFFFBB0.0
 
ramtest7                L       code            FFFFFFFFFFFFFBB0.2
 
ramtest9                L       code            FFFFFFFFFFFFFBF0.0
 
ramtest10               L       code            FFFFFFFFFFFFFBF0.2
 
irqrout                 L       code            FFFFFFFFFFFFFC00.1
 
irqrout3                L       code            FFFFFFFFFFFFFC10.2
 
irqrout2                L       code            FFFFFFFFFFFFFC20.2
 
irqrout1                L       code            FFFFFFFFFFFFFC30.1
 
nmirout                 L       code            FFFFFFFFFFFFFC40.1
 
DTLBHandler             L       code            FFFFFFFFFFFFFC40.2
 
dh1                     L       code            FFFFFFFFFFFFFC50.1

powered by: WebSVN 2.1.0

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