mirror of
https://github.com/livingcomputermuseum/UniBone.git
synced 2026-05-05 07:24:45 +00:00
1149 lines
65 KiB
Plaintext
1149 lines
65 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 ;
|
|
16 ; Contact: Joerg Hoppe / j_hoppe@t-online.de / www.retromcp.com
|
|
17
|
|
18 FF70h dladr = 177560 ; DL11 console base address
|
|
19 FFFEh psw = 177776 ; processor status
|
|
20
|
|
21
|
|
22 ; count of automatically generated interrupt vectors
|
|
23 0040h veccnt = 100
|
|
24
|
|
25 ; ------- macro to define interrupt vector #<vecidx> ------
|
|
26 .macro vector vecidx
|
|
27 .=4*vecidx ; vector #vecidx
|
|
28 .word isr'vecidx ; new PC of ISR
|
|
29 .word 340 ; new PSW: priority is max = 7
|
|
30 .endm
|
|
31
|
|
32 ; ----- macro to define ISR for vector #n -------
|
|
33 .macro isr vecidx
|
|
34 isr'vecidx:
|
|
35 mov r0,-(sp)
|
|
36 mov #vecidx*4,r0 ; vector in r0
|
|
37 call @#doisr ; print message for vector in r0
|
|
38 mov (sp)+,r0
|
|
39 rti
|
|
40 .endm
|
|
41
|
|
42
|
|
43
|
|
44
|
|
45 .asect
|
|
46
|
|
47 0000h . = 0
|
|
48 ; ---- "veccnt" Interrupt Vectors ---------
|
|
49 0000h n=0
|
|
50 .rept veccnt
|
|
51 vector \n
|
|
52 n=n+1
|
|
53 .endr
|
|
1 vector \n
|
|
1 0000h .=4*0 ; vector #0
|
|
2 0000h 0100h .word isr0 ; new PC of ISR
|
|
3 0002h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0001h n=n+1
|
|
1 vector \n
|
|
1 0004h .=4*1 ; vector #1
|
|
2 0004h 010Eh .word isr1 ; new PC of ISR
|
|
3 0006h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0002h n=n+1
|
|
1 vector \n
|
|
1 0008h .=4*2 ; vector #2
|
|
2 0008h 011Ch .word isr2 ; new PC of ISR
|
|
3 000Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0003h n=n+1
|
|
1 vector \n
|
|
1 000Ch .=4*3 ; vector #3
|
|
2 000Ch 012Ah .word isr3 ; new PC of ISR
|
|
3 000Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0004h n=n+1
|
|
1 vector \n
|
|
1 0010h .=4*4 ; vector #4
|
|
2 0010h 0138h .word isr4 ; new PC of ISR
|
|
3 0012h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0005h n=n+1
|
|
1 vector \n
|
|
1 0014h .=4*5 ; vector #5
|
|
2 0014h 0146h .word isr5 ; new PC of ISR
|
|
3 0016h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0006h n=n+1
|
|
1 vector \n
|
|
1 0018h .=4*6 ; vector #6
|
|
2 0018h 0154h .word isr6 ; new PC of ISR
|
|
3 001Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0007h n=n+1
|
|
1 vector \n
|
|
1 001Ch .=4*7 ; vector #7
|
|
2 001Ch 0162h .word isr7 ; new PC of ISR
|
|
3 001Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0008h n=n+1
|
|
1 vector \n
|
|
1 0020h .=4*10 ; vector #10
|
|
2 0020h 0170h .word isr10 ; new PC of ISR
|
|
3 0022h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0009h n=n+1
|
|
1 vector \n
|
|
1 0024h .=4*11 ; vector #11
|
|
2 0024h 017Eh .word isr11 ; new PC of ISR
|
|
3 0026h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Ah n=n+1
|
|
1 vector \n
|
|
1 0028h .=4*12 ; vector #12
|
|
2 0028h 018Ch .word isr12 ; new PC of ISR
|
|
3 002Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Bh n=n+1
|
|
1 vector \n
|
|
1 002Ch .=4*13 ; vector #13
|
|
2 002Ch 019Ah .word isr13 ; new PC of ISR
|
|
3 002Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Ch n=n+1
|
|
1 vector \n
|
|
1 0030h .=4*14 ; vector #14
|
|
2 0030h 01A8h .word isr14 ; new PC of ISR
|
|
3 0032h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Dh n=n+1
|
|
1 vector \n
|
|
1 0034h .=4*15 ; vector #15
|
|
2 0034h 01B6h .word isr15 ; new PC of ISR
|
|
3 0036h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Eh n=n+1
|
|
1 vector \n
|
|
1 0038h .=4*16 ; vector #16
|
|
2 0038h 01C4h .word isr16 ; new PC of ISR
|
|
3 003Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 000Fh n=n+1
|
|
1 vector \n
|
|
1 003Ch .=4*17 ; vector #17
|
|
2 003Ch 01D2h .word isr17 ; new PC of ISR
|
|
3 003Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0010h n=n+1
|
|
1 vector \n
|
|
1 0040h .=4*20 ; vector #20
|
|
2 0040h 01E0h .word isr20 ; new PC of ISR
|
|
3 0042h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0011h n=n+1
|
|
1 vector \n
|
|
1 0044h .=4*21 ; vector #21
|
|
2 0044h 01EEh .word isr21 ; new PC of ISR
|
|
3 0046h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0012h n=n+1
|
|
1 vector \n
|
|
1 0048h .=4*22 ; vector #22
|
|
2 0048h 01FCh .word isr22 ; new PC of ISR
|
|
3 004Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0013h n=n+1
|
|
1 vector \n
|
|
1 004Ch .=4*23 ; vector #23
|
|
2 004Ch 020Ah .word isr23 ; new PC of ISR
|
|
3 004Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0014h n=n+1
|
|
1 vector \n
|
|
1 0050h .=4*24 ; vector #24
|
|
2 0050h 0218h .word isr24 ; new PC of ISR
|
|
3 0052h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0015h n=n+1
|
|
1 vector \n
|
|
1 0054h .=4*25 ; vector #25
|
|
2 0054h 0226h .word isr25 ; new PC of ISR
|
|
3 0056h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0016h n=n+1
|
|
1 vector \n
|
|
1 0058h .=4*26 ; vector #26
|
|
2 0058h 0234h .word isr26 ; new PC of ISR
|
|
3 005Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0017h n=n+1
|
|
1 vector \n
|
|
1 005Ch .=4*27 ; vector #27
|
|
2 005Ch 0242h .word isr27 ; new PC of ISR
|
|
3 005Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0018h n=n+1
|
|
1 vector \n
|
|
1 0060h .=4*30 ; vector #30
|
|
2 0060h 0250h .word isr30 ; new PC of ISR
|
|
3 0062h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0019h n=n+1
|
|
1 vector \n
|
|
1 0064h .=4*31 ; vector #31
|
|
2 0064h 025Eh .word isr31 ; new PC of ISR
|
|
3 0066h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Ah n=n+1
|
|
1 vector \n
|
|
1 0068h .=4*32 ; vector #32
|
|
2 0068h 026Ch .word isr32 ; new PC of ISR
|
|
3 006Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Bh n=n+1
|
|
1 vector \n
|
|
1 006Ch .=4*33 ; vector #33
|
|
2 006Ch 027Ah .word isr33 ; new PC of ISR
|
|
3 006Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Ch n=n+1
|
|
1 vector \n
|
|
1 0070h .=4*34 ; vector #34
|
|
2 0070h 0288h .word isr34 ; new PC of ISR
|
|
3 0072h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Dh n=n+1
|
|
1 vector \n
|
|
1 0074h .=4*35 ; vector #35
|
|
2 0074h 0296h .word isr35 ; new PC of ISR
|
|
3 0076h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Eh n=n+1
|
|
1 vector \n
|
|
1 0078h .=4*36 ; vector #36
|
|
2 0078h 02A4h .word isr36 ; new PC of ISR
|
|
3 007Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 001Fh n=n+1
|
|
1 vector \n
|
|
1 007Ch .=4*37 ; vector #37
|
|
2 007Ch 02B2h .word isr37 ; new PC of ISR
|
|
3 007Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0020h n=n+1
|
|
1 vector \n
|
|
1 0080h .=4*40 ; vector #40
|
|
2 0080h 02C0h .word isr40 ; new PC of ISR
|
|
3 0082h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0021h n=n+1
|
|
1 vector \n
|
|
1 0084h .=4*41 ; vector #41
|
|
2 0084h 02CEh .word isr41 ; new PC of ISR
|
|
3 0086h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0022h n=n+1
|
|
1 vector \n
|
|
1 0088h .=4*42 ; vector #42
|
|
2 0088h 02DCh .word isr42 ; new PC of ISR
|
|
3 008Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0023h n=n+1
|
|
1 vector \n
|
|
1 008Ch .=4*43 ; vector #43
|
|
2 008Ch 02EAh .word isr43 ; new PC of ISR
|
|
3 008Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0024h n=n+1
|
|
1 vector \n
|
|
1 0090h .=4*44 ; vector #44
|
|
2 0090h 02F8h .word isr44 ; new PC of ISR
|
|
3 0092h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0025h n=n+1
|
|
1 vector \n
|
|
1 0094h .=4*45 ; vector #45
|
|
2 0094h 0306h .word isr45 ; new PC of ISR
|
|
3 0096h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0026h n=n+1
|
|
1 vector \n
|
|
1 0098h .=4*46 ; vector #46
|
|
2 0098h 0314h .word isr46 ; new PC of ISR
|
|
3 009Ah 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0027h n=n+1
|
|
1 vector \n
|
|
1 009Ch .=4*47 ; vector #47
|
|
2 009Ch 0322h .word isr47 ; new PC of ISR
|
|
3 009Eh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0028h n=n+1
|
|
1 vector \n
|
|
1 00A0h .=4*50 ; vector #50
|
|
2 00A0h 0330h .word isr50 ; new PC of ISR
|
|
3 00A2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0029h n=n+1
|
|
1 vector \n
|
|
1 00A4h .=4*51 ; vector #51
|
|
2 00A4h 033Eh .word isr51 ; new PC of ISR
|
|
3 00A6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Ah n=n+1
|
|
1 vector \n
|
|
1 00A8h .=4*52 ; vector #52
|
|
2 00A8h 034Ch .word isr52 ; new PC of ISR
|
|
3 00AAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Bh n=n+1
|
|
1 vector \n
|
|
1 00ACh .=4*53 ; vector #53
|
|
2 00ACh 035Ah .word isr53 ; new PC of ISR
|
|
3 00AEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Ch n=n+1
|
|
1 vector \n
|
|
1 00B0h .=4*54 ; vector #54
|
|
2 00B0h 0368h .word isr54 ; new PC of ISR
|
|
3 00B2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Dh n=n+1
|
|
1 vector \n
|
|
1 00B4h .=4*55 ; vector #55
|
|
2 00B4h 0376h .word isr55 ; new PC of ISR
|
|
3 00B6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Eh n=n+1
|
|
1 vector \n
|
|
1 00B8h .=4*56 ; vector #56
|
|
2 00B8h 0384h .word isr56 ; new PC of ISR
|
|
3 00BAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 002Fh n=n+1
|
|
1 vector \n
|
|
1 00BCh .=4*57 ; vector #57
|
|
2 00BCh 0392h .word isr57 ; new PC of ISR
|
|
3 00BEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0030h n=n+1
|
|
1 vector \n
|
|
1 00C0h .=4*60 ; vector #60
|
|
2 00C0h 03A0h .word isr60 ; new PC of ISR
|
|
3 00C2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0031h n=n+1
|
|
1 vector \n
|
|
1 00C4h .=4*61 ; vector #61
|
|
2 00C4h 03AEh .word isr61 ; new PC of ISR
|
|
3 00C6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0032h n=n+1
|
|
1 vector \n
|
|
1 00C8h .=4*62 ; vector #62
|
|
2 00C8h 03BCh .word isr62 ; new PC of ISR
|
|
3 00CAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0033h n=n+1
|
|
1 vector \n
|
|
1 00CCh .=4*63 ; vector #63
|
|
2 00CCh 03CAh .word isr63 ; new PC of ISR
|
|
3 00CEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0034h n=n+1
|
|
1 vector \n
|
|
1 00D0h .=4*64 ; vector #64
|
|
2 00D0h 03D8h .word isr64 ; new PC of ISR
|
|
3 00D2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0035h n=n+1
|
|
1 vector \n
|
|
1 00D4h .=4*65 ; vector #65
|
|
2 00D4h 03E6h .word isr65 ; new PC of ISR
|
|
3 00D6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0036h n=n+1
|
|
1 vector \n
|
|
1 00D8h .=4*66 ; vector #66
|
|
2 00D8h 03F4h .word isr66 ; new PC of ISR
|
|
3 00DAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0037h n=n+1
|
|
1 vector \n
|
|
1 00DCh .=4*67 ; vector #67
|
|
2 00DCh 0402h .word isr67 ; new PC of ISR
|
|
3 00DEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0038h n=n+1
|
|
1 vector \n
|
|
1 00E0h .=4*70 ; vector #70
|
|
2 00E0h 0410h .word isr70 ; new PC of ISR
|
|
3 00E2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0039h n=n+1
|
|
1 vector \n
|
|
1 00E4h .=4*71 ; vector #71
|
|
2 00E4h 041Eh .word isr71 ; new PC of ISR
|
|
3 00E6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Ah n=n+1
|
|
1 vector \n
|
|
1 00E8h .=4*72 ; vector #72
|
|
2 00E8h 042Ch .word isr72 ; new PC of ISR
|
|
3 00EAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Bh n=n+1
|
|
1 vector \n
|
|
1 00ECh .=4*73 ; vector #73
|
|
2 00ECh 043Ah .word isr73 ; new PC of ISR
|
|
3 00EEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Ch n=n+1
|
|
1 vector \n
|
|
1 00F0h .=4*74 ; vector #74
|
|
2 00F0h 0448h .word isr74 ; new PC of ISR
|
|
3 00F2h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Dh n=n+1
|
|
1 vector \n
|
|
1 00F4h .=4*75 ; vector #75
|
|
2 00F4h 0456h .word isr75 ; new PC of ISR
|
|
3 00F6h 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Eh n=n+1
|
|
1 vector \n
|
|
1 00F8h .=4*76 ; vector #76
|
|
2 00F8h 0464h .word isr76 ; new PC of ISR
|
|
3 00FAh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 003Fh n=n+1
|
|
1 vector \n
|
|
1 00FCh .=4*77 ; vector #77
|
|
2 00FCh 0472h .word isr77 ; new PC of ISR
|
|
3 00FEh 00E0h .word 340 ; new PSW: priority is max = 7
|
|
2 0040h n=n+1
|
|
54
|
|
55 ; ---- veccnt ISRs ---------
|
|
56 0000h n=0
|
|
57 .rept veccnt
|
|
58 isr \n
|
|
59 n=n+1
|
|
60 .endr
|
|
1 isr \n
|
|
1 isr0:
|
|
2 0100h 1026h mov r0,-(sp)
|
|
3 0102h 15C0h 0000h mov #0*4,r0 ; vector in r0
|
|
4 0106h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 010Ah 1580h mov (sp)+,r0
|
|
6 010Ch 0002h rti
|
|
2 0001h n=n+1
|
|
1 isr \n
|
|
1 isr1:
|
|
2 010Eh 1026h mov r0,-(sp)
|
|
3 0110h 15C0h 0004h mov #1*4,r0 ; vector in r0
|
|
4 0114h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0118h 1580h mov (sp)+,r0
|
|
6 011Ah 0002h rti
|
|
2 0002h n=n+1
|
|
1 isr \n
|
|
1 isr2:
|
|
2 011Ch 1026h mov r0,-(sp)
|
|
3 011Eh 15C0h 0008h mov #2*4,r0 ; vector in r0
|
|
4 0122h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0126h 1580h mov (sp)+,r0
|
|
6 0128h 0002h rti
|
|
2 0003h n=n+1
|
|
1 isr \n
|
|
1 isr3:
|
|
2 012Ah 1026h mov r0,-(sp)
|
|
3 012Ch 15C0h 000Ch mov #3*4,r0 ; vector in r0
|
|
4 0130h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0134h 1580h mov (sp)+,r0
|
|
6 0136h 0002h rti
|
|
2 0004h n=n+1
|
|
1 isr \n
|
|
1 isr4:
|
|
2 0138h 1026h mov r0,-(sp)
|
|
3 013Ah 15C0h 0010h mov #4*4,r0 ; vector in r0
|
|
4 013Eh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0142h 1580h mov (sp)+,r0
|
|
6 0144h 0002h rti
|
|
2 0005h n=n+1
|
|
1 isr \n
|
|
1 isr5:
|
|
2 0146h 1026h mov r0,-(sp)
|
|
3 0148h 15C0h 0014h mov #5*4,r0 ; vector in r0
|
|
4 014Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0150h 1580h mov (sp)+,r0
|
|
6 0152h 0002h rti
|
|
2 0006h n=n+1
|
|
1 isr \n
|
|
1 isr6:
|
|
2 0154h 1026h mov r0,-(sp)
|
|
3 0156h 15C0h 0018h mov #6*4,r0 ; vector in r0
|
|
4 015Ah 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 015Eh 1580h mov (sp)+,r0
|
|
6 0160h 0002h rti
|
|
2 0007h n=n+1
|
|
1 isr \n
|
|
1 isr7:
|
|
2 0162h 1026h mov r0,-(sp)
|
|
3 0164h 15C0h 001Ch mov #7*4,r0 ; vector in r0
|
|
4 0168h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 016Ch 1580h mov (sp)+,r0
|
|
6 016Eh 0002h rti
|
|
2 0008h n=n+1
|
|
1 isr \n
|
|
1 isr10:
|
|
2 0170h 1026h mov r0,-(sp)
|
|
3 0172h 15C0h 0020h mov #10*4,r0 ; vector in r0
|
|
4 0176h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 017Ah 1580h mov (sp)+,r0
|
|
6 017Ch 0002h rti
|
|
2 0009h n=n+1
|
|
1 isr \n
|
|
1 isr11:
|
|
2 017Eh 1026h mov r0,-(sp)
|
|
3 0180h 15C0h 0024h mov #11*4,r0 ; vector in r0
|
|
4 0184h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0188h 1580h mov (sp)+,r0
|
|
6 018Ah 0002h rti
|
|
2 000Ah n=n+1
|
|
1 isr \n
|
|
1 isr12:
|
|
2 018Ch 1026h mov r0,-(sp)
|
|
3 018Eh 15C0h 0028h mov #12*4,r0 ; vector in r0
|
|
4 0192h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0196h 1580h mov (sp)+,r0
|
|
6 0198h 0002h rti
|
|
2 000Bh n=n+1
|
|
1 isr \n
|
|
1 isr13:
|
|
2 019Ah 1026h mov r0,-(sp)
|
|
3 019Ch 15C0h 002Ch mov #13*4,r0 ; vector in r0
|
|
4 01A0h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01A4h 1580h mov (sp)+,r0
|
|
6 01A6h 0002h rti
|
|
2 000Ch n=n+1
|
|
1 isr \n
|
|
1 isr14:
|
|
2 01A8h 1026h mov r0,-(sp)
|
|
3 01AAh 15C0h 0030h mov #14*4,r0 ; vector in r0
|
|
4 01AEh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01B2h 1580h mov (sp)+,r0
|
|
6 01B4h 0002h rti
|
|
2 000Dh n=n+1
|
|
1 isr \n
|
|
1 isr15:
|
|
2 01B6h 1026h mov r0,-(sp)
|
|
3 01B8h 15C0h 0034h mov #15*4,r0 ; vector in r0
|
|
4 01BCh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01C0h 1580h mov (sp)+,r0
|
|
6 01C2h 0002h rti
|
|
2 000Eh n=n+1
|
|
1 isr \n
|
|
1 isr16:
|
|
2 01C4h 1026h mov r0,-(sp)
|
|
3 01C6h 15C0h 0038h mov #16*4,r0 ; vector in r0
|
|
4 01CAh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01CEh 1580h mov (sp)+,r0
|
|
6 01D0h 0002h rti
|
|
2 000Fh n=n+1
|
|
1 isr \n
|
|
1 isr17:
|
|
2 01D2h 1026h mov r0,-(sp)
|
|
3 01D4h 15C0h 003Ch mov #17*4,r0 ; vector in r0
|
|
4 01D8h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01DCh 1580h mov (sp)+,r0
|
|
6 01DEh 0002h rti
|
|
2 0010h n=n+1
|
|
1 isr \n
|
|
1 isr20:
|
|
2 01E0h 1026h mov r0,-(sp)
|
|
3 01E2h 15C0h 0040h mov #20*4,r0 ; vector in r0
|
|
4 01E6h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01EAh 1580h mov (sp)+,r0
|
|
6 01ECh 0002h rti
|
|
2 0011h n=n+1
|
|
1 isr \n
|
|
1 isr21:
|
|
2 01EEh 1026h mov r0,-(sp)
|
|
3 01F0h 15C0h 0044h mov #21*4,r0 ; vector in r0
|
|
4 01F4h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 01F8h 1580h mov (sp)+,r0
|
|
6 01FAh 0002h rti
|
|
2 0012h n=n+1
|
|
1 isr \n
|
|
1 isr22:
|
|
2 01FCh 1026h mov r0,-(sp)
|
|
3 01FEh 15C0h 0048h mov #22*4,r0 ; vector in r0
|
|
4 0202h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0206h 1580h mov (sp)+,r0
|
|
6 0208h 0002h rti
|
|
2 0013h n=n+1
|
|
1 isr \n
|
|
1 isr23:
|
|
2 020Ah 1026h mov r0,-(sp)
|
|
3 020Ch 15C0h 004Ch mov #23*4,r0 ; vector in r0
|
|
4 0210h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0214h 1580h mov (sp)+,r0
|
|
6 0216h 0002h rti
|
|
2 0014h n=n+1
|
|
1 isr \n
|
|
1 isr24:
|
|
2 0218h 1026h mov r0,-(sp)
|
|
3 021Ah 15C0h 0050h mov #24*4,r0 ; vector in r0
|
|
4 021Eh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0222h 1580h mov (sp)+,r0
|
|
6 0224h 0002h rti
|
|
2 0015h n=n+1
|
|
1 isr \n
|
|
1 isr25:
|
|
2 0226h 1026h mov r0,-(sp)
|
|
3 0228h 15C0h 0054h mov #25*4,r0 ; vector in r0
|
|
4 022Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0230h 1580h mov (sp)+,r0
|
|
6 0232h 0002h rti
|
|
2 0016h n=n+1
|
|
1 isr \n
|
|
1 isr26:
|
|
2 0234h 1026h mov r0,-(sp)
|
|
3 0236h 15C0h 0058h mov #26*4,r0 ; vector in r0
|
|
4 023Ah 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 023Eh 1580h mov (sp)+,r0
|
|
6 0240h 0002h rti
|
|
2 0017h n=n+1
|
|
1 isr \n
|
|
1 isr27:
|
|
2 0242h 1026h mov r0,-(sp)
|
|
3 0244h 15C0h 005Ch mov #27*4,r0 ; vector in r0
|
|
4 0248h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 024Ch 1580h mov (sp)+,r0
|
|
6 024Eh 0002h rti
|
|
2 0018h n=n+1
|
|
1 isr \n
|
|
1 isr30:
|
|
2 0250h 1026h mov r0,-(sp)
|
|
3 0252h 15C0h 0060h mov #30*4,r0 ; vector in r0
|
|
4 0256h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 025Ah 1580h mov (sp)+,r0
|
|
6 025Ch 0002h rti
|
|
2 0019h n=n+1
|
|
1 isr \n
|
|
1 isr31:
|
|
2 025Eh 1026h mov r0,-(sp)
|
|
3 0260h 15C0h 0064h mov #31*4,r0 ; vector in r0
|
|
4 0264h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0268h 1580h mov (sp)+,r0
|
|
6 026Ah 0002h rti
|
|
2 001Ah n=n+1
|
|
1 isr \n
|
|
1 isr32:
|
|
2 026Ch 1026h mov r0,-(sp)
|
|
3 026Eh 15C0h 0068h mov #32*4,r0 ; vector in r0
|
|
4 0272h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0276h 1580h mov (sp)+,r0
|
|
6 0278h 0002h rti
|
|
2 001Bh n=n+1
|
|
1 isr \n
|
|
1 isr33:
|
|
2 027Ah 1026h mov r0,-(sp)
|
|
3 027Ch 15C0h 006Ch mov #33*4,r0 ; vector in r0
|
|
4 0280h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0284h 1580h mov (sp)+,r0
|
|
6 0286h 0002h rti
|
|
2 001Ch n=n+1
|
|
1 isr \n
|
|
1 isr34:
|
|
2 0288h 1026h mov r0,-(sp)
|
|
3 028Ah 15C0h 0070h mov #34*4,r0 ; vector in r0
|
|
4 028Eh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0292h 1580h mov (sp)+,r0
|
|
6 0294h 0002h rti
|
|
2 001Dh n=n+1
|
|
1 isr \n
|
|
1 isr35:
|
|
2 0296h 1026h mov r0,-(sp)
|
|
3 0298h 15C0h 0074h mov #35*4,r0 ; vector in r0
|
|
4 029Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02A0h 1580h mov (sp)+,r0
|
|
6 02A2h 0002h rti
|
|
2 001Eh n=n+1
|
|
1 isr \n
|
|
1 isr36:
|
|
2 02A4h 1026h mov r0,-(sp)
|
|
3 02A6h 15C0h 0078h mov #36*4,r0 ; vector in r0
|
|
4 02AAh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02AEh 1580h mov (sp)+,r0
|
|
6 02B0h 0002h rti
|
|
2 001Fh n=n+1
|
|
1 isr \n
|
|
1 isr37:
|
|
2 02B2h 1026h mov r0,-(sp)
|
|
3 02B4h 15C0h 007Ch mov #37*4,r0 ; vector in r0
|
|
4 02B8h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02BCh 1580h mov (sp)+,r0
|
|
6 02BEh 0002h rti
|
|
2 0020h n=n+1
|
|
1 isr \n
|
|
1 isr40:
|
|
2 02C0h 1026h mov r0,-(sp)
|
|
3 02C2h 15C0h 0080h mov #40*4,r0 ; vector in r0
|
|
4 02C6h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02CAh 1580h mov (sp)+,r0
|
|
6 02CCh 0002h rti
|
|
2 0021h n=n+1
|
|
1 isr \n
|
|
1 isr41:
|
|
2 02CEh 1026h mov r0,-(sp)
|
|
3 02D0h 15C0h 0084h mov #41*4,r0 ; vector in r0
|
|
4 02D4h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02D8h 1580h mov (sp)+,r0
|
|
6 02DAh 0002h rti
|
|
2 0022h n=n+1
|
|
1 isr \n
|
|
1 isr42:
|
|
2 02DCh 1026h mov r0,-(sp)
|
|
3 02DEh 15C0h 0088h mov #42*4,r0 ; vector in r0
|
|
4 02E2h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02E6h 1580h mov (sp)+,r0
|
|
6 02E8h 0002h rti
|
|
2 0023h n=n+1
|
|
1 isr \n
|
|
1 isr43:
|
|
2 02EAh 1026h mov r0,-(sp)
|
|
3 02ECh 15C0h 008Ch mov #43*4,r0 ; vector in r0
|
|
4 02F0h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 02F4h 1580h mov (sp)+,r0
|
|
6 02F6h 0002h rti
|
|
2 0024h n=n+1
|
|
1 isr \n
|
|
1 isr44:
|
|
2 02F8h 1026h mov r0,-(sp)
|
|
3 02FAh 15C0h 0090h mov #44*4,r0 ; vector in r0
|
|
4 02FEh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0302h 1580h mov (sp)+,r0
|
|
6 0304h 0002h rti
|
|
2 0025h n=n+1
|
|
1 isr \n
|
|
1 isr45:
|
|
2 0306h 1026h mov r0,-(sp)
|
|
3 0308h 15C0h 0094h mov #45*4,r0 ; vector in r0
|
|
4 030Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0310h 1580h mov (sp)+,r0
|
|
6 0312h 0002h rti
|
|
2 0026h n=n+1
|
|
1 isr \n
|
|
1 isr46:
|
|
2 0314h 1026h mov r0,-(sp)
|
|
3 0316h 15C0h 0098h mov #46*4,r0 ; vector in r0
|
|
4 031Ah 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 031Eh 1580h mov (sp)+,r0
|
|
6 0320h 0002h rti
|
|
2 0027h n=n+1
|
|
1 isr \n
|
|
1 isr47:
|
|
2 0322h 1026h mov r0,-(sp)
|
|
3 0324h 15C0h 009Ch mov #47*4,r0 ; vector in r0
|
|
4 0328h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 032Ch 1580h mov (sp)+,r0
|
|
6 032Eh 0002h rti
|
|
2 0028h n=n+1
|
|
1 isr \n
|
|
1 isr50:
|
|
2 0330h 1026h mov r0,-(sp)
|
|
3 0332h 15C0h 00A0h mov #50*4,r0 ; vector in r0
|
|
4 0336h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 033Ah 1580h mov (sp)+,r0
|
|
6 033Ch 0002h rti
|
|
2 0029h n=n+1
|
|
1 isr \n
|
|
1 isr51:
|
|
2 033Eh 1026h mov r0,-(sp)
|
|
3 0340h 15C0h 00A4h mov #51*4,r0 ; vector in r0
|
|
4 0344h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0348h 1580h mov (sp)+,r0
|
|
6 034Ah 0002h rti
|
|
2 002Ah n=n+1
|
|
1 isr \n
|
|
1 isr52:
|
|
2 034Ch 1026h mov r0,-(sp)
|
|
3 034Eh 15C0h 00A8h mov #52*4,r0 ; vector in r0
|
|
4 0352h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0356h 1580h mov (sp)+,r0
|
|
6 0358h 0002h rti
|
|
2 002Bh n=n+1
|
|
1 isr \n
|
|
1 isr53:
|
|
2 035Ah 1026h mov r0,-(sp)
|
|
3 035Ch 15C0h 00ACh mov #53*4,r0 ; vector in r0
|
|
4 0360h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0364h 1580h mov (sp)+,r0
|
|
6 0366h 0002h rti
|
|
2 002Ch n=n+1
|
|
1 isr \n
|
|
1 isr54:
|
|
2 0368h 1026h mov r0,-(sp)
|
|
3 036Ah 15C0h 00B0h mov #54*4,r0 ; vector in r0
|
|
4 036Eh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0372h 1580h mov (sp)+,r0
|
|
6 0374h 0002h rti
|
|
2 002Dh n=n+1
|
|
1 isr \n
|
|
1 isr55:
|
|
2 0376h 1026h mov r0,-(sp)
|
|
3 0378h 15C0h 00B4h mov #55*4,r0 ; vector in r0
|
|
4 037Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0380h 1580h mov (sp)+,r0
|
|
6 0382h 0002h rti
|
|
2 002Eh n=n+1
|
|
1 isr \n
|
|
1 isr56:
|
|
2 0384h 1026h mov r0,-(sp)
|
|
3 0386h 15C0h 00B8h mov #56*4,r0 ; vector in r0
|
|
4 038Ah 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 038Eh 1580h mov (sp)+,r0
|
|
6 0390h 0002h rti
|
|
2 002Fh n=n+1
|
|
1 isr \n
|
|
1 isr57:
|
|
2 0392h 1026h mov r0,-(sp)
|
|
3 0394h 15C0h 00BCh mov #57*4,r0 ; vector in r0
|
|
4 0398h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 039Ch 1580h mov (sp)+,r0
|
|
6 039Eh 0002h rti
|
|
2 0030h n=n+1
|
|
1 isr \n
|
|
1 isr60:
|
|
2 03A0h 1026h mov r0,-(sp)
|
|
3 03A2h 15C0h 00C0h mov #60*4,r0 ; vector in r0
|
|
4 03A6h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03AAh 1580h mov (sp)+,r0
|
|
6 03ACh 0002h rti
|
|
2 0031h n=n+1
|
|
1 isr \n
|
|
1 isr61:
|
|
2 03AEh 1026h mov r0,-(sp)
|
|
3 03B0h 15C0h 00C4h mov #61*4,r0 ; vector in r0
|
|
4 03B4h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03B8h 1580h mov (sp)+,r0
|
|
6 03BAh 0002h rti
|
|
2 0032h n=n+1
|
|
1 isr \n
|
|
1 isr62:
|
|
2 03BCh 1026h mov r0,-(sp)
|
|
3 03BEh 15C0h 00C8h mov #62*4,r0 ; vector in r0
|
|
4 03C2h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03C6h 1580h mov (sp)+,r0
|
|
6 03C8h 0002h rti
|
|
2 0033h n=n+1
|
|
1 isr \n
|
|
1 isr63:
|
|
2 03CAh 1026h mov r0,-(sp)
|
|
3 03CCh 15C0h 00CCh mov #63*4,r0 ; vector in r0
|
|
4 03D0h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03D4h 1580h mov (sp)+,r0
|
|
6 03D6h 0002h rti
|
|
2 0034h n=n+1
|
|
1 isr \n
|
|
1 isr64:
|
|
2 03D8h 1026h mov r0,-(sp)
|
|
3 03DAh 15C0h 00D0h mov #64*4,r0 ; vector in r0
|
|
4 03DEh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03E2h 1580h mov (sp)+,r0
|
|
6 03E4h 0002h rti
|
|
2 0035h n=n+1
|
|
1 isr \n
|
|
1 isr65:
|
|
2 03E6h 1026h mov r0,-(sp)
|
|
3 03E8h 15C0h 00D4h mov #65*4,r0 ; vector in r0
|
|
4 03ECh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03F0h 1580h mov (sp)+,r0
|
|
6 03F2h 0002h rti
|
|
2 0036h n=n+1
|
|
1 isr \n
|
|
1 isr66:
|
|
2 03F4h 1026h mov r0,-(sp)
|
|
3 03F6h 15C0h 00D8h mov #66*4,r0 ; vector in r0
|
|
4 03FAh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 03FEh 1580h mov (sp)+,r0
|
|
6 0400h 0002h rti
|
|
2 0037h n=n+1
|
|
1 isr \n
|
|
1 isr67:
|
|
2 0402h 1026h mov r0,-(sp)
|
|
3 0404h 15C0h 00DCh mov #67*4,r0 ; vector in r0
|
|
4 0408h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 040Ch 1580h mov (sp)+,r0
|
|
6 040Eh 0002h rti
|
|
2 0038h n=n+1
|
|
1 isr \n
|
|
1 isr70:
|
|
2 0410h 1026h mov r0,-(sp)
|
|
3 0412h 15C0h 00E0h mov #70*4,r0 ; vector in r0
|
|
4 0416h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 041Ah 1580h mov (sp)+,r0
|
|
6 041Ch 0002h rti
|
|
2 0039h n=n+1
|
|
1 isr \n
|
|
1 isr71:
|
|
2 041Eh 1026h mov r0,-(sp)
|
|
3 0420h 15C0h 00E4h mov #71*4,r0 ; vector in r0
|
|
4 0424h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0428h 1580h mov (sp)+,r0
|
|
6 042Ah 0002h rti
|
|
2 003Ah n=n+1
|
|
1 isr \n
|
|
1 isr72:
|
|
2 042Ch 1026h mov r0,-(sp)
|
|
3 042Eh 15C0h 00E8h mov #72*4,r0 ; vector in r0
|
|
4 0432h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0436h 1580h mov (sp)+,r0
|
|
6 0438h 0002h rti
|
|
2 003Bh n=n+1
|
|
1 isr \n
|
|
1 isr73:
|
|
2 043Ah 1026h mov r0,-(sp)
|
|
3 043Ch 15C0h 00ECh mov #73*4,r0 ; vector in r0
|
|
4 0440h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0444h 1580h mov (sp)+,r0
|
|
6 0446h 0002h rti
|
|
2 003Ch n=n+1
|
|
1 isr \n
|
|
1 isr74:
|
|
2 0448h 1026h mov r0,-(sp)
|
|
3 044Ah 15C0h 00F0h mov #74*4,r0 ; vector in r0
|
|
4 044Eh 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0452h 1580h mov (sp)+,r0
|
|
6 0454h 0002h rti
|
|
2 003Dh n=n+1
|
|
1 isr \n
|
|
1 isr75:
|
|
2 0456h 1026h mov r0,-(sp)
|
|
3 0458h 15C0h 00F4h mov #75*4,r0 ; vector in r0
|
|
4 045Ch 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 0460h 1580h mov (sp)+,r0
|
|
6 0462h 0002h rti
|
|
2 003Eh n=n+1
|
|
1 isr \n
|
|
1 isr76:
|
|
2 0464h 1026h mov r0,-(sp)
|
|
3 0466h 15C0h 00F8h mov #76*4,r0 ; vector in r0
|
|
4 046Ah 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 046Eh 1580h mov (sp)+,r0
|
|
6 0470h 0002h rti
|
|
2 003Fh n=n+1
|
|
1 isr \n
|
|
1 isr77:
|
|
2 0472h 1026h mov r0,-(sp)
|
|
3 0474h 15C0h 00FCh mov #77*4,r0 ; vector in r0
|
|
4 0478h 09DFh 106Ah call @#doisr ; print message for vector in r0
|
|
5 047Ch 1580h mov (sp)+,r0
|
|
6 047Eh 0002h rti
|
|
2 0040h n=n+1
|
|
61
|
|
62
|
|
63
|
|
64
|
|
65 ; ---- foreground thread ---------
|
|
66 1000h .=10000
|
|
67
|
|
68 0FFEh stack = . - 2 ; stack growns down from start
|
|
69
|
|
70 start:
|
|
71 1000h 15C6h 0FFEh mov #stack,sp ; init stack
|
|
72 1004h 0A1Fh FFFEh clr @#psw ; clear priority, allow all interupts
|
|
73
|
|
74 ; 1. print "Hello" msg
|
|
75 1008h 15C1h 1104h mov #shello,r1
|
|
76 100Ch 09DFh 1096h call @#puts
|
|
77
|
|
78 ; test vecnum printout
|
|
79 ; mov #123456,r0
|
|
80 ; call @#isrmsg
|
|
81
|
|
82 ; 2. echo chars until ^C hit
|
|
83 1$:
|
|
84 1010h 09DFh 10ECh call @#getc ; wait for char, return in r0
|
|
85 1014h 45C0h FF80h bic #177600,r0 ; make 7bit: clear bits <15:7>
|
|
86 1018h A017h 0003h cmpb r0,#3 ; break by ^C ?
|
|
87 101Ch 0320h beq 9$ ; yes: leave loop
|
|
88 101Eh A017h 0030h cmpb r0,#60
|
|
89 1022h 871Ah blo 2$ ; char is < '0'
|
|
90 1024h A017h 0037h cmpb r0,#67
|
|
91 1028h 8217h bhi 2$ ; char is > '7'
|
|
92 102Ah 9002h movb r0,r2 ; save
|
|
93
|
|
94 ; key is 0..7: change priority
|
|
95 102Ch 15C1h 11BCh mov #sprio0,r1 ; print info
|
|
96 1030h 09DFh 1096h call @#puts
|
|
97 1034h 9080h movb r2,r0 ; restore digit
|
|
98 1036h 09DFh 10DCh call @#putc ; print level digit
|
|
99 103Ah 15C1h 11D0h mov #sprio1,r1
|
|
100 103Eh 09DFh 1096h call @#puts
|
|
101 ; change PSW
|
|
102 1042h 9080h movb r2,r0
|
|
103 1044h C5C0h 00F8h bicb #370,r0 ; ASCII -> integer
|
|
104 1048h 0CC0h asl r0 ; move level to "priority" field in PSW
|
|
105 104Ah 0CC0h asl r0 ; in bits 7,6,5
|
|
106 104Ch 0CC0h asl r0
|
|
107 104Eh 0CC0h asl r0
|
|
108 1050h 0CC0h asl r0
|
|
109 1052h 101Fh FFFEh mov r0,@#psw
|
|
110
|
|
111 1056h 01DCh br 1$
|
|
112
|
|
113 2$:
|
|
114 1058h 09DFh 10DCh call @#putc ; no: echo char in r0 and loop
|
|
115 105Ch 01D9h br 1$
|
|
116
|
|
117 9$:
|
|
118
|
|
119 ; 3. print "Bye bye" msg and HALT
|
|
120 105Eh 15C1h 11D3h mov #sbye,r1
|
|
121 1062h 09DFh 1096h call @#puts
|
|
122 1066h 0000h halt
|
|
123
|
|
124 ; 4. loop on CONT
|
|
125 1068h 01CBh br start
|
|
126
|
|
127
|
|
128 ; ----------------------
|
|
129 ; Common code for all ISRs
|
|
130 ; print vector number in r0
|
|
131 ; called on interrupt level
|
|
132
|
|
133 doisr:
|
|
134 106Ah 1126h mov r4,-(sp)
|
|
135 106Ch 10E6h mov r3,-(sp)
|
|
136 106Eh 10A6h mov r2,-(sp)
|
|
137 1070h 1066h mov r1,-(sp)
|
|
138 1072h 1026h mov r0,-(sp)
|
|
139
|
|
140 ; print msg
|
|
141 1074h 15C1h 10FAh mov #sisr1,r1 ; "ISR "
|
|
142 1078h 09DFh 1096h call @#puts
|
|
143 107Ch 1380h mov (sp),r0 ; restore vecnum
|
|
144 107Eh 09DFh 10B2h call @#putnum
|
|
145 1082h 15C1h 1100h mov #sisr2,r1 ; "cr lf
|
|
146 1086h 09DFh 1096h call @#puts
|
|
147
|
|
148 108Ah 1580h mov (sp)+,r0
|
|
149 108Ch 1581h mov (sp)+,r1
|
|
150 108Eh 1582h mov (sp)+,r2
|
|
151 1090h 1583h mov (sp)+,r3
|
|
152 1092h 1584h mov (sp)+,r4
|
|
153 1094h 0087h return
|
|
154
|
|
155
|
|
156 ; ----------------------
|
|
157 ; puts - print a string
|
|
158 ; r1 = pointer, r0,r1 changed
|
|
159 puts:
|
|
160 1096h 9440h movb (r1)+,r0 ; load xmt char
|
|
161 1098h 0303h beq 1$ ; string ends with 0
|
|
162 109Ah 09DFh 10DCh call @#putc
|
|
163 109Eh 01FBh br puts ; transmit nxt char of string
|
|
164 10A0h 0087h 1$: return
|
|
165
|
|
166
|
|
167 ; ----------------------
|
|
168 ; putnum - print the octal number in r0
|
|
169 10A2h numbf0: .blkw 10 ; space to mount number string
|
|
170 10B2h numbf1 =.
|
|
171 putnum:
|
|
172 10B2h 1002h mov r0,r2 ; r2 = shifter
|
|
173 10B4h 15C1h 10B2h mov #numbf1,r1 ; r1 = buffer pointer, backwards
|
|
174 10B8h 95E1h 0000h movb #0,-(r1) ; set terminating 0
|
|
175 ; repeat 6 times
|
|
176 10BCh 15C3h 0006h mov #6,r3
|
|
177 1$:
|
|
178 10C0h 1080h mov r2,r0
|
|
179 ; extract lower 3 bits = octal digit
|
|
180 10C2h 45C0h FFF8h bic #177770,r0 ; r0 &= 0x07
|
|
181 10C6h 65C0h 0030h add #60,r0 ; r0 += '0'
|
|
182 10CAh 9021h movb r0,-(r1) ; write in buffer
|
|
183 10CCh 00A1h clc
|
|
184 10CEh 0C02h ror r2 ; shift to next digit
|
|
185 10D0h 0C02h ror r2
|
|
186 10D2h 0C02h ror r2
|
|
187 10D4h 7ECBh sob r3,1$ ; loop for all 6 digits
|
|
188
|
|
189 10D6h 09DFh 1096h call @#puts
|
|
190 10DAh 0087h return
|
|
191
|
|
192
|
|
193 ; DEC DL11 console I/O
|
|
194 ; ----------------------
|
|
195 ; putc - output a single char
|
|
196 ; r0 = char, r4 changed
|
|
197 putc:
|
|
198 10DCh 15C4h FF70h mov #dladr,r4 ; set base addr
|
|
199 10E0h 9034h 0006h movb r0,6(r4) ; char into transmit buffer
|
|
200 10E4h 8BF4h 0004h 1$: tstb 4(r4) ; XMT RDY?
|
|
201 10E8h 80FDh bpl 1$ ; no, loop
|
|
202 10EAh 0087h return
|
|
203
|
|
204 ; ----------------------
|
|
205 ; getc - input a single char
|
|
206 ; result in r0, r4 changed
|
|
207 getc:
|
|
208 10ECh 15C4h FF70h mov #dladr,r4 ; set base addr
|
|
209 10F0h 8BCCh 1$: tstb (r4) ; RCVR DONE?
|
|
210 10F2h 80FEh bpl 1$ ; no, loop
|
|
211 10F4h 1D00h 0002h mov 2(r4),r0 ; return data
|
|
212 10F8h 0087h return
|
|
213
|
|
214
|
|
215 ; ---- Test strings, each 256 chars max ---------
|
|
216
|
|
217 sisr1: ; start of ISR <vecnum> message
|
|
218 10FAh 3Ch 49h 53h .ascii /<ISR /
|
|
10FDh 52h 20h
|
|
219 10FFh 00h .byte 0 ; NUL=end marker
|
|
220 sisr2: ; end of ISR <vecnum> message
|
|
221 1100h 3Eh .ascii />/
|
|
222 1101h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
223 1103h 00h .byte 0 ; NUL=end marker
|
|
224
|
|
225
|
|
226 shello:
|
|
227 1104h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
228 1106h 2Ah 2Ah 2Ah .ascii /*** Interrupt and DMA test ***/
|
|
1109h 20h 49h 6Eh
|
|
110Ch 74h 65h 72h
|
|
110Fh 72h 75h 70h
|
|
1112h 74h 20h 61h
|
|
1115h 6Eh 64h 20h
|
|
1118h 44h 4Dh 41h
|
|
111Bh 20h 74h 65h
|
|
111Eh 73h 74h 20h
|
|
1121h 2Ah 2Ah 2Ah
|
|
229 1124h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
230 1126h 54h 68h 65h .ascii /The INTR vectors 0..77 print the vector num./
|
|
1129h 20h 49h 4Eh
|
|
112Ch 54h 52h 20h
|
|
112Fh 76h 65h 63h
|
|
1132h 74h 6Fh 72h
|
|
1135h 73h 20h 30h
|
|
1138h 2Eh 2Eh 37h
|
|
113Bh 37h 20h 70h
|
|
113Eh 72h 69h 6Eh
|
|
1141h 74h 20h 74h
|
|
1144h 68h 65h 20h
|
|
1147h 76h 65h 63h
|
|
114Ah 74h 6Fh 72h
|
|
114Dh 20h 6Eh 75h
|
|
1150h 6Dh 2Eh
|
|
231 1152h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
232 1154h 54h 68h 65h .ascii /The foreground thread echoes typed chars, ^C HALTs./
|
|
1157h 20h 66h 6Fh
|
|
115Ah 72h 65h 67h
|
|
115Dh 72h 6Fh 75h
|
|
1160h 6Eh 64h 20h
|
|
1163h 74h 68h 72h
|
|
1166h 65h 61h 64h
|
|
1169h 20h 65h 63h
|
|
116Ch 68h 6Fh 65h
|
|
116Fh 73h 20h 74h
|
|
1172h 79h 70h 65h
|
|
1175h 64h 20h 63h
|
|
1178h 68h 61h 72h
|
|
117Bh 73h 2Ch 20h
|
|
117Eh 5Eh 43h 20h
|
|
1181h 48h 41h 4Ch
|
|
1184h 54h 73h 2Eh
|
|
233 1187h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
234 1189h 43h 68h 61h .ascii /Chars 0..7 set the new processor priority level./
|
|
118Ch 72h 73h 20h
|
|
118Fh 30h 2Eh 2Eh
|
|
1192h 37h 20h 73h
|
|
1195h 65h 74h 20h
|
|
1198h 74h 68h 65h
|
|
119Bh 20h 6Eh 65h
|
|
119Eh 77h 20h 70h
|
|
11A1h 72h 6Fh 63h
|
|
11A4h 65h 73h 73h
|
|
11A7h 6Fh 72h 20h
|
|
11AAh 70h 72h 69h
|
|
11ADh 6Fh 72h 69h
|
|
11B0h 74h 79h 20h
|
|
11B3h 6Ch 65h 76h
|
|
11B6h 65h 6Ch 2Eh
|
|
235 11B9h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
236 11BBh 00h .byte 0 ; NUL=end marker
|
|
237
|
|
238 sprio0:
|
|
239 11BCh 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
240 11BEh 43h 50h 55h .ascii /CPU priority now /
|
|
11C1h 20h 70h 72h
|
|
11C4h 69h 6Fh 72h
|
|
11C7h 69h 74h 79h
|
|
11CAh 20h 6Eh 6Fh
|
|
11CDh 77h 20h
|
|
241 11CFh 00h .byte 0
|
|
242
|
|
243 sprio1:
|
|
244 11D0h 0Dh 0Ah .byte 15,12 ; CR, LF,
|
|
245 11D2h 00h .byte 0 ; NUL=end marker
|
|
246
|
|
247 sbye:
|
|
248 11D3h 0Dh 0Ah .byte 15,12
|
|
249 11D5h 47h 6Fh 6Fh .ascii /Good Bye!/
|
|
11D8h 64h 20h 42h
|
|
11DBh 79h 65h 21h
|
|
250 11DEh 0Dh 0Ah 00h .byte 15,12,0 ; CR, LF, NUL=end marker
|
|
251
|
|
252
|
|
253 .end
|
|
253
|