annotate ipl/loader_asm.S @ 91:8479bfdeb375

merge
author Jonathan Pevarnek <pevarnj@gmail.com>
date Thu, 12 May 2011 13:25:58 -0400
parents 039a93c48889
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
1 .text
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
2 .align 4
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3 .globl __do_io
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
4 .type __do_io, @function
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5 __do_io:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7 # r4 = 0x80000000
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 XGR %r4, %r4
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 LHI %r4, 0x8
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11 SLL %r4, 20
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13 # r14 = r14 & 0x7fffffff don't ask, it's strangely retarded
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15 L %r1,ADDRMASK(%r4)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 NR %r14, %r1 # mask out the bit
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18 # set up the interrupt handler
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19 MVC 0x1f0(16),IOPSW(%r4) # SET NEW IO PSW
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
20 LA %r1,IOHANDLER(%r4) # GET HANDLER ADDRESS
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
21 STG %r1,0x1f0+8 # SAVE IN NEW PSW
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
22
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
23 L %r1, 0xb8 # load subsystem ID
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
24
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25 SSCH ORB(%r4) # issue IO
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
26
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
27 # Load Control Register 6 with I/O interrupt subclass mask
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
28 STCTG 6,6,TMPVAR(%r4) # GET CR6
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29 OI TMPVAR+4(%r4),0xFF # enable all
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 LCTLG 6,6,TMPVAR(%r4) # RELOAD MODIFIED CR6
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
31
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
32 /*
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
33 7) Enable the PSW for I/O interrupts and go into wait state (you need bits 6, 12 & 14 set to 1 in the PSW : X'020A000000000000' is a good example)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
34 */
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
35 LPSWE WAITPSW(%r4)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
36
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
37 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
38 # The IO interrupt handler
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
39 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
40 .globl IOHANDLER
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
41 IOHANDLER:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
42 # is this for us?
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
43 L %r1, MAGICVAL(%r4)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
44 C %r1, 0xbc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
45 BNE IONOTDONE(%r4)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
46
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
47 # it is!
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
48
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
49 L %r1, 0xb8 # load subsystem ID
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
50
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
51 TSCH IRB(%r4)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
52
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
53 /*
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
54 FIXME: we should do more checking!
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
55
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
56 11) If Unit check or Channel Status|=0 : An I/O error occurred and act accordingly
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
57 12) If unit exception : End of media (for tape & cards) and act accordingly
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
58 13) If device end : I/O Completed.. Perform post I/O stuff (like advancing your pointers) and back to step 3
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
59 */
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
60
29
039a93c48889 ipl: wait for unit exception to indicate end of medium
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
61 # unit exception? (end of media?)
11
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
62 L %r1,IRB+5(%r4)
29
039a93c48889 ipl: wait for unit exception to indicate end of medium
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
63 LA %r0,0x01
11
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
64 NR %r0,%r1
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
65 LA %r2,1 # return 1 - end of medium
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
66 BCR 4,%r14 # unit chk => return
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
67
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
68 # check the SCSW.. If CE Only : LPSW Old I/O PSW
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
69 LA %r0,0x04
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
70 NR %r0,%r1
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
71 LA %r2,0 # means IO done
ec991c3809db make the ipl code generic
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 0
diff changeset
72 BCR 4,%r14 # device end => return
0
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
73
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
74 IONOTDONE:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
75 LPSWE 0x170
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
76
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
77 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
78 # The PGM interrupt handler
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
79 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
80 .globl PGMHANDLER
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
81 PGMHANDLER:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
82 STMG %r1,%r3,0x200
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
83
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
84 # r3 = 0x80000000
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
85 XGR %r3, %r3
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
86 LHI %r3, 0x8
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
87 SLL %r3, 20
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
88
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
89 # is ILC == 3?
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
90 LGH %r2,0x8C
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
91 CGHI %r2,0x0006
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
92 BNE ERR
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
93
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
94 # grab the old PSW address, subtract length of TPROT, and compare it
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
95 # with the TPROT opcode (0xe501)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
96 LG %r1,0x158
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
97 AGHI %r1,-6
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
98 LLGH %r2,TPROTOP(%r3)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
99 LLGH %r1,0(%r1)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
100 CGR %r2,%r1
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
101 BNE ERR(%r3)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
102
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
103 # set CC=3
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
104 OI 0x152,0x30
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
105
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
106 LMG %r1,%r3,0x200
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
107
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
108 LPSWE 0x150
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
109
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
110 ERR:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
111 .byte 0x00, 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
112
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
113
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
114 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
115 # Useful data
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
116 #
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
117 .data
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
118 .globl TPROTOP
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
119 TPROTOP:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
120 .byte 0xe5, 0x01
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
121
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
122 .align 8
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
123 .globl IOPSW
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
124 IOPSW:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
125 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
126 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
127 # 0 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
128 # 1 0 PER Mask (R) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
129 # 2-4 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
130 # 5 0 DAT Mode (T) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
131 # 6 0 I/O Mask (IO) enabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
132 # 7 0 External Mask (EX) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
133
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
134 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
135 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
136 # 8-11 0 Key
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
137 # 12 0 <one>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
138 # 13 0 Machine-Check Mask (M) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
139 # 14 0 Wait State (W) executing
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
140 # 15 0 Problem State (P) supervisor state
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
141
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
142 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
143 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
144 # 16-17 0 Address-Space Control (AS) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
145 # 18-19 0 Condition Code (CC)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
146 # 20-23 0 Program Mask exceptions disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
147
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
148 .byte 0x01
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
149 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
150 # 24-30 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
151 # 31 1 Extended Addressing (EA) EA + BA = 64 mode
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
152
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
153 .byte 0x80
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
154 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
155 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
156 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
157 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
158 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
159 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
160 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
161 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
162 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
163 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
164 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
165 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
166 # 32 1 Basic Addressing (BA) BA = 31, !BA = 24
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
167 # 33-63 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
168 # 64-127 addr Instruction Address Address to exec
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
169
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
170 .globl WAITPSW
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
171 WAITPSW:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
172 .byte 0x02
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
173 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
174 # 0 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
175 # 1 0 PER Mask (R) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
176 # 2-4 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
177 # 5 0 DAT Mode (T) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
178 # 6 1 I/O Mask (IO) enabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
179 # 7 0 External Mask (EX) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
180
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
181 .byte 0x02
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
182 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
183 # 8-11 0 Key
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
184 # 12 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
185 # 13 0 Machine-Check Mask (M) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
186 # 14 1 Wait State (W) not executing
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
187 # 15 0 Problem State (P) supervisor state
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
188
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
189 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
190 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
191 # 16-17 0 Address-Space Control (AS) disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
192 # 18-19 0 Condition Code (CC)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
193 # 20-23 0 Program Mask exceptions disabled
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
194
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
195 .byte 0x01
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
196 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
197 # 24-30 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
198 # 31 1 Extended Addressing (EA) EA + BA = 64 mode
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
199
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
200 .byte 0x80
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
201 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
202 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
203 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
204 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
205 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
206 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
207 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
208 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
209 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
210 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
211 .byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
212 # bits value name desc
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
213 # 32 1 Basic Addressing (BA) BA = 31, !BA = 24
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
214 # 33-63 0 <zero>
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
215 # 64-127 addr Instruction Address Address to exec
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
216
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
217 .globl TMPVAR
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
218 TMPVAR:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
219 .8byte 0x0
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
220
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
221 .globl ADDRMASK
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
222 ADDRMASK:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
223 .4byte 0x7fffffff
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
224
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
225 .globl MAGICVAL
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
226 MAGICVAL:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
227 .4byte 0x12345678
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
228
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
229 .globl IRB
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
230 IRB:
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
231 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
232 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
233 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
234 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
235 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
236 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
237 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
238 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
239 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
240 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
241 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
242 .8byte 0x00
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
243