;-*-MIDAS-*- TITLE SUDOKU SOLVER A=1 ;Define ACs as universal registers B=2 ;from A to E C=3 D=4 E=5 X=10 ;X and Y are used for indexing Y=11 ;loops etc. P=17 ;Define P as the stack pointer. PDLLEN==20 ;Set the size of the stack to 20 words. PDL: BLOCK PDLLEN ;Reserve the stack memory BPTR==440700 ;Define a byte pointer. CHTTYO==1 ;Define a channel for TTY output. START: MOVE P,[-PDLLEN,,PDL-1] ;Initialize the stack. .OPEN CHTTYO,[.UAO,,'TTY] ;Open an output channel on the TTY. .LOSE %LSFIL ;Gobble up any errors. MOVE A,[BPTR,,HELLO] ;Load A with a byte pointer to HELLO. PUSHJ P,OUTSTR ;Print the out string. JRST DONE ;Jump to the end of the program. OUTSTR: HRLI A,BPTR ;Ensure, A is a byte pointer. OUT: ILDB B,A ;Load the next byte from A. JUMPE B,OUTEX ;Exit the routine, if all bytes are done. .IOT CHTTYO,B ;Print a character. JRST OUT ;Jump back to print the next character. OUTEX: .IOT CHTTYO,[^M] ;Print carriage return and .IOT CHTTYO,[^J] ;newline characters. POPJ P, ;Return from the subroutine. DONE: .LOGOUT 2, ;Exit point for the program. HELLO: ASCIZ /HELLO WORLD/ ;Define example string. END START