             ;******* Opcode 0x40 
             ;The STRO instruction. 
             ;Outputs a null-terminated string from memory. 
             ; 
FFC6  C00016 opcode40:LDA     0x0016,i   ;Assert d, n, sf 
FFC9  E1FC53          STA     addrMask,d 
FFCC  16FCCA          CALL    assertAd   
FFCF  16FD19          CALL    setAddr    ;Set address of trap operand 
FFD2  C1FC55          LDA     opAddr,d   ;Push address of string to print 
FFD5  E3FFFE          STA     -2,s       
FFD8  680002          SUBSP   2,i        
FFDB  16FFE2          CALL    prntMsg    ;and print 
FFDE  600002          ADDSP   2,i        
FFE1  58              RET0               
             ; 
             ;******* Print subroutine 
             ;Prints a string of ASCII bytes until it encounters a null 
             ;byte (eight zero bits). Assumes one parameter, which 
             ;contains the address of the message. 
             ; 
             msgAddr: .EQUATE 2          ;Address of message to print 
             ; 
FFE2  C80000 prntMsg: LDX     0,i        ;X := 0 
FFE5  C00000          LDA     0,i        ;A := 0 
FFE8  D70002 prntMore:LDBYTEA msgAddr,sxf;Test next char 
FFEB  0AFFF7          BREQ    exitPrnt   ;If null then exit 
FFEE  570002          CHARO   msgAddr,sxf;else print 
FFF1  780001          ADDX    1,i        ;X := X + 1 for next character 
FFF4  04FFE8          BR      prntMore   
             ; 
FFF7  58     exitPrnt:RET0               
             ; 
             ;******* Vectors for System Memory Format 
FFF8  FBCF            .ADDRSS osRAM      ;User stack pointer 
FFFA  FC4F            .ADDRSS wordBuff   ;System stack pointer 
FFFC  FC57            .ADDRSS loader     ;Loader program counter 
FFFE  FC9B            .ADDRSS trap       ;Trap program counter 
