DATA: .BLKB 16 s0: .ASCII / Move piece from pole / .BYTE 0 .BLKB 233 s1: .ASCII / to / .BYTE 0 .BLKB 251 s2: .ASCII /Give me an integers -> / .BYTE 0 .BLKB 232 s3: .ASCII /<--> / .BYTE 0 .BLKB 250 s4: .ASCII /<--> / .BYTE 0 .BLKB 250 .ENTRY TOWER, 0 SUBL2 #0, SP MOVL 4(AP), R2 CMPL R2, #1 BEQL L_1 MOVL #0, R2 JMP L_2 L_1: MOVL #1, R2 L_2: CMPL #0, R2 BNEQ L_3 JMP L_4 L_3: MOVL DATA+12,R2 ADDL2 #1, R2 MOVL R2, DATA+12 PUSHL DATA+12 CALLS #1, printnum PUSHAL s0 CALLS #1, printstr PUSHL 8(AP) CALLS #1, printchar PUSHAL s1 CALLS #1, printstr PUSHL 12(AP) CALLS #1, printchar PUSHL #10 CALLS #1, printchar JMP L_0 L_4: PUSHL 12(AP) PUSHL 16(AP) PUSHL 8(AP) MOVL 4(AP), R2 SUBL2 #1, R2 PUSHL R2 CALLS #4, TOWER PUSHL 16(AP) PUSHL 12(AP) PUSHL 8(AP) PUSHL #1 CALLS #4, TOWER PUSHL 8(AP) PUSHL 12(AP) PUSHL 16(AP) MOVL 4(AP), R2 SUBL2 #1, R2 PUSHL R2 CALLS #4, TOWER L_0: RET .ENTRY CHSWAP, 0 SUBL2 #1, SP MOVL 4(AP), R2 MOVB (R2), -1(FP) MOVL 8(AP), R2 MOVL 4(AP), R3 MOVB (R2), (R3) MOVL 8(AP), R2 MOVB -1(FP), (R2) MOVL DATA+8, R0 RET RET .ENTRY Main, 0 PUSHAL s2 CALLS #1, printstr PUSHAL DATA+8 CALLS #1, readnum MOVB #^A/A/, DATA+1 MOVB #^A/Z/, DATA+0 PUSHL DATA+1 CALLS #1, printchar PUSHAL s3 CALLS #1, printstr PUSHL DATA+0 CALLS #1, printchar PUSHL #10 CALLS #1, printchar PUSHAL DATA+0 PUSHAL DATA+1 CALLS #2, CHSWAP MOVL R0, R2 MOVL R2, DATA+4 PUSHL DATA+1 CALLS #1, printchar PUSHAL s4 CALLS #1, printstr PUSHL DATA+0 CALLS #1, printchar PUSHL #10 CALLS #1, printchar PUSHL DATA+8 CALLS #1, printnum PUSHL DATA+4 CALLS #1, printnum PUSHL #10 CALLS #1, printchar MOVL #0, DATA+12 PUSHL #^A/c/ PUSHL #^A/b/ PUSHL #^A/a/ PUSHL #5 CALLS #4, TOWER RET .END MAIN