1 ; Test PDP Program for subset assembler 2 ; 3 ; 4 000000 PRINT=9230 ; Should give bad oct. Invalid octal number. 5 002772 INPUT=3772 ; ok 6 7 .start 1000 8 9 move R1, r2 ; move instead of mov Unrecognised opcode. 10 01000 010600 mov sp ,r0 ; spaces 11 01002 010600 mov #go, r4 ; immediate has to be a number Invalid octal number in source. 12 01004 010407 mov r4 , pc ; that's a jump! 13 !Login: mov r0,r0 ; invalid label name Invalid label name. 14 15 .go ; .go instead of go: Unknown pseudo-instruction 16 01006 021314 cmp (r3),(r4) ; mode 1 **Extra** 17 01010 062667 add (sp)+ , ; no 2nd param 176764 Badly formed value in destination. 18 movb (r4,r5) ; no ) before , Missing ) in defered register in source 19 01014 020767 cmp r7,r8 ; reg out of range 000000 Label not defined. 20 add @(r3)+(r5) ; no comma Second parameter missing. 21 01020 010437 mov r4,-r6 ; no ( Missing ( in destination. 22 mov #!5,r4 ; ! instead of 1 Invalid octal number in source. 23 cmp (Q1),r5 ; Bad defered register Defered register unrecognised in source. 24 mov @(r1),r2 ; should be @(r1)+ or @-(r1) + or - missing? in source. 25 01024 010746 mov r7,-(sp) 26 01026 017405 mov @jim(R4),r5 ; Undeclared label Label not defined. 27 ; now single operand instructions 28 01032 005004 clr r4 29 01034 005713 tst (r3) 30 01036 17774146174 clr @(R5 ; no ) + or - missing?. 31 01040 17774147074 tst @(r1) ; no + or - + or - missing?. 32 01042 105757 tstb jim(R2 000000 Missing ) in defered register. 33 01046 005306 dec sp 34 ; 35 ; Now reg,dst ie jsr 36 HERE: jsr there Second parameter missing. 37 01050 004767 jsr pc,go_back 000000 Label not defined. 38 01054 004767 jsr pc,fred ; this should give 'undef label' 000000 Label not defined. 39 01060 016700 mov r9,r0 000000 Label not defined. 40 01064 016700 mov fred,r0 000000 Label not defined. 41 01070 004467 jsr r4,j7fred ; undefined label 000000 Label not defined. 42 01074 003767 jsr (r4),fred ; reg??? 000000 Label not defined. 43 jsr r7 go ; no comma Second parameter missing. 44 ; now just reg is rts 45 rts ; no reg Register not recognised. 46 rst pc Unrecognised opcode. 47 01100 000207 rts r7 48 01102 000203 rts r3 ; pop to r3 (?) 49 rts product ; starts with 'p', might be pc Register not recognised. 50 rts spare ; starts with 's', might be sp Register not recognised. 51 ; now branches 52 01104 003001 bgt fred Label not defined. 53 01106 003001 bne ; no label Branch out of range. 54 01110 001001 bne fred,jim ;? Label not defined. Line terminated strangely. 55 add ,r4 Line terminated strangely. 56 ; Now some instructions with no errors 57 ; two operands: 58 01112 010314 mov r3,(r4) ; mode 0, mode 1 59 01114 062631 add (sp)+,@(r1)+ ; mode 2, mode 3 60 01116 024450 cmp -(r4),@-(r0) ; mode 4, mode 5 61 ;.... 62 01120 016001 mov block(r0),r1 ; mode 6 000074 63 01124 017001 mov @block(r0),r1 ; mode 7 000072 64 01130 010260 mov r2,block(r0) ; mode 6 000064 65 01134 010370 mov r3,@block(r0) ; mode 7 000062 66 ;.... 67 01140 116071 movb block(R0),@block2(R1) ; mode 6, mode 7 000054 000056 68 01146 012701 mov #2,r1 ; immediate - mode 2, reg 7 000002 69 01152 060237 add r2,@#block ; absolute - mode 3, reg 7 001220 70 01156 025706 cmp block,r4 ; relative - mode 6, reg 7 000036 71 01156 025704 movb r1,@block2 ; relative defered - mode 7, reg 7 000036 72 ; one operand: 73 01166 005004 clr r4 74 01170 005715 tst (r5) 75 01172 105722 tstb (r2)+ 76 01174 005336 dec @(sp)+ 77 ; jsr/rts 78 01176 004767 jsr pc,go2 000014 79 01202 000207 rts pc 80 01204 000200 rts r0 ; that does a pop doesn't it? 81 01206 004167 jsr r1,block ; push r1, then jump to block 000006 82 ; branches 83 01212 001001 bne go2 84 01214 003002 bgt block2 85 ; labels: 86 01216 105700 go2: tstb r0 87 01220 105700 block: tstb r0 88 01222 105700 block2: tstb r0 89 .end Symbol table: BLOCK 001220 BLOCK2 001222 GO2 001216 HERE 001050 INPUT 003772 PRINT 000000