|
|
1.1 root 1: ; A very minimalistic TOS ROM replacement, used for testing without real TOS
2:
3: org $e00000
4:
5: TEST_PRG_BASEPAGE equ $1000
6:
7: rom_header:
8: bra.s start ; Branch to 0xe00030
9: dc.w $0001 ; TOS version
10: dc.l start ; Reset PC value
11: dc.l rom_header ; Pointer to ROM header
12: dc.l TEST_PRG_BASEPAGE ; End of OS BSS
13: dc.l start ; Reserved
14: dc.l $0 ; Unused (GEM's MUPB)
15: dc.l $03032018 ; Fake date
16: dc.w $0001 ; PAL flag
17: dc.w $4c63 ; Fake DOS date
18: dc.l $00000880 ; Fake pointer 1 (mem pool)
19: dc.l $00000870 ; Fake pointer 2 (key shift)
20: dc.l $00000800 ; Addr of basepage var
21: dc.l $0 ; Reserved
22: start:
23: move #$2700,sr
24: reset
25: move.b #5,$ffff8001.w ; Fake memory config
26: lea $20000,sp ; Set up SSP
27: lea $fa0000,a0
28: cmp.l #$abcdef42,(a0) ; Cartridge enabled?
29: bne.s no_sys_init
30: lea unhandled_error(pc),a1
31: movea.w #8,a0 ; Start with bus error handler
32: set_exc_loop:
33: move.l a1,(a0)+ ; Set all exception handlers
34: cmp.w #$1c0,a0
35: ble.s set_exc_loop
36: dc.w $a ; Call SYSINIT_OPCODE to init trap #1
37:
38: no_sys_init:
39: lea rte_only(pc),a1
40: move.l a1,$68 ; Ignore HBLs
41: move.l a1,$72 ; Ignore VBLs
42:
43: moveq #0,d0
44: movea.l d0,a0
45: movea.l d0,a1
46: move #$0700,sr ; Go to user mode
47: lea $18000,sp ; Set up USP
48: pea TEST_PRG_BASEPAGE.w
49: pea rom_header(pc)
50: jmp TEST_PRG_BASEPAGE+$100.w
51:
52:
53: unhandled_err_txt:
54: dc.b "ERROR: Unhandled exception!",13,10,0
55: even
56:
57: unhandled_error:
58: pea unhandled_err_txt(pc)
59: move.w #9,-(sp)
60: trap #1 ; Cconws
61: addq.l #6,sp
62:
63: move.w #1,-(sp)
64: move.w #76,-(sp)
65: trap #1 ; Pterm
66:
67: rte_only:
68: rte
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.