mirror of
https://github.com/livingcomputermuseum/UniBone.git
synced 2026-05-05 07:24:45 +00:00
1323 lines
74 KiB
Plaintext
1323 lines
74 KiB
Plaintext
1
|
|
2 .title INTR and DMA test
|
|
3
|
|
4 ; This program tests the DEC DL11 console interface
|
|
5 ; and the INTR and DMA systems.
|
|
6 ; The foreground thread runs in 4 phases:
|
|
7 ; 1.1. print a start message,
|
|
8 ; 1.2. echoes chars typed to the output until ^C is hit
|
|
9 ; Chars 0..7 set the new processor priority level.
|
|
10 ; 1.3 prints an end message and HALTs.
|
|
11 ; 1.4. on CONT it repeats.
|
|
12 ;
|
|
13 ; 2. For INTR test, the 256 vectors 0,4,10,14,..374 each print
|
|
14 ; a string on interrupt.
|
|
15 ; In "Slow" mode, the ISR prints the vector directly
|
|
16 ; (ISR rountine > 100ms)
|
|
17 ; In "Fast" mode, the ISR logs the vector in a list
|
|
18 ; (It can be printed later with "F"
|
|
19 ;
|
|
20 ; As alternative to input over DL11,
|
|
21 ; "keyboard input chars" can be deposited into 7776
|
|
22 ;
|
|
23 ; Contact: Joerg Hoppe / j_hoppe@t-online.de / www.retromcp.com
|
|
24
|
|
25 177560 dladr = 177560 ; DL11 console base address
|
|
26 177776 psw = 177776 ; processor status
|
|
27
|
|
28
|
|
29 ; count of automatically generated interrupt vectors
|
|
30 000100 veccnt = 100
|
|
31
|
|
32 ; ------- macro to define interrupt vector #<vecidx> ------
|
|
33 .macro vector vecidx
|
|
34 .=4*vecidx ; vector #vecidx
|
|
35 .word isr'vecidx ; new PC of ISR
|
|
36 .word 340 ; new PSW: priority is max = 7
|
|
37 .endm
|
|
38
|
|
39 ; ----- macro to define ISR for vector #n -------
|
|
40 .macro isr vecidx
|
|
41 isr'vecidx:
|
|
42 mov r0,-(sp)
|
|
43 mov #vecidx*4,r0 ; vector in r0
|
|
44 call @#doisr ; print message for vector in r0
|
|
45 mov (sp)+,r0
|
|
46 rti
|
|
47 .endm
|
|
48
|
|
49
|
|
50
|
|
51
|
|
52 .asect
|
|
53
|
|
54 000000 . = 0
|
|
55 ; ---- "veccnt" Interrupt Vectors ---------
|
|
56 000000 n=0
|
|
57 .rept veccnt
|
|
58 vector \n
|
|
59 n=n+1
|
|
60 .endr
|
|
1 vector \n
|
|
1 000000 .=4*0 ; vector #0
|
|
2 000000 000400 .word isr0 ; new PC of ISR
|
|
3 000002 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000001 n=n+1
|
|
1 vector \n
|
|
1 000004 .=4*1 ; vector #1
|
|
2 000004 000416 .word isr1 ; new PC of ISR
|
|
3 000006 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000002 n=n+1
|
|
1 vector \n
|
|
1 000010 .=4*2 ; vector #2
|
|
2 000010 000434 .word isr2 ; new PC of ISR
|
|
3 000012 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000003 n=n+1
|
|
1 vector \n
|
|
1 000014 .=4*3 ; vector #3
|
|
2 000014 000452 .word isr3 ; new PC of ISR
|
|
3 000016 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000004 n=n+1
|
|
1 vector \n
|
|
1 000020 .=4*4 ; vector #4
|
|
2 000020 000470 .word isr4 ; new PC of ISR
|
|
3 000022 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000005 n=n+1
|
|
1 vector \n
|
|
1 000024 .=4*5 ; vector #5
|
|
2 000024 000506 .word isr5 ; new PC of ISR
|
|
3 000026 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000006 n=n+1
|
|
1 vector \n
|
|
1 000030 .=4*6 ; vector #6
|
|
2 000030 000524 .word isr6 ; new PC of ISR
|
|
3 000032 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000007 n=n+1
|
|
1 vector \n
|
|
1 000034 .=4*7 ; vector #7
|
|
2 000034 000542 .word isr7 ; new PC of ISR
|
|
3 000036 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000010 n=n+1
|
|
1 vector \n
|
|
1 000040 .=4*10 ; vector #10
|
|
2 000040 000560 .word isr10 ; new PC of ISR
|
|
3 000042 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000011 n=n+1
|
|
1 vector \n
|
|
1 000044 .=4*11 ; vector #11
|
|
2 000044 000576 .word isr11 ; new PC of ISR
|
|
3 000046 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000012 n=n+1
|
|
1 vector \n
|
|
1 000050 .=4*12 ; vector #12
|
|
2 000050 000614 .word isr12 ; new PC of ISR
|
|
3 000052 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000013 n=n+1
|
|
1 vector \n
|
|
1 000054 .=4*13 ; vector #13
|
|
2 000054 000632 .word isr13 ; new PC of ISR
|
|
3 000056 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000014 n=n+1
|
|
1 vector \n
|
|
1 000060 .=4*14 ; vector #14
|
|
2 000060 000650 .word isr14 ; new PC of ISR
|
|
3 000062 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000015 n=n+1
|
|
1 vector \n
|
|
1 000064 .=4*15 ; vector #15
|
|
2 000064 000666 .word isr15 ; new PC of ISR
|
|
3 000066 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000016 n=n+1
|
|
1 vector \n
|
|
1 000070 .=4*16 ; vector #16
|
|
2 000070 000704 .word isr16 ; new PC of ISR
|
|
3 000072 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000017 n=n+1
|
|
1 vector \n
|
|
1 000074 .=4*17 ; vector #17
|
|
2 000074 000722 .word isr17 ; new PC of ISR
|
|
3 000076 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000020 n=n+1
|
|
1 vector \n
|
|
1 000100 .=4*20 ; vector #20
|
|
2 000100 000740 .word isr20 ; new PC of ISR
|
|
3 000102 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000021 n=n+1
|
|
1 vector \n
|
|
1 000104 .=4*21 ; vector #21
|
|
2 000104 000756 .word isr21 ; new PC of ISR
|
|
3 000106 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000022 n=n+1
|
|
1 vector \n
|
|
1 000110 .=4*22 ; vector #22
|
|
2 000110 000774 .word isr22 ; new PC of ISR
|
|
3 000112 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000023 n=n+1
|
|
1 vector \n
|
|
1 000114 .=4*23 ; vector #23
|
|
2 000114 001012 .word isr23 ; new PC of ISR
|
|
3 000116 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000024 n=n+1
|
|
1 vector \n
|
|
1 000120 .=4*24 ; vector #24
|
|
2 000120 001030 .word isr24 ; new PC of ISR
|
|
3 000122 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000025 n=n+1
|
|
1 vector \n
|
|
1 000124 .=4*25 ; vector #25
|
|
2 000124 001046 .word isr25 ; new PC of ISR
|
|
3 000126 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000026 n=n+1
|
|
1 vector \n
|
|
1 000130 .=4*26 ; vector #26
|
|
2 000130 001064 .word isr26 ; new PC of ISR
|
|
3 000132 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000027 n=n+1
|
|
1 vector \n
|
|
1 000134 .=4*27 ; vector #27
|
|
2 000134 001102 .word isr27 ; new PC of ISR
|
|
3 000136 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000030 n=n+1
|
|
1 vector \n
|
|
1 000140 .=4*30 ; vector #30
|
|
2 000140 001120 .word isr30 ; new PC of ISR
|
|
3 000142 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000031 n=n+1
|
|
1 vector \n
|
|
1 000144 .=4*31 ; vector #31
|
|
2 000144 001136 .word isr31 ; new PC of ISR
|
|
3 000146 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000032 n=n+1
|
|
1 vector \n
|
|
1 000150 .=4*32 ; vector #32
|
|
2 000150 001154 .word isr32 ; new PC of ISR
|
|
3 000152 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000033 n=n+1
|
|
1 vector \n
|
|
1 000154 .=4*33 ; vector #33
|
|
2 000154 001172 .word isr33 ; new PC of ISR
|
|
3 000156 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000034 n=n+1
|
|
1 vector \n
|
|
1 000160 .=4*34 ; vector #34
|
|
2 000160 001210 .word isr34 ; new PC of ISR
|
|
3 000162 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000035 n=n+1
|
|
1 vector \n
|
|
1 000164 .=4*35 ; vector #35
|
|
2 000164 001226 .word isr35 ; new PC of ISR
|
|
3 000166 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000036 n=n+1
|
|
1 vector \n
|
|
1 000170 .=4*36 ; vector #36
|
|
2 000170 001244 .word isr36 ; new PC of ISR
|
|
3 000172 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000037 n=n+1
|
|
1 vector \n
|
|
1 000174 .=4*37 ; vector #37
|
|
2 000174 001262 .word isr37 ; new PC of ISR
|
|
3 000176 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000040 n=n+1
|
|
1 vector \n
|
|
1 000200 .=4*40 ; vector #40
|
|
2 000200 001300 .word isr40 ; new PC of ISR
|
|
3 000202 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000041 n=n+1
|
|
1 vector \n
|
|
1 000204 .=4*41 ; vector #41
|
|
2 000204 001316 .word isr41 ; new PC of ISR
|
|
3 000206 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000042 n=n+1
|
|
1 vector \n
|
|
1 000210 .=4*42 ; vector #42
|
|
2 000210 001334 .word isr42 ; new PC of ISR
|
|
3 000212 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000043 n=n+1
|
|
1 vector \n
|
|
1 000214 .=4*43 ; vector #43
|
|
2 000214 001352 .word isr43 ; new PC of ISR
|
|
3 000216 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000044 n=n+1
|
|
1 vector \n
|
|
1 000220 .=4*44 ; vector #44
|
|
2 000220 001370 .word isr44 ; new PC of ISR
|
|
3 000222 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000045 n=n+1
|
|
1 vector \n
|
|
1 000224 .=4*45 ; vector #45
|
|
2 000224 001406 .word isr45 ; new PC of ISR
|
|
3 000226 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000046 n=n+1
|
|
1 vector \n
|
|
1 000230 .=4*46 ; vector #46
|
|
2 000230 001424 .word isr46 ; new PC of ISR
|
|
3 000232 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000047 n=n+1
|
|
1 vector \n
|
|
1 000234 .=4*47 ; vector #47
|
|
2 000234 001442 .word isr47 ; new PC of ISR
|
|
3 000236 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000050 n=n+1
|
|
1 vector \n
|
|
1 000240 .=4*50 ; vector #50
|
|
2 000240 001460 .word isr50 ; new PC of ISR
|
|
3 000242 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000051 n=n+1
|
|
1 vector \n
|
|
1 000244 .=4*51 ; vector #51
|
|
2 000244 001476 .word isr51 ; new PC of ISR
|
|
3 000246 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000052 n=n+1
|
|
1 vector \n
|
|
1 000250 .=4*52 ; vector #52
|
|
2 000250 001514 .word isr52 ; new PC of ISR
|
|
3 000252 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000053 n=n+1
|
|
1 vector \n
|
|
1 000254 .=4*53 ; vector #53
|
|
2 000254 001532 .word isr53 ; new PC of ISR
|
|
3 000256 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000054 n=n+1
|
|
1 vector \n
|
|
1 000260 .=4*54 ; vector #54
|
|
2 000260 001550 .word isr54 ; new PC of ISR
|
|
3 000262 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000055 n=n+1
|
|
1 vector \n
|
|
1 000264 .=4*55 ; vector #55
|
|
2 000264 001566 .word isr55 ; new PC of ISR
|
|
3 000266 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000056 n=n+1
|
|
1 vector \n
|
|
1 000270 .=4*56 ; vector #56
|
|
2 000270 001604 .word isr56 ; new PC of ISR
|
|
3 000272 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000057 n=n+1
|
|
1 vector \n
|
|
1 000274 .=4*57 ; vector #57
|
|
2 000274 001622 .word isr57 ; new PC of ISR
|
|
3 000276 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000060 n=n+1
|
|
1 vector \n
|
|
1 000300 .=4*60 ; vector #60
|
|
2 000300 001640 .word isr60 ; new PC of ISR
|
|
3 000302 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000061 n=n+1
|
|
1 vector \n
|
|
1 000304 .=4*61 ; vector #61
|
|
2 000304 001656 .word isr61 ; new PC of ISR
|
|
3 000306 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000062 n=n+1
|
|
1 vector \n
|
|
1 000310 .=4*62 ; vector #62
|
|
2 000310 001674 .word isr62 ; new PC of ISR
|
|
3 000312 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000063 n=n+1
|
|
1 vector \n
|
|
1 000314 .=4*63 ; vector #63
|
|
2 000314 001712 .word isr63 ; new PC of ISR
|
|
3 000316 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000064 n=n+1
|
|
1 vector \n
|
|
1 000320 .=4*64 ; vector #64
|
|
2 000320 001730 .word isr64 ; new PC of ISR
|
|
3 000322 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000065 n=n+1
|
|
1 vector \n
|
|
1 000324 .=4*65 ; vector #65
|
|
2 000324 001746 .word isr65 ; new PC of ISR
|
|
3 000326 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000066 n=n+1
|
|
1 vector \n
|
|
1 000330 .=4*66 ; vector #66
|
|
2 000330 001764 .word isr66 ; new PC of ISR
|
|
3 000332 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000067 n=n+1
|
|
1 vector \n
|
|
1 000334 .=4*67 ; vector #67
|
|
2 000334 002002 .word isr67 ; new PC of ISR
|
|
3 000336 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000070 n=n+1
|
|
1 vector \n
|
|
1 000340 .=4*70 ; vector #70
|
|
2 000340 002020 .word isr70 ; new PC of ISR
|
|
3 000342 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000071 n=n+1
|
|
1 vector \n
|
|
1 000344 .=4*71 ; vector #71
|
|
2 000344 002036 .word isr71 ; new PC of ISR
|
|
3 000346 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000072 n=n+1
|
|
1 vector \n
|
|
1 000350 .=4*72 ; vector #72
|
|
2 000350 002054 .word isr72 ; new PC of ISR
|
|
3 000352 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000073 n=n+1
|
|
1 vector \n
|
|
1 000354 .=4*73 ; vector #73
|
|
2 000354 002072 .word isr73 ; new PC of ISR
|
|
3 000356 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000074 n=n+1
|
|
1 vector \n
|
|
1 000360 .=4*74 ; vector #74
|
|
2 000360 002110 .word isr74 ; new PC of ISR
|
|
3 000362 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000075 n=n+1
|
|
1 vector \n
|
|
1 000364 .=4*75 ; vector #75
|
|
2 000364 002126 .word isr75 ; new PC of ISR
|
|
3 000366 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000076 n=n+1
|
|
1 vector \n
|
|
1 000370 .=4*76 ; vector #76
|
|
2 000370 002144 .word isr76 ; new PC of ISR
|
|
3 000372 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000077 n=n+1
|
|
1 vector \n
|
|
1 000374 .=4*77 ; vector #77
|
|
2 000374 002162 .word isr77 ; new PC of ISR
|
|
3 000376 000340 .word 340 ; new PSW: priority is max = 7
|
|
2 000100 n=n+1
|
|
61
|
|
62 ; ---- veccnt ISRs ---------
|
|
63 000000 n=0
|
|
64 .rept veccnt
|
|
65 isr \n
|
|
66 n=n+1
|
|
67 .endr
|
|
1 isr \n
|
|
1 isr0:
|
|
2 000400 010046 mov r0,-(sp)
|
|
3 000402 012700 000000 mov #0*4,r0 ; vector in r0
|
|
4 000406 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000412 012600 mov (sp)+,r0
|
|
6 000414 000002 rti
|
|
2 000001 n=n+1
|
|
1 isr \n
|
|
1 isr1:
|
|
2 000416 010046 mov r0,-(sp)
|
|
3 000420 012700 000004 mov #1*4,r0 ; vector in r0
|
|
4 000424 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000430 012600 mov (sp)+,r0
|
|
6 000432 000002 rti
|
|
2 000002 n=n+1
|
|
1 isr \n
|
|
1 isr2:
|
|
2 000434 010046 mov r0,-(sp)
|
|
3 000436 012700 000010 mov #2*4,r0 ; vector in r0
|
|
4 000442 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000446 012600 mov (sp)+,r0
|
|
6 000450 000002 rti
|
|
2 000003 n=n+1
|
|
1 isr \n
|
|
1 isr3:
|
|
2 000452 010046 mov r0,-(sp)
|
|
3 000454 012700 000014 mov #3*4,r0 ; vector in r0
|
|
4 000460 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000464 012600 mov (sp)+,r0
|
|
6 000466 000002 rti
|
|
2 000004 n=n+1
|
|
1 isr \n
|
|
1 isr4:
|
|
2 000470 010046 mov r0,-(sp)
|
|
3 000472 012700 000020 mov #4*4,r0 ; vector in r0
|
|
4 000476 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000502 012600 mov (sp)+,r0
|
|
6 000504 000002 rti
|
|
2 000005 n=n+1
|
|
1 isr \n
|
|
1 isr5:
|
|
2 000506 010046 mov r0,-(sp)
|
|
3 000510 012700 000024 mov #5*4,r0 ; vector in r0
|
|
4 000514 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000520 012600 mov (sp)+,r0
|
|
6 000522 000002 rti
|
|
2 000006 n=n+1
|
|
1 isr \n
|
|
1 isr6:
|
|
2 000524 010046 mov r0,-(sp)
|
|
3 000526 012700 000030 mov #6*4,r0 ; vector in r0
|
|
4 000532 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000536 012600 mov (sp)+,r0
|
|
6 000540 000002 rti
|
|
2 000007 n=n+1
|
|
1 isr \n
|
|
1 isr7:
|
|
2 000542 010046 mov r0,-(sp)
|
|
3 000544 012700 000034 mov #7*4,r0 ; vector in r0
|
|
4 000550 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000554 012600 mov (sp)+,r0
|
|
6 000556 000002 rti
|
|
2 000010 n=n+1
|
|
1 isr \n
|
|
1 isr10:
|
|
2 000560 010046 mov r0,-(sp)
|
|
3 000562 012700 000040 mov #10*4,r0 ; vector in r0
|
|
4 000566 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000572 012600 mov (sp)+,r0
|
|
6 000574 000002 rti
|
|
2 000011 n=n+1
|
|
1 isr \n
|
|
1 isr11:
|
|
2 000576 010046 mov r0,-(sp)
|
|
3 000600 012700 000044 mov #11*4,r0 ; vector in r0
|
|
4 000604 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000610 012600 mov (sp)+,r0
|
|
6 000612 000002 rti
|
|
2 000012 n=n+1
|
|
1 isr \n
|
|
1 isr12:
|
|
2 000614 010046 mov r0,-(sp)
|
|
3 000616 012700 000050 mov #12*4,r0 ; vector in r0
|
|
4 000622 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000626 012600 mov (sp)+,r0
|
|
6 000630 000002 rti
|
|
2 000013 n=n+1
|
|
1 isr \n
|
|
1 isr13:
|
|
2 000632 010046 mov r0,-(sp)
|
|
3 000634 012700 000054 mov #13*4,r0 ; vector in r0
|
|
4 000640 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000644 012600 mov (sp)+,r0
|
|
6 000646 000002 rti
|
|
2 000014 n=n+1
|
|
1 isr \n
|
|
1 isr14:
|
|
2 000650 010046 mov r0,-(sp)
|
|
3 000652 012700 000060 mov #14*4,r0 ; vector in r0
|
|
4 000656 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000662 012600 mov (sp)+,r0
|
|
6 000664 000002 rti
|
|
2 000015 n=n+1
|
|
1 isr \n
|
|
1 isr15:
|
|
2 000666 010046 mov r0,-(sp)
|
|
3 000670 012700 000064 mov #15*4,r0 ; vector in r0
|
|
4 000674 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000700 012600 mov (sp)+,r0
|
|
6 000702 000002 rti
|
|
2 000016 n=n+1
|
|
1 isr \n
|
|
1 isr16:
|
|
2 000704 010046 mov r0,-(sp)
|
|
3 000706 012700 000070 mov #16*4,r0 ; vector in r0
|
|
4 000712 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000716 012600 mov (sp)+,r0
|
|
6 000720 000002 rti
|
|
2 000017 n=n+1
|
|
1 isr \n
|
|
1 isr17:
|
|
2 000722 010046 mov r0,-(sp)
|
|
3 000724 012700 000074 mov #17*4,r0 ; vector in r0
|
|
4 000730 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000734 012600 mov (sp)+,r0
|
|
6 000736 000002 rti
|
|
2 000020 n=n+1
|
|
1 isr \n
|
|
1 isr20:
|
|
2 000740 010046 mov r0,-(sp)
|
|
3 000742 012700 000100 mov #20*4,r0 ; vector in r0
|
|
4 000746 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000752 012600 mov (sp)+,r0
|
|
6 000754 000002 rti
|
|
2 000021 n=n+1
|
|
1 isr \n
|
|
1 isr21:
|
|
2 000756 010046 mov r0,-(sp)
|
|
3 000760 012700 000104 mov #21*4,r0 ; vector in r0
|
|
4 000764 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 000770 012600 mov (sp)+,r0
|
|
6 000772 000002 rti
|
|
2 000022 n=n+1
|
|
1 isr \n
|
|
1 isr22:
|
|
2 000774 010046 mov r0,-(sp)
|
|
3 000776 012700 000110 mov #22*4,r0 ; vector in r0
|
|
4 001002 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001006 012600 mov (sp)+,r0
|
|
6 001010 000002 rti
|
|
2 000023 n=n+1
|
|
1 isr \n
|
|
1 isr23:
|
|
2 001012 010046 mov r0,-(sp)
|
|
3 001014 012700 000114 mov #23*4,r0 ; vector in r0
|
|
4 001020 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001024 012600 mov (sp)+,r0
|
|
6 001026 000002 rti
|
|
2 000024 n=n+1
|
|
1 isr \n
|
|
1 isr24:
|
|
2 001030 010046 mov r0,-(sp)
|
|
3 001032 012700 000120 mov #24*4,r0 ; vector in r0
|
|
4 001036 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001042 012600 mov (sp)+,r0
|
|
6 001044 000002 rti
|
|
2 000025 n=n+1
|
|
1 isr \n
|
|
1 isr25:
|
|
2 001046 010046 mov r0,-(sp)
|
|
3 001050 012700 000124 mov #25*4,r0 ; vector in r0
|
|
4 001054 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001060 012600 mov (sp)+,r0
|
|
6 001062 000002 rti
|
|
2 000026 n=n+1
|
|
1 isr \n
|
|
1 isr26:
|
|
2 001064 010046 mov r0,-(sp)
|
|
3 001066 012700 000130 mov #26*4,r0 ; vector in r0
|
|
4 001072 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001076 012600 mov (sp)+,r0
|
|
6 001100 000002 rti
|
|
2 000027 n=n+1
|
|
1 isr \n
|
|
1 isr27:
|
|
2 001102 010046 mov r0,-(sp)
|
|
3 001104 012700 000134 mov #27*4,r0 ; vector in r0
|
|
4 001110 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001114 012600 mov (sp)+,r0
|
|
6 001116 000002 rti
|
|
2 000030 n=n+1
|
|
1 isr \n
|
|
1 isr30:
|
|
2 001120 010046 mov r0,-(sp)
|
|
3 001122 012700 000140 mov #30*4,r0 ; vector in r0
|
|
4 001126 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001132 012600 mov (sp)+,r0
|
|
6 001134 000002 rti
|
|
2 000031 n=n+1
|
|
1 isr \n
|
|
1 isr31:
|
|
2 001136 010046 mov r0,-(sp)
|
|
3 001140 012700 000144 mov #31*4,r0 ; vector in r0
|
|
4 001144 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001150 012600 mov (sp)+,r0
|
|
6 001152 000002 rti
|
|
2 000032 n=n+1
|
|
1 isr \n
|
|
1 isr32:
|
|
2 001154 010046 mov r0,-(sp)
|
|
3 001156 012700 000150 mov #32*4,r0 ; vector in r0
|
|
4 001162 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001166 012600 mov (sp)+,r0
|
|
6 001170 000002 rti
|
|
2 000033 n=n+1
|
|
1 isr \n
|
|
1 isr33:
|
|
2 001172 010046 mov r0,-(sp)
|
|
3 001174 012700 000154 mov #33*4,r0 ; vector in r0
|
|
4 001200 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001204 012600 mov (sp)+,r0
|
|
6 001206 000002 rti
|
|
2 000034 n=n+1
|
|
1 isr \n
|
|
1 isr34:
|
|
2 001210 010046 mov r0,-(sp)
|
|
3 001212 012700 000160 mov #34*4,r0 ; vector in r0
|
|
4 001216 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001222 012600 mov (sp)+,r0
|
|
6 001224 000002 rti
|
|
2 000035 n=n+1
|
|
1 isr \n
|
|
1 isr35:
|
|
2 001226 010046 mov r0,-(sp)
|
|
3 001230 012700 000164 mov #35*4,r0 ; vector in r0
|
|
4 001234 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001240 012600 mov (sp)+,r0
|
|
6 001242 000002 rti
|
|
2 000036 n=n+1
|
|
1 isr \n
|
|
1 isr36:
|
|
2 001244 010046 mov r0,-(sp)
|
|
3 001246 012700 000170 mov #36*4,r0 ; vector in r0
|
|
4 001252 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001256 012600 mov (sp)+,r0
|
|
6 001260 000002 rti
|
|
2 000037 n=n+1
|
|
1 isr \n
|
|
1 isr37:
|
|
2 001262 010046 mov r0,-(sp)
|
|
3 001264 012700 000174 mov #37*4,r0 ; vector in r0
|
|
4 001270 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001274 012600 mov (sp)+,r0
|
|
6 001276 000002 rti
|
|
2 000040 n=n+1
|
|
1 isr \n
|
|
1 isr40:
|
|
2 001300 010046 mov r0,-(sp)
|
|
3 001302 012700 000200 mov #40*4,r0 ; vector in r0
|
|
4 001306 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001312 012600 mov (sp)+,r0
|
|
6 001314 000002 rti
|
|
2 000041 n=n+1
|
|
1 isr \n
|
|
1 isr41:
|
|
2 001316 010046 mov r0,-(sp)
|
|
3 001320 012700 000204 mov #41*4,r0 ; vector in r0
|
|
4 001324 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001330 012600 mov (sp)+,r0
|
|
6 001332 000002 rti
|
|
2 000042 n=n+1
|
|
1 isr \n
|
|
1 isr42:
|
|
2 001334 010046 mov r0,-(sp)
|
|
3 001336 012700 000210 mov #42*4,r0 ; vector in r0
|
|
4 001342 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001346 012600 mov (sp)+,r0
|
|
6 001350 000002 rti
|
|
2 000043 n=n+1
|
|
1 isr \n
|
|
1 isr43:
|
|
2 001352 010046 mov r0,-(sp)
|
|
3 001354 012700 000214 mov #43*4,r0 ; vector in r0
|
|
4 001360 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001364 012600 mov (sp)+,r0
|
|
6 001366 000002 rti
|
|
2 000044 n=n+1
|
|
1 isr \n
|
|
1 isr44:
|
|
2 001370 010046 mov r0,-(sp)
|
|
3 001372 012700 000220 mov #44*4,r0 ; vector in r0
|
|
4 001376 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001402 012600 mov (sp)+,r0
|
|
6 001404 000002 rti
|
|
2 000045 n=n+1
|
|
1 isr \n
|
|
1 isr45:
|
|
2 001406 010046 mov r0,-(sp)
|
|
3 001410 012700 000224 mov #45*4,r0 ; vector in r0
|
|
4 001414 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001420 012600 mov (sp)+,r0
|
|
6 001422 000002 rti
|
|
2 000046 n=n+1
|
|
1 isr \n
|
|
1 isr46:
|
|
2 001424 010046 mov r0,-(sp)
|
|
3 001426 012700 000230 mov #46*4,r0 ; vector in r0
|
|
4 001432 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001436 012600 mov (sp)+,r0
|
|
6 001440 000002 rti
|
|
2 000047 n=n+1
|
|
1 isr \n
|
|
1 isr47:
|
|
2 001442 010046 mov r0,-(sp)
|
|
3 001444 012700 000234 mov #47*4,r0 ; vector in r0
|
|
4 001450 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001454 012600 mov (sp)+,r0
|
|
6 001456 000002 rti
|
|
2 000050 n=n+1
|
|
1 isr \n
|
|
1 isr50:
|
|
2 001460 010046 mov r0,-(sp)
|
|
3 001462 012700 000240 mov #50*4,r0 ; vector in r0
|
|
4 001466 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001472 012600 mov (sp)+,r0
|
|
6 001474 000002 rti
|
|
2 000051 n=n+1
|
|
1 isr \n
|
|
1 isr51:
|
|
2 001476 010046 mov r0,-(sp)
|
|
3 001500 012700 000244 mov #51*4,r0 ; vector in r0
|
|
4 001504 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001510 012600 mov (sp)+,r0
|
|
6 001512 000002 rti
|
|
2 000052 n=n+1
|
|
1 isr \n
|
|
1 isr52:
|
|
2 001514 010046 mov r0,-(sp)
|
|
3 001516 012700 000250 mov #52*4,r0 ; vector in r0
|
|
4 001522 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001526 012600 mov (sp)+,r0
|
|
6 001530 000002 rti
|
|
2 000053 n=n+1
|
|
1 isr \n
|
|
1 isr53:
|
|
2 001532 010046 mov r0,-(sp)
|
|
3 001534 012700 000254 mov #53*4,r0 ; vector in r0
|
|
4 001540 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001544 012600 mov (sp)+,r0
|
|
6 001546 000002 rti
|
|
2 000054 n=n+1
|
|
1 isr \n
|
|
1 isr54:
|
|
2 001550 010046 mov r0,-(sp)
|
|
3 001552 012700 000260 mov #54*4,r0 ; vector in r0
|
|
4 001556 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001562 012600 mov (sp)+,r0
|
|
6 001564 000002 rti
|
|
2 000055 n=n+1
|
|
1 isr \n
|
|
1 isr55:
|
|
2 001566 010046 mov r0,-(sp)
|
|
3 001570 012700 000264 mov #55*4,r0 ; vector in r0
|
|
4 001574 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001600 012600 mov (sp)+,r0
|
|
6 001602 000002 rti
|
|
2 000056 n=n+1
|
|
1 isr \n
|
|
1 isr56:
|
|
2 001604 010046 mov r0,-(sp)
|
|
3 001606 012700 000270 mov #56*4,r0 ; vector in r0
|
|
4 001612 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001616 012600 mov (sp)+,r0
|
|
6 001620 000002 rti
|
|
2 000057 n=n+1
|
|
1 isr \n
|
|
1 isr57:
|
|
2 001622 010046 mov r0,-(sp)
|
|
3 001624 012700 000274 mov #57*4,r0 ; vector in r0
|
|
4 001630 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001634 012600 mov (sp)+,r0
|
|
6 001636 000002 rti
|
|
2 000060 n=n+1
|
|
1 isr \n
|
|
1 isr60:
|
|
2 001640 010046 mov r0,-(sp)
|
|
3 001642 012700 000300 mov #60*4,r0 ; vector in r0
|
|
4 001646 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001652 012600 mov (sp)+,r0
|
|
6 001654 000002 rti
|
|
2 000061 n=n+1
|
|
1 isr \n
|
|
1 isr61:
|
|
2 001656 010046 mov r0,-(sp)
|
|
3 001660 012700 000304 mov #61*4,r0 ; vector in r0
|
|
4 001664 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001670 012600 mov (sp)+,r0
|
|
6 001672 000002 rti
|
|
2 000062 n=n+1
|
|
1 isr \n
|
|
1 isr62:
|
|
2 001674 010046 mov r0,-(sp)
|
|
3 001676 012700 000310 mov #62*4,r0 ; vector in r0
|
|
4 001702 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001706 012600 mov (sp)+,r0
|
|
6 001710 000002 rti
|
|
2 000063 n=n+1
|
|
1 isr \n
|
|
1 isr63:
|
|
2 001712 010046 mov r0,-(sp)
|
|
3 001714 012700 000314 mov #63*4,r0 ; vector in r0
|
|
4 001720 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001724 012600 mov (sp)+,r0
|
|
6 001726 000002 rti
|
|
2 000064 n=n+1
|
|
1 isr \n
|
|
1 isr64:
|
|
2 001730 010046 mov r0,-(sp)
|
|
3 001732 012700 000320 mov #64*4,r0 ; vector in r0
|
|
4 001736 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001742 012600 mov (sp)+,r0
|
|
6 001744 000002 rti
|
|
2 000065 n=n+1
|
|
1 isr \n
|
|
1 isr65:
|
|
2 001746 010046 mov r0,-(sp)
|
|
3 001750 012700 000324 mov #65*4,r0 ; vector in r0
|
|
4 001754 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001760 012600 mov (sp)+,r0
|
|
6 001762 000002 rti
|
|
2 000066 n=n+1
|
|
1 isr \n
|
|
1 isr66:
|
|
2 001764 010046 mov r0,-(sp)
|
|
3 001766 012700 000330 mov #66*4,r0 ; vector in r0
|
|
4 001772 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 001776 012600 mov (sp)+,r0
|
|
6 002000 000002 rti
|
|
2 000067 n=n+1
|
|
1 isr \n
|
|
1 isr67:
|
|
2 002002 010046 mov r0,-(sp)
|
|
3 002004 012700 000334 mov #67*4,r0 ; vector in r0
|
|
4 002010 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002014 012600 mov (sp)+,r0
|
|
6 002016 000002 rti
|
|
2 000070 n=n+1
|
|
1 isr \n
|
|
1 isr70:
|
|
2 002020 010046 mov r0,-(sp)
|
|
3 002022 012700 000340 mov #70*4,r0 ; vector in r0
|
|
4 002026 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002032 012600 mov (sp)+,r0
|
|
6 002034 000002 rti
|
|
2 000071 n=n+1
|
|
1 isr \n
|
|
1 isr71:
|
|
2 002036 010046 mov r0,-(sp)
|
|
3 002040 012700 000344 mov #71*4,r0 ; vector in r0
|
|
4 002044 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002050 012600 mov (sp)+,r0
|
|
6 002052 000002 rti
|
|
2 000072 n=n+1
|
|
1 isr \n
|
|
1 isr72:
|
|
2 002054 010046 mov r0,-(sp)
|
|
3 002056 012700 000350 mov #72*4,r0 ; vector in r0
|
|
4 002062 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002066 012600 mov (sp)+,r0
|
|
6 002070 000002 rti
|
|
2 000073 n=n+1
|
|
1 isr \n
|
|
1 isr73:
|
|
2 002072 010046 mov r0,-(sp)
|
|
3 002074 012700 000354 mov #73*4,r0 ; vector in r0
|
|
4 002100 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002104 012600 mov (sp)+,r0
|
|
6 002106 000002 rti
|
|
2 000074 n=n+1
|
|
1 isr \n
|
|
1 isr74:
|
|
2 002110 010046 mov r0,-(sp)
|
|
3 002112 012700 000360 mov #74*4,r0 ; vector in r0
|
|
4 002116 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002122 012600 mov (sp)+,r0
|
|
6 002124 000002 rti
|
|
2 000075 n=n+1
|
|
1 isr \n
|
|
1 isr75:
|
|
2 002126 010046 mov r0,-(sp)
|
|
3 002130 012700 000364 mov #75*4,r0 ; vector in r0
|
|
4 002134 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002140 012600 mov (sp)+,r0
|
|
6 002142 000002 rti
|
|
2 000076 n=n+1
|
|
1 isr \n
|
|
1 isr76:
|
|
2 002144 010046 mov r0,-(sp)
|
|
3 002146 012700 000370 mov #76*4,r0 ; vector in r0
|
|
4 002152 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002156 012600 mov (sp)+,r0
|
|
6 002160 000002 rti
|
|
2 000077 n=n+1
|
|
1 isr \n
|
|
1 isr77:
|
|
2 002162 010046 mov r0,-(sp)
|
|
3 002164 012700 000374 mov #77*4,r0 ; vector in r0
|
|
4 002170 004737 010236 call @#doisr ; print message for vector in r0
|
|
5 002174 012600 mov (sp)+,r0
|
|
6 002176 000002 rti
|
|
2 000100 n=n+1
|
|
68
|
|
69
|
|
70
|
|
71
|
|
72 ; ---- foreground thread ---------
|
|
73 000000 .=0
|
|
74 000000 000137 010000 jmp @#start ; easier manual start from 0
|
|
75
|
|
76 007776 .=7776
|
|
77 007776 000000 inchr: .word ; input alternative to DL11
|
|
78
|
|
79 010000 .=10000
|
|
80
|
|
81 007776 stack = . - 2 ; stack growns down from start
|
|
82
|
|
83 start:
|
|
84 010000 012706 007776 mov #stack,sp ; init stack
|
|
85 010004 005037 177776 clr @#psw ; clear priority, allow all interupts
|
|
86
|
|
87 010010 000005 reset ; disable INTR on all devices
|
|
88
|
|
89 010012 005037 011506 clr @#logptr ; default: slow mode
|
|
90
|
|
91 ; 1. print "Hello" msg
|
|
92 010016 012701 010640 mov #shello,r1
|
|
93 010022 004737 010412 call @#puts
|
|
94
|
|
95 ; test vecnum printout
|
|
96 ; mov #123456,r0
|
|
97 ; call @#isrmsg
|
|
98
|
|
99 ; 2. echo chars until ^C hit
|
|
100 1$:
|
|
101 010026 004737 010560 call @#getc ; wait for char, return in r0
|
|
102 010032 042700 177600 bic #177600,r0 ; make 7bit: clear bits <15:7>
|
|
103 010036 120027 000003 cmpb r0,#3 ; break by ^C ?
|
|
104 010042 001467 beq 9$ ; yes: leave loop
|
|
105 010044 120027 000060 cmpb r0,#60
|
|
106 010050 103432 blo 2$ ; char is < '0'
|
|
107 010052 120027 000067 cmpb r0,#67
|
|
108 010056 101027 bhi 2$ ; char is > '7'
|
|
109 010060 110002 movb r0,r2 ; save
|
|
110
|
|
111 ; key is 0..7: change priority
|
|
112 010062 012701 011433 mov #sprio0,r1 ; print info
|
|
113 010066 004737 010412 call @#puts
|
|
114 010072 110200 movb r2,r0 ; restore digit
|
|
115 010074 004737 010540 call @#putc ; print level digit
|
|
116 010100 012701 011465 mov #sprio1,r1
|
|
117 010104 004737 010412 call @#puts
|
|
118 ; change PSW
|
|
119 010110 110200 movb r2,r0
|
|
120 010112 142700 000370 bicb #370,r0 ; ASCII -> integer
|
|
121 010116 006300 asl r0 ; move level to "priority" field in PSW
|
|
122 010120 006300 asl r0 ; in bits 7,6,5
|
|
123 010122 006300 asl r0
|
|
124 010124 006300 asl r0
|
|
125 010126 006300 asl r0
|
|
126 010130 010037 177776 mov r0,@#psw
|
|
127
|
|
128 010134 000734 br 1$ ; OK, next char
|
|
129
|
|
130 2$: ; -- eval "S", F"
|
|
131 010136 120027 000123 cmpb r0,#'S
|
|
132 010142 001007 bne 3$
|
|
133 010144 012701 011300 mov #sslwmd,r1 ; "slow mode"
|
|
134 010150 004737 010412 call @#puts
|
|
135 010154 005037 011506 clr @#logptr
|
|
136 010160 000722 br 1$ ; OK, next char
|
|
137 010162 120027 000106 3$: cmpb r0,#'F
|
|
138 010166 001012 bne 8$ ;
|
|
139 010170 012701 011357 mov #sfstmd,r1 ; "fast mode"
|
|
140 010174 004737 010412 call @#puts
|
|
141 010200 004737 010340 call @#prtlog ; print logged vectors, if any
|
|
142 010204 012737 011510 011506 mov #logbuf,@#logptr; pointer to biuffer start
|
|
143 010212 000705 br 1$ ; OK, next char
|
|
144
|
|
145 8$:
|
|
146 010214 004737 010540 call @#putc ; no: echo char in r0 and loop
|
|
147 010220 000702 br 1$
|
|
148
|
|
149 9$:
|
|
150
|
|
151 ; 3. print "Bye bye" msg and HALT
|
|
152 010222 012701 011470 mov #sbye,r1
|
|
153 010226 004737 010412 call @#puts
|
|
154 010232 000000 halt
|
|
155
|
|
156 ; 4. loop on CONT
|
|
157 010234 000661 br start
|
|
158
|
|
159
|
|
160 ; ----------------------
|
|
161 ; Common code for all ISRs
|
|
162 ; print vector number in r0
|
|
163 ; called on interrupt level
|
|
164
|
|
165 doisr:
|
|
166 010236 010446 mov r4,-(sp)
|
|
167 010240 010346 mov r3,-(sp)
|
|
168 010242 010246 mov r2,-(sp)
|
|
169 010244 010146 mov r1,-(sp)
|
|
170 010246 010046 mov r0,-(sp)
|
|
171
|
|
172 010250 013701 011506 mov @#logptr,r1
|
|
173 010254 001404 beq 1$
|
|
174 ; Fast mode: log vector
|
|
175 010256 010021 mov r0,(r1)+ ; store vector in array
|
|
176 010260 010137 011506 mov r1,@#logptr ; save updated list pointer
|
|
177
|
|
178 010264 000417 br 9$
|
|
179 1$: ; "Slow mode: print msg
|
|
180 010266 012701 010626 mov #sisr1,r1 ; "ISR "
|
|
181 010272 004737 010412 call @#puts
|
|
182 010276 011600 mov (sp),r0 ; restore vecnum
|
|
183 010300 004737 010446 call @#putnum
|
|
184 010304 012701 010634 mov #sisr2,r1 ; "cr lf
|
|
185 010310 004737 010412 call @#puts
|
|
186 ; make ISR 100ms
|
|
187 010314 012700 000144 mov #144,r0 ; 100
|
|
188 010320 004737 010610 call @#waitms
|
|
189
|
|
190 9$:
|
|
191 010324 012600 mov (sp)+,r0
|
|
192 010326 012601 mov (sp)+,r1
|
|
193 010330 012602 mov (sp)+,r2
|
|
194 010332 012603 mov (sp)+,r3
|
|
195 010334 012604 mov (sp)+,r4
|
|
196 010336 000207 return
|
|
197
|
|
198
|
|
199 ; ----------------------
|
|
200 ; prtlog - print log of isr vectors
|
|
201 ; word list from logbuf to logptr
|
|
202 prtlog:
|
|
203 010340 005737 011506 tst @#logptr
|
|
204 010344 001421 beq 9$ ; ptr 0, slow mode, nothing logged
|
|
205 010346 012702 011510 mov #logbuf,r2
|
|
206 1$:
|
|
207 010352 020237 011506 cmp r2,@#logptr
|
|
208 010356 103010 bhis 8$ ; end of list reached
|
|
209 010360 012200 mov (r2)+,r0 ; print vector from list
|
|
210 010362 004737 010446 call @#putnum
|
|
211 010366 012700 000040 mov #40,r0 ; print space separator
|
|
212 010372 004737 010540 call @#putc
|
|
213 010376 000765 br 1$
|
|
214 8$:
|
|
215 010400 012701 011503 mov #scrlf,r1 ; CR/LF
|
|
216 010404 004737 010412 call @#puts
|
|
217
|
|
218 9$:
|
|
219 010410 000207 return
|
|
220
|
|
221 ; ----------------------
|
|
222 ; puts - print a string
|
|
223 ; r1 = pointer, r0,r1 changed
|
|
224 puts:
|
|
225 010412 112100 movb (r1)+,r0 ; load xmt char
|
|
226 010414 001403 beq 1$ ; string ends with 0
|
|
227 010416 004737 010540 call @#putc
|
|
228 010422 000773 br puts ; transmit nxt char of string
|
|
229 010424 000207 1$: return
|
|
230
|
|
231
|
|
232 ; ----------------------
|
|
233 ; putnum - print the octal number in r0
|
|
234 010426 numbf0: .blkw 10 ; space to mount number string
|
|
235 010446 numbf1 =.
|
|
236 putnum:
|
|
237 010446 010046 mov r0,-(sp)
|
|
238 010450 010146 mov r1,-(sp)
|
|
239 010452 010246 mov r2,-(sp)
|
|
240 010454 010346 mov r3,-(sp)
|
|
241 010456 010002 mov r0,r2 ; r2 = shifter
|
|
242 010460 012701 010446 mov #numbf1,r1 ; r1 = buffer pointer, backwards
|
|
243 010464 112741 000000 movb #0,-(r1) ; set terminating 0
|
|
244 ; repeat 6 times
|
|
245 010470 012703 000006 mov #6,r3
|
|
246 1$:
|
|
247 010474 010200 mov r2,r0
|
|
248 ; extract lower 3 bits = octal digit
|
|
249 010476 042700 177770 bic #177770,r0 ; r0 &= 0x07
|
|
250 010502 062700 000060 add #60,r0 ; r0 += '0'
|
|
251 010506 110041 movb r0,-(r1) ; write in buffer
|
|
252 010510 000241 clc
|
|
253 010512 006202 asr r2 ; shift to next digit
|
|
254 010514 006202 asr r2
|
|
255 010516 006202 asr r2
|
|
256 010520 077313 sob r3,1$ ; loop for all 6 digits
|
|
257
|
|
258 010522 004737 010412 call @#puts
|
|
259 010526 012603 mov (sp)+,r3
|
|
260 010530 012602 mov (sp)+,r2
|
|
261 010532 012601 mov (sp)+,r1
|
|
262 010534 012600 mov (sp)+,r0
|
|
263 010536 000207 return
|
|
264
|
|
265
|
|
266 ; DEC DL11 console I/O
|
|
267 ; ----------------------
|
|
268 ; putc - output a single char
|
|
269 ; r0 = char, r4 changed
|
|
270 putc:
|
|
271 010540 012704 177560 mov #dladr,r4 ; set base addr
|
|
272 010544 110064 000006 movb r0,6(r4) ; char into transmit buffer
|
|
273 010550 105764 000004 1$: tstb 4(r4) ; XMT RDY?
|
|
274 010554 100375 bpl 1$ ; no, loop
|
|
275 010556 000207 return
|
|
276
|
|
277 ; ----------------------
|
|
278 ; getc - input a single char
|
|
279 ; result in r0, r4 changed
|
|
280 getc:
|
|
281 010560 012704 177560 mov #dladr,r4 ; set base addr
|
|
282 010564 013700 007776 1$: mov @#inchr,r0 ; external DEPOSIT into inchr?
|
|
283 010570 001004 bne 9$ ; yes: process as input
|
|
284 010572 105714 tstb (r4) ; else: RCVR DONE?
|
|
285 010574 100373 bpl 1$ ; no, loop
|
|
286 010576 016400 000002 mov 2(r4),r0 ; return data
|
|
287 9$:
|
|
288 010602 005037 007776 clr @#inchr
|
|
289 010606 000207 return
|
|
290
|
|
291 ; ----------------------
|
|
292 ; waitms - wait r0 milli seconds
|
|
293 waitms:
|
|
294 010610 010146 mov r1,-(sp)
|
|
295
|
|
296 1$: ; -- outer loop
|
|
297 010612 012701 000764 mov #764,r1 ; 500
|
|
298 2$: ; -- inner loop: 1ms @ 1MHz
|
|
299 010616 077101 sob r1,2$ ; 1 cycle,2 us per loop (11/34)
|
|
300
|
|
301 010620 077004 sob r0,1$
|
|
302 010622 012601 mov (sp)+,r1
|
|
303 010624 000207 return
|
|
304
|
|
305 ; ---- Test strings, each 256 chars max ---------
|
|
306
|
|
307 sisr1: ; start of ISR <vecnum> message
|
|
308 010626 074 111 123 .ascii /<ISR /
|
|
010631 122 040
|
|
309 010633 000 .byte 0 ; NUL=end marker
|
|
310 sisr2: ; end of ISR <vecnum> message
|
|
311 010634 076 .ascii />/
|
|
312 010635 015 012 .byte 15,12 ; CR, LF,
|
|
313 010637 000 .byte 0 ; NUL=end marker
|
|
314
|
|
315
|
|
316 shello:
|
|
317 010640 015 012 .byte 15,12 ; CR, LF,
|
|
318 010642 052 052 052 .ascii /*** Interrupt and DMA test ***/
|
|
010645 040 111 156
|
|
010650 164 145 162
|
|
010653 162 165 160
|
|
010656 164 040 141
|
|
010661 156 144 040
|
|
010664 104 115 101
|
|
010667 040 164 145
|
|
010672 163 164 040
|
|
010675 052 052 052
|
|
319 010700 015 012 .byte 15,12 ; CR, LF,
|
|
320 010702 124 150 145 .ascii /The INTR vectors 0..77 print the vector num./
|
|
010705 040 111 116
|
|
010710 124 122 040
|
|
010713 166 145 143
|
|
010716 164 157 162
|
|
010721 163 040 060
|
|
010724 056 056 067
|
|
010727 067 040 160
|
|
010732 162 151 156
|
|
010735 164 040 164
|
|
010740 150 145 040
|
|
010743 166 145 143
|
|
010746 164 157 162
|
|
010751 040 156 165
|
|
010754 155 056
|
|
321 010756 015 012 .byte 15,12 ; CR, LF,
|
|
322 010760 124 150 145 .ascii /The foreground thread echoes typed chars, ^C HALTs./
|
|
010763 040 146 157
|
|
010766 162 145 147
|
|
010771 162 157 165
|
|
010774 156 144 040
|
|
010777 164 150 162
|
|
011002 145 141 144
|
|
011005 040 145 143
|
|
011010 150 157 145
|
|
011013 163 040 164
|
|
011016 171 160 145
|
|
011021 144 040 143
|
|
011024 150 141 162
|
|
011027 163 054 040
|
|
011032 136 103 040
|
|
011035 110 101 114
|
|
011040 124 163 056
|
|
323 011043 015 012 .byte 15,12 ; CR, LF,
|
|
324 011045 103 150 141 .ascii /Chars 0..7 set the new processor priority level./
|
|
011050 162 163 040
|
|
011053 060 056 056
|
|
011056 067 040 163
|
|
011061 145 164 040
|
|
011064 164 150 145
|
|
011067 040 156 145
|
|
011072 167 040 160
|
|
011075 162 157 143
|
|
011100 145 163 163
|
|
011103 157 162 040
|
|
011106 160 162 151
|
|
011111 157 162 151
|
|
011114 164 171 040
|
|
011117 154 145 166
|
|
011122 145 154 056
|
|
325 011125 015 012 .byte 15,12 ; CR, LF,
|
|
326 011127 123 040 075 .ascii /S = slow mode: ISR prints message (default)/
|
|
011132 040 163 154
|
|
011135 157 167 040
|
|
011140 155 157 144
|
|
011143 145 072 040
|
|
011146 111 123 122
|
|
011151 040 160 162
|
|
011154 151 156 164
|
|
011157 163 040 155
|
|
011162 145 163 163
|
|
011165 141 147 145
|
|
011170 040 050 144
|
|
011173 145 146 141
|
|
011176 165 154 164
|
|
011201 051
|
|
327 011202 015 012 .byte 15,12 ; CR, LF,
|
|
328 011204 106 040 075 .ascii /F = fast mode: ISR logs vector, print and clr current log/
|
|
011207 040 146 141
|
|
011212 163 164 040
|
|
011215 155 157 144
|
|
011220 145 072 040
|
|
011223 111 123 122
|
|
011226 040 154 157
|
|
011231 147 163 040
|
|
011234 166 145 143
|
|
011237 164 157 162
|
|
011242 054 040 160
|
|
011245 162 151 156
|
|
011250 164 040 141
|
|
011253 156 144 040
|
|
011256 143 154 162
|
|
011261 040 143 165
|
|
011264 162 162 145
|
|
011267 156 164 040
|
|
011272 154 157 147
|
|
329 011275 015 012 .byte 15,12 ; CR, LF,
|
|
330 011277 000 .byte 0 ; NUL=end marker
|
|
331
|
|
332 sslwmd:
|
|
333 011300 123 154 157 .ascii /Slow mode: called ISR prints vector directly/
|
|
011303 167 040 155
|
|
011306 157 144 145
|
|
011311 072 040 143
|
|
011314 141 154 154
|
|
011317 145 144 040
|
|
011322 111 123 122
|
|
011325 040 160 162
|
|
011330 151 156 164
|
|
011333 163 040 166
|
|
011336 145 143 164
|
|
011341 157 162 040
|
|
011344 144 151 162
|
|
011347 145 143 164
|
|
011352 154 171
|
|
334 011354 015 012 .byte 15,12 ; CR, LF,
|
|
335 011356 000 .byte 0 ; NUL=end marker
|
|
336
|
|
337 sfstmd:
|
|
338 011357 106 141 163 .ascii /Fast mode: called ISR vectors are logged:/
|
|
011362 164 040 155
|
|
011365 157 144 145
|
|
011370 072 040 143
|
|
011373 141 154 154
|
|
011376 145 144 040
|
|
011401 111 123 122
|
|
011404 040 166 145
|
|
011407 143 164 157
|
|
011412 162 163 040
|
|
011415 141 162 145
|
|
011420 040 154 157
|
|
011423 147 147 145
|
|
011426 144 072
|
|
339 011430 015 012 .byte 15,12 ; CR, LF,
|
|
340 011432 000 .byte 0 ; NUL=end marker
|
|
341
|
|
342 sprio0:
|
|
343 011433 015 012 .byte 15,12 ; CR, LF,
|
|
344 011435 103 120 125 .ascii /CPU priority level now /
|
|
011440 040 160 162
|
|
011443 151 157 162
|
|
011446 151 164 171
|
|
011451 040 154 145
|
|
011454 166 145 154
|
|
011457 040 156 157
|
|
011462 167 040
|
|
345 011464 000 .byte 0
|
|
346
|
|
347 sprio1:
|
|
348 011465 015 012 .byte 15,12 ; CR, LF,
|
|
349 011467 000 .byte 0 ; NUL=end marker
|
|
350
|
|
351 sbye:
|
|
352 011470 015 012 .byte 15,12
|
|
353 011472 107 157 157 .ascii /Good Bye!/
|
|
011475 144 040 102
|
|
011500 171 145 041
|
|
354 scrlf:
|
|
355 011503 015 012 000 .byte 15,12,0 ; CR, LF, NUL=end marker
|
|
356
|
|
357 ; .byte 0 ; make addr even
|
|
358
|
|
359 ; in "fast" mode, ISR calls fill this array with called vectors
|
|
360 logptr:
|
|
361 011506 000000 .word ; addr of next logentry to fill. 0 in "slow" mode
|
|
362
|
|
363 logbuf:
|
|
364
|
|
365
|
|
366 .end
|
|
366
|