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