1
0
mirror of https://github.com/livingcomputermuseum/UniBone.git synced 2026-01-27 20:37:36 +00:00

Start MSCP test, KW11 without "line monitor bit clear"

This commit is contained in:
Joerg Hoppe
2019-09-19 12:58:38 +02:00
parent 5812d82651
commit b9d28d73c4
5 changed files with 299 additions and 317 deletions

View File

@@ -12,6 +12,29 @@ duiflg: .word 1 ; Interrupt flags
dubuff: .blkw 1000+1 ; data buffer: 512 words
durpkt: .blkw 70 ; rpkt structure, guessed from M9312 code
.word 4711 ; guard word, overwritten?
ducpkt: .blkw 100 ; cpkt structure
.word 4712 ; guard word, overwritten?
ducomm: .blkw 100 ; comm structure
.word 4713 ; guard word, overwritten?
; MSCP init and command data
; pointed to by r3
dudt:
.word 100000 ; S1: 100000 = no int, ring size 1, no vector
.word ducomm ; S2: 002404 = ringbase lo addr
.word 000000 ; S3: 000000 = no purge/poll, ringbase hi addr
.word 000001 ; S4: 000001 = go bit
;
; MSCP command data
;
.byte 011,000 ; cmd=011(online), bytecnt_hi=000(0)
.byte 041,002 ; cmd=041(read), bytecnt_hi=002(512)
.word 0
duecnt: .word 1 ; event counter
duisr:
@@ -26,8 +49,49 @@ duinit:
; --- Restart new DMA transmission
dugo:
mov #dubase,r1 ; r1 = controller base address
; code from ROM 23-767A9 for M9312
; TODO: read block 0 like boot loader
clr r0 ; unit #0
mov r0,(r1)+ ; init controller (write IP), bump ptr
mov #4000,r5 ; S1 state bitmask
mov #dudt,r3 ; point to data
halt
; write 4 init words, with r5 mask from 4000 to 40000
1$: tst (r1) ; error bit set ?
bpl 2$
halt ; halt on error
2$: bit (r1),r5 ; step bit set ?
beq 1$ ; not yet, wait loop
mov (r3)+,(r1) ; yes, send next init data
asl r5 ; next mask
bpl 1$ ; s4 done? br if not yet
4$: mov #dubuff,r2 ; set bufptr to 0
5$: clr (r2)+ ; clear buffer [0..2403]
cmp r2,#ducomm ; check for end of buffer
bne 5$ ; loop if not done
; 1st loop: Drive online. 2nd loop: read block
mov r2,@#ducpkt-4 ; r2= ducomm. set lnt -- R2=2404
movb (r3)+,@#ducpkt+10 ; R3 in init data - set command
movb (r3),@#ducpkt+15 ; set bytecnt(hi)
mov r0,@#ducpkt+4 ; set unit
mov #durpkt,(r2)+ ; rq desc addr
mov r5,(r2)+ ; rq own bit15
mov #ducpkt,(r2)+ ; cp desc addr
mov r5,(r2)+ ; cq own bit15
mov -2(r1),r2 ; wake controller (read IP)
6$: tst @#ducomm+2 ; rq own controller ?
bmi 6$ ; loop if not done
tstb @#durpkt+12 ; check for error ?
beq 7$
halt ; yup, fail back to begin to retry
7$:
tstb (r3)+ ; check end of table ?
beq 4$ ; br if not yet
inc duecnt ; register as event

View File

@@ -25,5 +25,7 @@ kwinit:
; --- Restart new INTR
kwgo:
; nothing todo, INTR repeated automatically
; bic #200,@#kwbase ; clear INTERRUPT MONITOR bit
return

View File

