1
0
mirror of https://github.com/livingcomputermuseum/UniBone.git synced 2026-04-25 19:51:51 +00:00
Files
livingcomputermuseum.UniBone/10.01_base/3_test/intrtst.lst.hex
Joerg Hoppe 974aeed8eb Big summer rework:
Interrupt and DMA system now handles multiple levels and multiple devices in parallel
Interrupt Register changes synced with INTR transaction
DL11 and KW11 clock pass the ZDLDI0 diagnostic.
Devices can now be enabled and disabled individually.
2019-08-02 16:45:54 +02:00

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 FF70h dladr = 177560 ; DL11 console base address
26 FFFEh psw = 177776 ; processor status
27
28
29 ; count of automatically generated interrupt vectors
30 0040h 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 0000h . = 0
55 ; ---- "veccnt" Interrupt Vectors ---------
56 0000h n=0
57 .rept veccnt
58 vector \n
59 n=n+1
60 .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
61
62 ; ---- veccnt ISRs ---------
63 0000h n=0
64 .rept veccnt
65 isr \n
66 n=n+1
67 .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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh 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 109Eh call @#doisr ; print message for vector in r0
5 047Ch 1580h mov (sp)+,r0
6 047Eh 0002h rti
2 0040h n=n+1
68
69
70
71
72 ; ---- foreground thread ---------
73 0000h .=0
74 0000h 005Fh 1000h jmp @#start ; easier manual start from 0
75
76 0FFEh .=7776
77 0FFEh 0000h inchr: .word ; input alternative to DL11
78
79 1000h .=10000
80
81 0FFEh stack = . - 2 ; stack growns down from start
82
83 start:
84 1000h 15C6h 0FFEh mov #stack,sp ; init stack
85 1004h 0A1Fh FFFEh clr @#psw ; clear priority, allow all interupts
86
87 1008h 0005h reset ; disable INTR on all devices
88
89 100Ah 0A1Fh 1346h clr @#logptr ; default: slow mode
90
91 ; 1. print "Hello" msg
92 100Eh 15C1h 11A0h mov #shello,r1
93 1012h 09DFh 110Ah 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 1016h 09DFh 1170h call @#getc ; wait for char, return in r0
102 101Ah 45C0h FF80h bic #177600,r0 ; make 7bit: clear bits <15:7>
103 101Eh A017h 0003h cmpb r0,#3 ; break by ^C ?
104 1022h 0337h beq 9$ ; yes: leave loop
105 1024h A017h 0030h cmpb r0,#60
106 1028h 871Ah blo 2$ ; char is < '0'
107 102Ah A017h 0037h cmpb r0,#67
108 102Eh 8217h bhi 2$ ; char is > '7'
109 1030h 9002h movb r0,r2 ; save
110
111 ; key is 0..7: change priority
112 1032h 15C1h 131Bh mov #sprio0,r1 ; print info
113 1036h 09DFh 110Ah call @#puts
114 103Ah 9080h movb r2,r0 ; restore digit
115 103Ch 09DFh 1160h call @#putc ; print level digit
116 1040h 15C1h 1335h mov #sprio1,r1
117 1044h 09DFh 110Ah call @#puts
118 ; change PSW
119 1048h 9080h movb r2,r0
120 104Ah C5C0h 00F8h bicb #370,r0 ; ASCII -> integer
121 104Eh 0CC0h asl r0 ; move level to "priority" field in PSW
122 1050h 0CC0h asl r0 ; in bits 7,6,5
123 1052h 0CC0h asl r0
124 1054h 0CC0h asl r0
125 1056h 0CC0h asl r0
126 1058h 101Fh FFFEh mov r0,@#psw
127
128 105Ch 01DCh br 1$ ; OK, next char
129
130 2$: ; -- eval "S", F"
131 105Eh A017h 0053h cmpb r0,#'S
132 1062h 0207h bne 3$
133 1064h 15C1h 12C0h mov #sslwmd,r1 ; "slow mode"
134 1068h 09DFh 110Ah call @#puts
135 106Ch 0A1Fh 1346h clr @#logptr
136 1070h 01D2h br 1$ ; OK, next char
137 1072h A017h 0046h 3$: cmpb r0,#'F
138 1076h 020Ah bne 8$ ;
139 1078h 15C1h 12EFh mov #sfstmd,r1 ; "fast mode"
140 107Ch 09DFh 110Ah call @#puts
141 1080h 09DFh 10E0h call @#prtlog ; print logged vectors, if any
142 1084h 15DFh 1348h 1346h mov #logbuf,@#logptr; pointer to biuffer start
143 108Ah 01C5h br 1$ ; OK, next char
144
145 8$:
146 108Ch 09DFh 1160h call @#putc ; no: echo char in r0 and loop
147 1090h 01C2h br 1$
148
149 9$:
150
151 ; 3. print "Bye bye" msg and HALT
152 1092h 15C1h 1338h mov #sbye,r1
153 1096h 09DFh 110Ah call @#puts
154 109Ah 0000h halt
155
156 ; 4. loop on CONT
157 109Ch 01B1h 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 109Eh 1126h mov r4,-(sp)
167 10A0h 10E6h mov r3,-(sp)
168 10A2h 10A6h mov r2,-(sp)
169 10A4h 1066h mov r1,-(sp)
170 10A6h 1026h mov r0,-(sp)
171
172 10A8h 17C1h 1346h mov @#logptr,r1
173 10ACh 0304h beq 1$
174 ; Fast mode: log vector
175 10AEh 1011h mov r0,(r1)+ ; store vector in array
176 10B0h 105Fh 1346h mov r1,@#logptr ; save updated list pointer
177
178 10B4h 010Fh br 9$
179 1$: ; "Slow mode: print msg
180 10B6h 15C1h 1196h mov #sisr1,r1 ; "ISR "
181 10BAh 09DFh 110Ah call @#puts
182 10BEh 1380h mov (sp),r0 ; restore vecnum
183 10C0h 09DFh 1126h call @#putnum
184 10C4h 15C1h 119Ch mov #sisr2,r1 ; "cr lf
185 10C8h 09DFh 110Ah call @#puts
186 ; make ISR 100ms
187 10CCh 15C0h 0064h mov #144,r0 ; 100
188 10D0h 09DFh 1188h call @#waitms
189
190 9$:
191 10D4h 1580h mov (sp)+,r0
192 10D6h 1581h mov (sp)+,r1
193 10D8h 1582h mov (sp)+,r2
194 10DAh 1583h mov (sp)+,r3
195 10DCh 1584h mov (sp)+,r4
196 10DEh 0087h return
197
198
199 ; ----------------------
200 ; prtlog - print log of isr vectors
201 ; word list from logbuf to logptr
202 prtlog:
203 10E0h 0BDFh 1346h tst @#logptr
204 10E4h 0311h beq 9$ ; ptr 0, slow mode, nothing logged
205 10E6h 15C2h 1348h mov #logbuf,r2
206 1$:
207 10EAh 209Fh 1346h cmp r2,@#logptr
208 10EEh 8608h bhis 8$ ; end of list reached
209 10F0h 1480h mov (r2)+,r0 ; print vector from list
210 10F2h 09DFh 1126h call @#putnum
211 10F6h 15C0h 0020h mov #40,r0 ; print space separator
212 10FAh 09DFh 1160h call @#putc
213 10FEh 01F5h br 1$
214 8$:
215 1100h 15C1h 1343h mov #scrlf,r1 ; CR/LF
216 1104h 09DFh 110Ah call @#puts
217
218 9$:
219 1108h 0087h return
220
221 ; ----------------------
222 ; puts - print a string
223 ; r1 = pointer, r0,r1 changed
224 puts:
225 110Ah 9440h movb (r1)+,r0 ; load xmt char
226 110Ch 0303h beq 1$ ; string ends with 0
227 110Eh 09DFh 1160h call @#putc
228 1112h 01FBh br puts ; transmit nxt char of string
229 1114h 0087h 1$: return
230
231
232 ; ----------------------
233 ; putnum - print the octal number in r0
234 1116h numbf0: .blkw 10 ; space to mount number string
235 1126h numbf1 =.
236 putnum:
237 1126h 1026h mov r0,-(sp)
238 1128h 1066h mov r1,-(sp)
239 112Ah 10A6h mov r2,-(sp)
240 112Ch 10E6h mov r3,-(sp)
241 112Eh 1002h mov r0,r2 ; r2 = shifter
242 1130h 15C1h 1126h mov #numbf1,r1 ; r1 = buffer pointer, backwards
243 1134h 95E1h 0000h movb #0,-(r1) ; set terminating 0
244 ; repeat 6 times
245 1138h 15C3h 0006h mov #6,r3
246 1$:
247 113Ch 1080h mov r2,r0
248 ; extract lower 3 bits = octal digit
249 113Eh 45C0h FFF8h bic #177770,r0 ; r0 &= 0x07
250 1142h 65C0h 0030h add #60,r0 ; r0 += '0'
251 1146h 9021h movb r0,-(r1) ; write in buffer
252 1148h 00A1h clc
253 114Ah 0C82h asr r2 ; shift to next digit
254 114Ch 0C82h asr r2
255 114Eh 0C82h asr r2
256 1150h 7ECBh sob r3,1$ ; loop for all 6 digits
257
258 1152h 09DFh 110Ah call @#puts
259 1156h 1583h mov (sp)+,r3
260 1158h 1582h mov (sp)+,r2
261 115Ah 1581h mov (sp)+,r1
262 115Ch 1580h mov (sp)+,r0
263 115Eh 0087h return
264
265
266 ; DEC DL11 console I/O
267 ; ----------------------
268 ; putc - output a single char
269 ; r0 = char, r4 changed
270 putc:
271 1160h 15C4h FF70h mov #dladr,r4 ; set base addr
272 1164h 9034h 0006h movb r0,6(r4) ; char into transmit buffer
273 1168h 8BF4h 0004h 1$: tstb 4(r4) ; XMT RDY?
274 116Ch 80FDh bpl 1$ ; no, loop
275 116Eh 0087h return
276
277 ; ----------------------
278 ; getc - input a single char
279 ; result in r0, r4 changed
280 getc:
281 1170h 15C4h FF70h mov #dladr,r4 ; set base addr
282 1174h 17C0h 0FFEh 1$: mov @#inchr,r0 ; external DEPOSIT into inchr?
283 1178h 0204h bne 9$ ; yes: process as input
284 117Ah 8BCCh tstb (r4) ; else: RCVR DONE?
285 117Ch 80FBh bpl 1$ ; no, loop
286 117Eh 1D00h 0002h mov 2(r4),r0 ; return data
287 9$:
288 1182h 0A1Fh 0FFEh clr @#inchr
289 1186h 0087h return
290
291 ; ----------------------
292 ; waitms - wait r0 milli seconds
293 waitms:
294 1188h 1066h mov r1,-(sp)
295
296 1$: ; -- outer loop
297 118Ah 15C1h 01F4h mov #764,r1 ; 500
298 2$: ; -- inner loop: 1ms @ 1MHz
299 118Eh 7E41h sob r1,2$ ; 1 cycle,2 us per loop (11/34)
300
301 1190h 7E04h sob r0,1$
302 1192h 1581h mov (sp)+,r1
303 1194h 0087h return
304
305 ; ---- Test strings, each 256 chars max ---------
306
307 sisr1: ; start of ISR <vecnum> message
308 1196h 3Ch 49h 53h .ascii /<ISR /
1199h 52h 20h
309 119Bh 00h .byte 0 ; NUL=end marker
310 sisr2: ; end of ISR <vecnum> message
311 119Ch 3Eh .ascii />/
312 119Dh 0Dh 0Ah .byte 15,12 ; CR, LF,
313 119Fh 00h .byte 0 ; NUL=end marker
314
315
316 shello:
317 11A0h 0Dh 0Ah .byte 15,12 ; CR, LF,
318 11A2h 2Ah 2Ah 2Ah .ascii /*** Interrupt and DMA test ***/
11A5h 20h 49h 6Eh
11A8h 74h 65h 72h
11ABh 72h 75h 70h
11AEh 74h 20h 61h
11B1h 6Eh 64h 20h
11B4h 44h 4Dh 41h
11B7h 20h 74h 65h
11BAh 73h 74h 20h
11BDh 2Ah 2Ah 2Ah
319 11C0h 0Dh 0Ah .byte 15,12 ; CR, LF,
320 11C2h 54h 68h 65h .ascii /The INTR vectors 0..77 print the vector num./
11C5h 20h 49h 4Eh
11C8h 54h 52h 20h
11CBh 76h 65h 63h
11CEh 74h 6Fh 72h
11D1h 73h 20h 30h
11D4h 2Eh 2Eh 37h
11D7h 37h 20h 70h
11DAh 72h 69h 6Eh
11DDh 74h 20h 74h
11E0h 68h 65h 20h
11E3h 76h 65h 63h
11E6h 74h 6Fh 72h
11E9h 20h 6Eh 75h
11ECh 6Dh 2Eh
321 11EEh 0Dh 0Ah .byte 15,12 ; CR, LF,
322 11F0h 54h 68h 65h .ascii /The foreground thread echoes typed chars, ^C HALTs./
11F3h 20h 66h 6Fh
11F6h 72h 65h 67h
11F9h 72h 6Fh 75h
11FCh 6Eh 64h 20h
11FFh 74h 68h 72h
1202h 65h 61h 64h
1205h 20h 65h 63h
1208h 68h 6Fh 65h
120Bh 73h 20h 74h
120Eh 79h 70h 65h
1211h 64h 20h 63h
1214h 68h 61h 72h
1217h 73h 2Ch 20h
121Ah 5Eh 43h 20h
121Dh 48h 41h 4Ch
1220h 54h 73h 2Eh
323 1223h 0Dh 0Ah .byte 15,12 ; CR, LF,
324 1225h 43h 68h 61h .ascii /Chars 0..7 set the new processor priority level./
1228h 72h 73h 20h
122Bh 30h 2Eh 2Eh
122Eh 37h 20h 73h
1231h 65h 74h 20h
1234h 74h 68h 65h
1237h 20h 6Eh 65h
123Ah 77h 20h 70h
123Dh 72h 6Fh 63h
1240h 65h 73h 73h
1243h 6Fh 72h 20h
1246h 70h 72h 69h
1249h 6Fh 72h 69h
124Ch 74h 79h 20h
124Fh 6Ch 65h 76h
1252h 65h 6Ch 2Eh
325 1255h 0Dh 0Ah .byte 15,12 ; CR, LF,
326 1257h 53h 20h 3Dh .ascii /S = slow mode: ISR prints message (default)/
125Ah 20h 73h 6Ch
125Dh 6Fh 77h 20h
1260h 6Dh 6Fh 64h
1263h 65h 3Ah 20h
1266h 49h 53h 52h
1269h 20h 70h 72h
126Ch 69h 6Eh 74h
126Fh 73h 20h 6Dh
1272h 65h 73h 73h
1275h 61h 67h 65h
1278h 20h 28h 64h
127Bh 65h 66h 61h
127Eh 75h 6Ch 74h
1281h 29h
327 1282h 0Dh 0Ah .byte 15,12 ; CR, LF,
328 1284h 46h 20h 3Dh .ascii /F = fast mode: ISR logs vector, print and clr current log/
1287h 20h 66h 61h
128Ah 73h 74h 20h
128Dh 6Dh 6Fh 64h
1290h 65h 3Ah 20h
1293h 49h 53h 52h
1296h 20h 6Ch 6Fh
1299h 67h 73h 20h
129Ch 76h 65h 63h
129Fh 74h 6Fh 72h
12A2h 2Ch 20h 70h
12A5h 72h 69h 6Eh
12A8h 74h 20h 61h
12ABh 6Eh 64h 20h
12AEh 63h 6Ch 72h
12B1h 20h 63h 75h
12B4h 72h 72h 65h
12B7h 6Eh 74h 20h
12BAh 6Ch 6Fh 67h
329 12BDh 0Dh 0Ah .byte 15,12 ; CR, LF,
330 12BFh 00h .byte 0 ; NUL=end marker
331
332 sslwmd:
333 12C0h 53h 6Ch 6Fh .ascii /Slow mode: called ISR prints vector directly/
12C3h 77h 20h 6Dh
12C6h 6Fh 64h 65h
12C9h 3Ah 20h 63h
12CCh 61h 6Ch 6Ch
12CFh 65h 64h 20h
12D2h 49h 53h 52h
12D5h 20h 70h 72h
12D8h 69h 6Eh 74h
12DBh 73h 20h 76h
12DEh 65h 63h 74h
12E1h 6Fh 72h 20h
12E4h 64h 69h 72h
12E7h 65h 63h 74h
12EAh 6Ch 79h
334 12ECh 0Dh 0Ah .byte 15,12 ; CR, LF,
335 12EEh 00h .byte 0 ; NUL=end marker
336
337 sfstmd:
338 12EFh 46h 61h 73h .ascii /Fast mode: called ISR vectors are logged:/
12F2h 74h 20h 6Dh
12F5h 6Fh 64h 65h
12F8h 3Ah 20h 63h
12FBh 61h 6Ch 6Ch
12FEh 65h 64h 20h
1301h 49h 53h 52h
1304h 20h 76h 65h
1307h 63h 74h 6Fh
130Ah 72h 73h 20h
130Dh 61h 72h 65h
1310h 20h 6Ch 6Fh
1313h 67h 67h 65h
1316h 64h 3Ah
339 1318h 0Dh 0Ah .byte 15,12 ; CR, LF,
340 131Ah 00h .byte 0 ; NUL=end marker
341
342 sprio0:
343 131Bh 0Dh 0Ah .byte 15,12 ; CR, LF,
344 131Dh 43h 50h 55h .ascii /CPU priority level now /
1320h 20h 70h 72h
1323h 69h 6Fh 72h
1326h 69h 74h 79h
1329h 20h 6Ch 65h
132Ch 76h 65h 6Ch
132Fh 20h 6Eh 6Fh
1332h 77h 20h
345 1334h 00h .byte 0
346
347 sprio1:
348 1335h 0Dh 0Ah .byte 15,12 ; CR, LF,
349 1337h 00h .byte 0 ; NUL=end marker
350
351 sbye:
352 1338h 0Dh 0Ah .byte 15,12
353 133Ah 47h 6Fh 6Fh .ascii /Good Bye!/
133Dh 64h 20h 42h
1340h 79h 65h 21h
354 scrlf:
355 1343h 0Dh 0Ah 00h .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 1346h 0000h .word ; addr of next logentry to fill. 0 in "slow" mode
362
363 logbuf:
364
365
366 .end
366