TITLE "text.a -- optimized text processing demo" ; by Douglas Jones USE "hawk.h" USE "monitor.h" S MAIN INT MAIN SUBTITLE "main program" ;AR for main ;RETAD = 0 ARSIZE = 4 ;body of main MAIN: STORES R1,R2 LEA R3,HELLO ADDI R2,R2,ARSIZE JSR R1,MYPUTS ; myputs( HELLO ) ADDI R2,R2,-ARSIZE LOADS R1,R2 JUMPS R1 ;constants used by main HELLO: ASCII "hello world",0 SUBTITLE "myputs" ;AR for myputs ;RETAD = 0 S = 4 ARSIZE = 8 ;code for myputs MYPUTS: ; expects R3 = s -- pointer to string STORES R1,R2 MYPLP: ; for (;;) { STORE R3,R2,S ; -- R3 holds s here LOADS R4,R3 ; -- R4 is word holding *s EXTB R3,R4,R3; ch = *s -- sets condition codes BZS MYPQT ; if (ch == 0) break ; -- param already in R3 ADDI R2,R2,ARSIZE LIL R1,PUTCHAR JSRS R1,R1 ; putchar( ch ) ADDI R2,R2,-ARSIZE LOAD R3,R2,S ADDI R3,R3,1 ; s = s + 1 BR MYPLP ; } MYPQT: LOADS R1,R2 JUMPS R1 ; return END