.nlist .enabl lc,crf .mcall .exit .macro arggen a,b,c,d,e,f,g,h,i,j,k,l,m,n .if nb a .word a arggen b,c,d,e,f,g,h,i,j,k,l,m,n .iff .mexit .endc .endm arggen .macro print arg .if df arg .globl writec jsr r5, writec arg .iff .list .ERROR Undefined argument (arg) in PRINT .nlist .endc .endm print .macro accept no,arg .if df arg .if gt no .globl readc jsr r5, readc .word no,arg .iff .list .ERROR Illegal argument (no) in ACCEPT .nlist .endc .iff .list .ERROR Undefined argument (arg) in ACCEPT .nlist .endc .endm accept .macro readln a,b,c,d,e,f,g,h,i,j,k,l,m,n .narg $no$ .if gt $no$ .globl readd jsr r5, readd .word $no$ arggen a,b,c,d,e,f,g,h,i,j,k,l.m,n .iff .list .ERROR READLN must have an argument .nlist .endc .endm readln .macro writeln a,b,c,d,e,f,g,h,i,j,k,l,m,n .narg $no$ .if gt $no$ .globl writed jsr %5, writed .word $no$ arggen a,b,c,d,e,f,g,h,i,j,k,l,m,n .iff .list .ERROR Writeln Must have an argument .nlist .endc .endm writeln .list ESTUFF:: ;## 1 # 0 ## PROCEDURE ESTUFF,GLOBAL ; Extract the file name from the ; chaining process tst (R5)+ ;## 6 # 0 ## PROBE (R5)+ mov #510,R2 ;## 7 # 0 ## LET R2 := #510; address of data passed mov (5)+,R1 ;## 8 # 0 ## LET R1 := (5)+; Output parameter mov (R5)+,R0 ;## 9 # 0 ## LET R0 := (R5)+; Pick up second parameter... cmpb (2),#0 ;## 10 # 0 ## IFB (2) <> #0 THEN; See if null?? bNE ll$2 jmp ll$1 ll$2: ll$3: ;## 11 # 1 ## REPEAT inc (0) ;## 12 # 2 ## LET (0) := (0) + #1 movb (2),(1)+ ;## 13 # 2 ## LETB (1)+ := (2);Shovel.... cmpb (2)+,#0 ;## 14 # 1 ## UNTILB (2)+ IS #0 beq ll$6 jmp ll$5 ll$6: br ll$4 ll$5: jmp ll$3 ll$4: ll$1: ;## 15 # 0 ## END rts pc ;## 16 # 0 ## RETURN ;## 17 # 0 ## .END ;SUPERMAC Errors Detected: 0 ; 1 0 0 0 5 0 1 0 0 0 ; 26 0 1 13 1 1 1 1 13 6 ; 0 5 0 0 0 13 0 0 97 0 ; 0 1 1 0 0 0 1 1 15 13 ; 4 0 0 1 2 0 2 0 0 0 ; 0 0 0 0 0 0 0 0 0 0 ; 0 0 0 0 0 0 0 0 0 0 ; 0 0 0 0 0 0 .END