@@ -24,8 +24,8 @@
24
25 ; enable tests
26 000001 kwenab = 1
27 000001 rkenab = 1
28 000001 rlenab = 1
27 000000 rkenab = 0
28 000000 rlenab = 0
29 000000 ryenab = 0 ; not yet tested
30 000000 duenab = 0 ; not yet implemeneted
31
@@ -36,28 +36,28 @@
36 ; Vectors
37
38 000060 . = corvec
39 000060 001262 .word corisr ; RCV interrupt
39 000060 001170 .word corisr ; RCV interrupt
40 000062 000340 .word 340
41 000064 . = coxvec
42 000064 001276 .word coxisr ; XMT interrupt
42 000064 001204 .word coxisr ; XMT interrupt
43 000066 000340 .word 340
44
45 000001 .if ne kwenab
46 000100 . = kwvect
47 000100 001522 .word kwisr ; periodic interrupt
47 000100 001430 .word kwisr ; periodic interrupt
48 000102 000340 .word 340
49 .endc
50
51 000001 .if ne rlenab
52 000160 . = rlvect ; RL11
53 000160 004644 .word rlisr
54 000162 000340 .word 340
51 000000 .if ne rlenab
52 . = rlvect ; RL11
53 .word rlisr
54 .word 340
55 .endc
56
57 000001 .if ne rkenab
58 000220 . = rkvect ; RK11
59 000220 002566 .word rkisr
60 000222 000340 .word 340
57 000000 .if ne rkenab
58 . = rkvect ; RK11
59 .word rkisr
60 .word 340
61 .endc
62
63 000000 .if ne ryenab
@@ -84,16 +84,16 @@
84 001004 005037 177776 clr @#psw ; priorty level 0, allow INTR
85 ; Initialize devices
86 001010 000005 reset
87 001012 004737 001304 call corini
88 001016 004737 001320 call coxini
87 001012 004737 001212 call corini
88 001016 004737 001226 call coxini
89 000001 .if ne kwenab
90 001022 004737 001534 call kwinit
90 001022 004737 001442 call kwinit
91 .endc
92 000001 .if ne rkenab
93 001026 004737 002574 call rkinit
92 000000 .if ne rkenab
93 call rkinit
94 .endc
95 000001 .if ne rlenab
96 001032 004737 004652 call rlinit
95 000000 .if ne rlenab
96 call rlinit
97 .endc
98 000000 .if ne ryenab
99 call ryinit
@@ -102,107 +102,108 @@
102 call duinit
103 .endc
104
105 001036 012701 004772 mov #shello,r1 ; Print "Hello" message
106 001042 004737 001334 call puts
105 001026 012701 001460 mov #shello,r1 ; Print "Hello" message
106 001032 004737 001242 call puts
107
108 ; main loop: check interrupt flags, restart DMA
109 ; process serial input
110 loop:
111 001046 004737 001060 call dokbd ; check keyboard input
112 001052 004737 001116 call dodev ; check device activities
113 001056 000773 br loop
111 001036 004737 001050 call dokbd ; check keyboard input
112 001042 004737 001110 call dodev ; check device activities
113 001046 000773 br loop
114
115
116
117 ; --- check keyboard input
118 dokbd:
119 001060 004737 001466 call getc
120 001064 103013 bcc 9$ ; nothing received
119 001050 004737 001374 call getc
120 001054 103014 bcc 9$ ; nothing received
121 ; process char in r0
122 001066 120027 000003 cmpb r0,#3
123 001072 001006 bne 1$
124 001074 012701 005063 mov #sbye,r1 ; ^C: print "Bye", back to monitor
125 001100 004737 001334 call puts
126 001104 000137 165020 jmp monitr
127 1$:
128 ; echo chars without special meaning
129 001110 004737 001446 call putc
130 9$:
131 001114 000207 return
132
133 ; -- check device activities
134 dodev:
135 ; For all devices: restart device DMA if Interrupt received
136 000001 .if ne kwenab
137 001116 005737 001516 tst kwiflg
138 001122 001412 beq 1$
139 001124 005037 001516 clr kwiflg
140 001130 004737 001550 call kwgo
141 001134 012700 000127 mov #kwlabl,r0 ; progress printout
142 001140 012701 001520 mov #kwecnt,r1
143 001144 004737 001236 call progrs
144 1$:
145 .endc
146
147 000001 .if ne rkenab
148 001150 005737 001560 tst rkiflg
149 001154 001412 beq 2$
150 001156 005037 001560 clr rkiflg
151 001162 004737 002602 call rkgo
152 001166 012700 000113 mov #rklabl,r0 ; progress printout
153 001172 012701 002564 mov #rkecnt,r1
154 001176 004737 001236 call progrs
155 2$:
156 .endc
157 000001 .if ne rlenab
158 001202 005737 002636 tst rliflg
159 001206 001412 beq 3$
160 001210 005037 002636 clr rliflg
161 001214 004737 004660 call rlgo
162 001220 012700 000114 mov #rllabl,r0 ; progress printout
163 001224 012701 004642 mov #rlecnt,r1
164 001230 004737 001236 call progrs
165 3$:
166 .endc
167 000000 .if ne ryenab
168 tst ryiflg
169 beq 4$
170 clr ryiflg
171 call rygo
172 mov #rylabl,r0 ; progress printout
173 mov #ryecnt,r1
174 call progrs
175 4$:
176 .endc
177 000000 .if ne ryenab
178 tst duiflg
179 beq 5$
180 clr duiflg
181 call dugo
182 mov #dulabl,r0 ; progress printout
183 mov #duecnt,r1
184 call progrs
185 5$:
186 .endc
187
188 001234 000207 return
189
122 001056 120027 000003 cmpb r0,#3
123 001062 001007 bne 1$
124 001064 012701 001551 mov #sbye,r1 ; ^C: print "Bye", back to monitor
125 001070 004737 001242 call puts
126 001074 000005 reset ; stop devices
127 001076 000137 165020 jmp monitr
128 1$:
129 ; echo chars without special meaning
130 001102 004737 001354 call putc
131 9$:
132 001106 000207 return
133
134 ; -- check device activities
135 dodev:
136 ; For all devices: restart device DMA if Interrupt received
137 000001 .if ne kwenab
138 001110 005737 001424 tst kwiflg
139 001114 001412 beq 1$
140 001116 005037 001424 clr kwiflg
141 001122 004737 001456 call kwgo
142 001126 012700 000127 mov #kwlabl,r0 ; progress printout
143 001132 012701 001426 mov #kwecnt,r1
144 001136 004737 001144 call progrs
145 1$:
146 .endc
147
148 000000 .if ne rkenab
149 tst rkiflg
150 beq 2$
151 clr rkiflg
152 call rkgo
153 mov #rklabl,r0 ; progress printout
154 mov #rkecnt,r1
155 call progrs
156 2$:
157 .endc
158 000000 .if ne rlenab
159 tst rliflg
160 beq 3$
161 clr rliflg
162 call rlgo
163 mov #rllabl,r0 ; progress printout
164 mov #rlecnt,r1
165 call progrs
166 3$:
167 .endc
168 000000 .if ne ryenab
169 tst ryiflg
170 beq 4$
171 clr ryiflg
172 call rygo
173 mov #rylabl,r0 ; progress printout
174 mov #ryecnt,r1
175 call progrs
176 4$:
177 .endc
178 000000 .if ne duenab
179 tst duiflg
180 beq 5$
181 clr duiflg
182 call dugo
183 mov #dulabl,r0 ; progress printout
184 mov #duecnt,r1
185 call progrs
186 5$:
187 .endc
188
189 001142 000207 return
190
191 ; progress
192 ; check if the counter with address in r1 is at
193 ; 1024. if yes, print the char in r0
194 progrs:
195 ; bic #777700,(r1) ; mask counter to 0..63
196 001236 042711 177400 bic #777400,(r1) ; mask counter to 0..255
197 ; bic #776000,(r1) ; mask counter to 0..1023
198 001242 001002 bne 9$
199 001244 004737 001446 call putc ; is at 0: print label character
200 9$:
201 001250 000207 return
202
191
192 ; progress
193 ; check if the counter with address in r1 is at
194 ; 1024. if yes, print the char in r0
195 progrs:
196 ; bic #777700,(r1) ; mask counter to 0..63
197 001144 042711 177400 bic #777400,(r1) ; mask counter to 0..255
198 ; bic #776000,(r1) ; mask counter to 0..1023
199 001150 001002 bne 9$
200 001152 004737 001354 call putc ; is at 0: print label character
201 9$:
202 001156 000207 return
203
204
205 .include ma_cons.mac
205
206 .include ma_cons.mac
1
2 .title ma_cons - Serial Console I/O
3 000060 corvec= 060 ; vector for Receiver
@@ -215,30 +216,30 @@
10
11 ; -- ISRs, increment Interrupt FLags
12
13 001252 000001 corifl: .word 1 ; Interrupt flags
14 001254 000001 coxifl: .word 1
13 001160 000001 corifl: .word 1 ; Interrupt flags
14 001162 000001 coxifl: .word 1
15
16 001256 corbuf: .blkw 1 ; data buffer
17 001260 coxbuf: .blkw 1
16 001164 corbuf: .blkw 1 ; data buffer
17 001166 coxbuf: .blkw 1
18
19 corisr:
20 001262 013737 177562 001256 mov @#corbas+2,corbuf ; read char, clear INTR
21 001270 005237 001252 inc corifl
22 001274 000002 rti
20 001170 013737 177562 001164 mov @#corbas+2,corbuf ; read char, clear INTR
21 001176 005237 001160 inc corifl
22 001202 000002 rti
23
24 coxisr:
25 001276 005237 001254 inc coxifl
26 001302 000002 rti
25 001204 005237 001162 inc coxifl
26 001210 000002 rti
27
28 ; -- Initialize device after RESET
29 corini:
30 001304 012737 000100 177560 mov #100,@#corbas ; Bit 6 = Receiver Interrupt Enable
31 001312 005037 001252 clr corifl
32 001316 000207 return
30 001212 012737 000100 177560 mov #100,@#corbas ; Bit 6 = Receiver Interrupt Enable
31 001220 005037 001160 clr corifl
32 001224 000207 return
33 coxini:
34 001320 012737 000100 177564 mov #100,@#coxbas ; Bit 6 = Transmitter Interrupt Enable
35 001326 005037 001254 clr coxifl
36 001332 000207 return
34 001226 012737 000100 177564 mov #100,@#coxbas ; Bit 6 = Transmitter Interrupt Enable
35 001234 005037 001162 clr coxifl
36 001240 000207 return
37
38
39
@@ -247,69 +248,69 @@
42 ; puts - print a string
43 ; r1 = pointer, r0,r1 changed
44 puts:
45 001334 112100 movb (r1)+,r0 ; load xmt char
46 001336 001403 beq 1$ ; string ends with 0
47 001340 004737 001446 call @#putc
48 001344 000773 br puts ; transmit nxt char of string
49 001346 000207 1$: return
45 001242 112100 movb (r1)+,r0 ; load xmt char
46 001244 001403 beq 1$ ; string ends with 0
47 001246 004737 001354 call @#putc
48 001252 000773 br puts ; transmit nxt char of string
49 001254 000207 1$: return
50
51
52 ; putnum - print the octal number in r0
53 001350 numbf0: .blkw 10 ; space to mount number string
54 001370 numbf1 =.
53 001256 numbf0: .blkw 10 ; space to mount number string
54 001276 numbf1 =.
55 putnum:
56 001370 010346 mov r3,-(sp)
57 001372 010002 mov r0,r2 ; r2 = shifter
58 001374 012701 001370 mov #numbf1,r1 ; r1 = buffer pointer, backwards
59 001400 112741 000000 movb #0,-(r1) ; set terminating 0
56 001276 010346 mov r3,-(sp)
57 001300 010002 mov r0,r2 ; r2 = shifter
58 001302 012701 001276 mov #numbf1,r1 ; r1 = buffer pointer, backwards
59 001306 112741 000000 movb #0,-(r1) ; set terminating 0
60 ; repeat 6 times
61 001404 012703 000006 mov #6,r3
61 001312 012703 000006 mov #6,r3
62 1$:
63 001410 010200 mov r2,r0
63 001316 010200 mov r2,r0
64 ; extract lower 3 bits = octal digit
65 001412 042700 177770 bic #177770,r0 ; r0 &= 0x07
66 001416 062700 000060 add #60,r0 ; r0 += '0'
67 001422 110041 movb r0,-(r1) ; write in buffer
68 001424 000241 clc
69 001426 006202 asr r2 ; shift to next digit
70 001430 006202 asr r2
71 001432 006202 asr r2
72 001434 077313 sob r3,1$ ; loop for all 6 digits
65 001320 042700 177770 bic #177770,r0 ; r0 &= 0x07
66 001324 062700 000060 add #60,r0 ; r0 += '0'
67 001330 110041 movb r0,-(r1) ; write in buffer
68 001332 000241 clc
69 001334 006202 asr r2 ; shift to next digit
70 001336 006202 asr r2
71 001340 006202 asr r2
72 001342 077313 sob r3,1$ ; loop for all 6 digits
73
74 001436 004737 001334 call @#puts
75 001442 012603 mov (sp)+,r3
76 001444 000207 return
74 001344 004737 001242 call @#puts
75 001350 012603 mov (sp)+,r3
76 001352 000207 return
77
78
79 ; putc - output a single char
80 ; r0 = char
81 putc:
82 001446 005037 001254 clr coxifl ; reset interrupt flag
83 001452 010037 177566 mov r0,@#coxbas+2 ; char into transmit buffer
84 001456 005737 001254 1$: tst coxifl ; XMT RDY?
85 001462 001775 beq 1$ ; no, loop
82 001354 005037 001162 clr coxifl ; reset interrupt flag
83 001360 010037 177566 mov r0,@#coxbas+2 ; char into transmit buffer
84 001364 005737 001162 1$: tst coxifl ; XMT RDY?
85 001370 001775 beq 1$ ; no, loop
86 ; UART is buffering: char only started to sent now
87 ; interrupt active until next putc
88 001464 000207 return
88 001372 000207 return
89
90 ; getc - poll and input a single char
91 ; result in r0
92 ; carry clear : nothing received
93 ; carry set: char received
94 getc:
95 001466 005000 clr r0
96 001470 005737 001252 tst corifl
97 001474 001002 bne 1$
98 001476 000241 clc ; Carry clear, no Interrupt, nothing received
99 001500 000207 return
95 001374 005000 clr r0
96 001376 005737 001160 tst corifl
97 001402 001002 bne 1$
98 001404 000241 clc ; Carry clear, no Interrupt, nothing received
99 001406 000207 return
100 1$:
101 001502 013700 001256 mov corbuf,r0 ; Interrupt, return char
102 001506 005037 001252 clr corifl ; reset interrupt flag
103 001512 000261 sec ; Carry Set
104 001514 000207 return
101 001410 013700 001164 mov corbuf,r0 ; Interrupt, return char
102 001414 005037 001160 clr corifl ; reset interrupt flag
103 001420 000261 sec ; Carry Set
104 001422 000207 return
104
206 000001 .if ne kwenab
207 .include ma_kw.mac
207 000001 .if ne kwenab
208 .include ma_kw.mac
1 .title ma_kw - KW11 test driver
2
3 ; KW11 raises INTR at 50 Hz
@@ -320,171 +321,80 @@
8
9
10 ; --- ISRs, increment Interrupt FLags
11 001516 000001 kwiflg: .word 1 ; Interrupt flags
11 001424 000001 kwiflg: .word 1 ; Interrupt flags
12
13 001520 000001 kwecnt: .word 1 ; event counter
13 001426 000001 kwecnt: .word 1 ; event counter
14
15 kwisr:
16 001522 005237 001520 inc kwecnt ; register as event
17 001526 005237 001516 inc kwiflg ; set ISR flag
18 001532 000002 rti
16 001430 005237 001426 inc kwecnt ; register as event
17 001434 005237 001424 inc kwiflg ; set ISR flag
18 001440 000002 rti
19
20 ; --- Initialize device after RESET
21 kwinit:
22 001534 012737 000100 177546 mov #100,@#kwbase ; set interrupt enable
23 001542 005037 001520 clr kwecnt
24 001546 000207 return
22 001442 012737 000100 177546 mov #100,@#kwbase ; set interrupt enable
23 001450 005037 001426 clr kwecnt
24 001454 000207 return
25
26 ; --- Restart new INTR
27 kwgo:
28 001550 042737 000200 177546 bic #200,@#kwbase ; clear INTERRUPT MONITOR bit
29 001556 000207 return
30
30
208 .endc
209 000001 .if ne rkenab
210 .include ma_rk.mac
1
2 .title ma_rk - RK11/RK05 test driver
3 ; RK11 DMA is generated by reading cylinder 0, head 0, sector 0
4
5 000220 rkvect = 220 ; vector of RK11 controller
6 177400 rkbase = 777400 ; base addr of RK11 controller
7 000113 rklabl = 'K ; label char
8
9 ; --- ISRs, increment Interrupt FLags
10 001560 000001 rkiflg: .word 1 ; Interrupt flags
11
12 001562 rkbuff: .blkw 400+1 ; data buffer: 1 sector = 256 words
13
14 002564 000001 rkecnt: .word 1 ; event counter
15
16 rkisr:
17 002566 005237 001560 inc rkiflg ; set ISR flag
18 002572 000002 rti
19
20 ; --- Initialize device after RESET
21 rkinit:
22 002574 005037 002564 clr rkecnt
23 002600 000207 return
24
25 ; --- Restart new DMA transmission
26 rkgo:
27 ; read first sector into rkbuff
28 002602 005037 177412 clr @#rkbase+12 ; DA disk address = 0: unit 0, cyl/hd/sec=0
29 002606 012737 001562 177410 mov #rkbuff,@#rkbase+10 ; BA bus address of DMA
30 002614 012737 177400 177406 mov #-400,@#rkbase+6 ; WC word count = 256 words
31 002622 012737 000105 177404 mov #100+4+1,@#rkbase+4 ; Command INT ENABLE + "READ" + GO
32 002630 005237 002564 inc rkecnt ; register as event
33 002634 000207 return
34
34
211 .endc
212 000001 .if ne rlenab
213 .include ma_rl.mac
1 .title ma_rl - RL11/RL01/2 test driver
2
3 ; RL11 DMA is generated by reading cylinder 0, head0, sector 0
4
5 000160 rlvect = 160 ; vector of RL11 controller
6 174400 rlbase = 774400 ; base addr of RL11 controller
7 000114 rllabl = 'L ; label char
8
9
10 ; --- ISRs, increment Interrupt FLags
11 002636 000001 rliflg: .word 1 ; Interrupt flags
12
13 002640 rlbuff: .blkw 2*400+1 ; data buffer: 2 sector = 256 words
14
15 004642 000001 rlecnt: .word 1 ; event counter
16
17 rlisr:
18 004644 005237 002636 inc rliflg ; set ISR flag
19 004650 000002 rti
20
21 ; --- Initialize device after RESET
22 rlinit:
23 004652 005037 004642 clr rlecnt
24 004656 000207 return
25
26 ; --- Restart new DMA transmission
27 rlgo:
28 004660 012701 174400 mov #rlbase,r1 ; r1 = controller base address
29
30 ; sequence from boot loader 23-751A9, lot of testing
31 ; 1. get status
32 004664 012761 000013 000004 mov #013,4(r1) ; DA subcmd reset+getstatus
33 004672 012711 000004 mov #4,(r1) ; CSR do "GET STATUS"
34 004676 105711 1$: tstb (r1) ; test for ready
35 004700 100376 bpl 1$ ; wait
36 ; 2. read current track
37 004702 012711 000010 mov #10,(r1) ; CSR read header cmd
38 004706 105711 2$: tstb (r1) ; test for ready
39 004710 100376 bpl 2$ ; wait
40 ; 3. seek
41 004712 016102 000006 mov 6(r1),r2 ; MP retrieve cyl/head/sector
42 004716 042702 000077 bic #77,r2 ; set sector to zero
43 004722 005202 inc r2 ; set seek flag, head 0, seek to cyl 0
44 004724 010261 000004 mov r2,4(r1) ; DA for seek
45 004730 012711 000006 mov #6,(r1) ; CSR seek cmd
46 004734 105711 3$: tstb (r1) ; test for ready
47 004736 100376 bpl 3$ ; wait
48 ; 4. read sector 0+1 and interrupt
49 004740 012761 002640 000002 mov #rlbuff,2(r1) ; BA bus address of DMA
50 004746 005061 000004 clr 4(r1) ; DA select cyl0/head0/sector0
51 004752 012761 177000 000006 mov #-512.,6(r1) ; MP set word count
52 004760 012711 000114 mov #100+14,(r1) ; CSR read data cmd with Interrupt Enable
53
54 004764 005237 004642 inc rlecnt ; register as event
55 004770 000207 return
56
56
214 .endc
215 000000 .if ne ryenab
216 .include ma_ry.mac
217 .endc
218 000000 .if ne duenab
219 .include ma_du.mac
220 .endc
221 .include ma_strings.mac
28 ; nothing todo, INTR repeated automatically
29 ; bic #200,@#kwbase ; clear INTERRUPT MONITOR bit
30 001456 000207 return
31
31
209 .endc
210 000000 .if ne rkenab
211 .include ma_rk.mac
212 .endc
213 000000 .if ne rlenab
214 .include ma_rl.mac
215 .endc
216 000000 .if ne ryenab
217 .include ma_ry.mac
218 .endc
219 000000 .if ne duenab
220 .include ma_du.mac
221 .endc
222 .include ma_strings.mac
1
2 .title ma_strings - String constants
3 shello:
4 004772 015 012 .byte 15,12 ; space, CR, LF,
5 004774 052 052 052 .ascii /*** Multi Device Interrupt&DMA test ***/
004777 040 115 165
005002 154 164 151
005005 040 104 145
005010 166 151 143
005013 145 040 111
005016 156 164 145
005021 162 162 165
005024 160 164 046
005027 104 115 101
005032 040 164 145
005035 163 164 040
005040 052 052 052
6 005043 015 012 .byte 15,12 ; CR, LF
7 005045 136 103 040 .ascii /^C to stop./
005050 164 157 040
005053 163 164 157
005056 160 056
8 005060 015 012 .byte 15,12 ; CR, LF
9 005062 000 .byte 0
4 001460 015 012 .byte 15,12 ; space, CR, LF,
5 001462 052 052 052 .ascii /*** Multi Device Interrupt&DMA test ***/
001465 040 115 165
001470 154 164 151
001473 040 104 145
001476 166 151 143
001501 145 040 111
001504 156 164 145
001507 162 162 165
001512 160 164 046
001515 104 115 101
001520 040 164 145
001523 163 164 040
001526 052 052 052
6 001531 015 012 .byte 15,12 ; CR, LF
7 001533 136 103 040 .ascii /^C to stop./
001536 164 157 040
001541 163 164 157
001544 160 056
8 001546 015 012 .byte 15,12 ; CR, LF
9 001550 000 .byte 0
10
11
12 sbye:
13 005063 015 012 .byte 15,12
14 005065 107 157 157 .ascii /Good Bye!/
005070 144 040 102
005073 171 145 041
15 005076 015 012 .byte 15,12 ; CR, LF
16 005100 000 .byte 0
13 001551 015 012 .byte 15,12
14 001553 107 157 157 .ascii /Good Bye!/
001556 144 040 102
001561 171 145 041
15 001564 015 012 .byte 15,12 ; CR, LF
16 001566 000 .byte 0
17
17
222
223 .end
224
223
224 .end
225
226
226
227
227

View File

@@ -24,8 +24,8 @@
; enable tests
kwenab = 1
rkenab = 1
rlenab = 1
rkenab = 0
rlenab = 0
ryenab = 0 ; not yet tested
duenab = 0 ; not yet implemeneted
@@ -123,6 +123,7 @@ dokbd:
bne 1$
mov #sbye,r1 ; ^C: print "Bye", back to monitor
call puts
reset ; stop devices
jmp monitr
1$:
; echo chars without special meaning
@@ -174,7 +175,7 @@ dodev:
call progrs
4$:
.endc
.if ne ryenab
.if ne duenab
tst duiflg
beq 5$
clr duiflg

View File

@@ -21,5 +21,10 @@ set ry enabled
set ry0 double
attach ry0 scratch.rx02_dd
# PDP11GUI
set rq enabled
set rq0 ra80
attach rq0 scratch.ra80
; PDP11GUI
set stdio telnet=23