diff --git a/src/sudoku.s b/src/sudoku.s index ecb843a..d35128c 100644 --- a/src/sudoku.s +++ b/src/sudoku.s @@ -42,7 +42,8 @@ START: MOVE P,[-PDLLEN,,PDL-1] ;Initialize the stack. MOVEI A,FNAME1 ;Store the first file name in A MOVEI B,FNAME2 ;Store the second file name in B MOVEI C,FIELD ;Store the address of field in C - PUSHJ P,IMPRTF ;Load the file + PUSHJ P,IMPRTF ;Load the file + PUSHJ P,PFIELD ;Print thee loaded field. JRST DONE ;Jump to the end of the program. @@ -100,6 +101,37 @@ PUTLN: PUSHJ P,OUTSTR ;Calls the OUTSTR subroutine .IOT CHTTYO,[^J] ;and a new line POPJ P, ;before returning. +;Subroutine to that prints the entire play field. +;The contents of the field is expected in FIELD +PFIELD: PUSH P,A ;Save the A register. + PUSH P,B ;Save the contents of register B. + PUSH P,X ;Save the contents of the index register. + PUSH P,Y ;Save the contents of the Y register + MOVE X,[440400,,FIELD] ;Store a bytepointer in X. +PFIELN: .IOT CHTTYO,[^M] ;Print a carriage return. + .IOT CHTTYO,[^J] ;Print a new line. + MOVE A,[BPTR,,HLINE] ;Print a horizontal line. + POPJ P,PUTLN + MOVEI Y,011 ;Load the index register with 9. + MOVEI B,174 ;Print a '|' symbol. + .IOT CHTTYO,B +PFIENO: MOVEi B,020 ;Print a space. + .IOT CHTTYO,B + ILDB B,X ;Load the next field. + JUMPE B,PFIEEX ;Exit, if no more elements are read. + ADDI B,060 ;Convert number into char. + .IOT CHTTYO,B ;Print the number. + .IOT CHTTYO,[ ] ;Print a space. + .IOT CHTTYO,[|] ;Print the vertical line. + SOJE Y,PFIELN ;End the line and start a new one. + JUMPA PFIENO ;Jump back to print the next number. + +PFIEEX: POP P,Y ;Restore the Y register. + POP P,X ;Restore the index register. + POP P,B ;Restore the B register. + POP P,A ;Restore the A register. + POPJ P, ;Return from the subroutine. + ;Subroutine that reads the contents of the file into the buffer at FIELD IMPRTF: PUSH P,A ;Save the A register. PUSH P,X ;Save the index register. @@ -126,4 +158,5 @@ IMPREX: .CALL [SETZ ? SIXBIT/CLOSE/ ;Close the file, before returning. DONE: .LOGOUT 2, ;Exit point for the program. WELCOME:ASCIZ /SUDOKU SOLVER v0.1/ ;Text of the welcome banner. LOADING:ASCIZ /LOADING / ;Load message. +HLINE: ASCIZ /|---|---|---|---|---|---|---|---|---|/ ;A horizontal line. END START