/
IPL_TB.s
61 lines (46 loc) · 961 Bytes
/
IPL_TB.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.include \include\iocscall.mac
.cpu 68000
.text
boot:
bra.w entry
dc.b "FDD IPL"
.even
entry:
lea (stack_end,pc),a7
move.w #$0,d1
move.w #$0,d2
IOCS _B_LOCATE
IOCS _OS_CURON
lea.l (TXT_MSG_PUSHKEY,pc),a1
IOCS _B_PRINT
; KEY WAIT
IOCS _B_KEYINP
lea.l (TXT_MSG_LOADING,pc),a1
IOCS _B_PRINT
; DISK READ
; SIDE:0[裏], track1, sector1から8sector分を読み込んで、$3000からのRAM領域に配置
move.l #$03000001,d2 ; sector len:3(1024), side = 0, sector = 1
clr.l d0
move.w #$1,d0 ; track number
swap d0 ; track:bit23-16
add.l d0,d2
move.l #$9000,d1 ; drive0
ori.w #$0050,d1 ; 0111_0000: MFM, RETRY, SEEK
move.l #8*1024,d3 ; size
move.l #$3000,a1 ; 読み込み先
IOCS _B_READ
jmp $3000
.data
.even
TXT_MSG_PUSHKEY:
.dc.b "original boot loader",$0d,$0a
.dc.b "PUSH ANY KEY",$0d,$0a,$00
.even
TXT_MSG_LOADING:
.dc.b "LOADING...",$0d,$0a,$00
.bss
.even
stack:
ds.b 256
stack_end:
.end