; Program Written in HAL85 #include ti-85.h #define TI85-ZSHELL MAX_X = 127 MAX_Y = 63 MAX_COL = 20 MAX_ROW = 7 .org 0 .db "Name Bounce v2",0 SET 0,(IY+03) ; CODE ; line 1 : clrgraph_on SET 0,(IY+03) ; ;Declarations ; ; line 5 : byte x1 var_x1 = GRAPH_MEM + 0 ; line 6 : byte y1 var_y1 = GRAPH_MEM + 1 ; line 7 : byte a1 var_a1 = GRAPH_MEM + 2 ; line 8 : byte b1 var_b1 = GRAPH_MEM + 3 ; line 9 : byte x2 var_x2 = GRAPH_MEM + 4 ; line 10 : byte y2 var_y2 = GRAPH_MEM + 5 ; line 11 : byte a2 var_a2 = GRAPH_MEM + 6 ; line 12 : byte b2 var_b2 = GRAPH_MEM + 7 ; line 13 : byte x3 var_x3 = GRAPH_MEM + 8 ; line 14 : byte y3 var_y3 = GRAPH_MEM + 9 ; line 15 : byte a3 var_a3 = GRAPH_MEM + 10 ; line 16 : byte b3 var_b3 = GRAPH_MEM + 11 ; line 17 : byte x4 var_x4 = GRAPH_MEM + 12 ; line 18 : byte y4 var_y4 = GRAPH_MEM + 13 ; line 19 : byte a4 var_a4 = GRAPH_MEM + 14 ; line 20 : byte b4 var_b4 = GRAPH_MEM + 15 ; line 21 : byte sub var_sub = GRAPH_MEM + 16 ; line 22 : word time var_time = GRAPH_MEM + 17 ; ;Initialization ; ; line 26 : a1 = 1 LD A,1 LD (var_a1),A ; line 27 : b1 = 1 LD A,1 LD (var_b1),A ; line 28 : x1 = 1 LD A,1 LD (var_x1),A ; line 29 : y1 = 1 LD A,1 LD (var_y1),A ; line 30 : a2 = -1 LD A,-1 LD (var_a2),A ; line 31 : b2 = 1 LD A,1 LD (var_b2),A ; line 32 : x2 = 5 LD A,5 LD (var_x2),A ; line 33 : y2 = 6 LD A,6 LD (var_y2),A ; line 34 : a3 = -1 LD A,-1 LD (var_a3),A ; line 35 : b3 = 1 LD A,1 LD (var_b3),A ; line 36 : x3 = 7 LD A,7 LD (var_x3),A ; line 37 : y3 = 4 LD A,4 LD (var_y3),A ; line 38 : a4 = -1 LD A,-1 LD (var_a4),A ; line 39 : b4 = -1 LD A,-1 LD (var_b4),A ; line 40 : x4 = 103 LD A,103 LD (var_x4),A ; line 41 : y4 = 29 LD A,29 LD (var_y4),A ; line 42 : sub = 0 LD A,0 LD (var_sub),A ; line 43 : time = 0000 LD HL,0000 LD (var_time),HL ; ;Main Loop ; Loop: ; line 48 : cls ROM_CALL(CLEARLCD) ; line 49 : normal RES 3,(IY+05) ; line 50 : disp text x1 y1 "Dave" LD A,(var_x1) LD D,A LD A,(var_y1) LD H,D LD L,A LD (CURSOR_ROW),HL LD HL,STR0 PUSH DE LD DE,(PROGRAM_ADDR) ADD HL,DE POP DE ROM_CALL(D_ZT_STR) ; line 51 : disp menu x3 y3 "Dave" LD A,(var_x3) LD D,A LD A,(var_y3) LD L,D LD H,A LD (CURSOR_X),HL LD HL,STR1 PUSH DE LD DE,(PROGRAM_ADDR) ADD HL,DE POP DE ROM_CALL(D_ZM_STR) ; line 52 : reverse SET 3,(IY+05) ; line 53 : disp text x2 y2 "Dave" LD A,(var_x2) LD D,A LD A,(var_y2) LD H,D LD L,A LD (CURSOR_ROW),HL LD HL,STR2 PUSH DE LD DE,(PROGRAM_ADDR) ADD HL,DE POP DE ROM_CALL(D_ZT_STR) ; line 54 : disp menu x4 y4 "Dave" LD A,(var_x4) LD D,A LD A,(var_y4) LD L,D LD H,A LD (CURSOR_X),HL LD HL,STR3 PUSH DE LD DE,(PROGRAM_ADDR) ADD HL,DE POP DE ROM_CALL(D_ZM_STR) ; line 55 : if ((x1 == 0) or (x1 == 17)) LD A,(var_x1) LD D,A LD A,17 CALL_(sys_test_equalb) PUSH HL LD A,(var_x1) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_1) ; line 56 : sub = (a1 * 2) LD A,(var_a1) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 57 : a1 = (a1 - sub) LD A,(var_a1) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_a1),A ; line 58 : endif if_not_true_1: ; line 59 : if ((y1 == 0) or (y1 == 7)) LD A,(var_y1) LD D,A LD A,7 CALL_(sys_test_equalb) PUSH HL LD A,(var_y1) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_2) ; line 60 : sub = (b1 * 2) LD A,(var_b1) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 61 : b1 = (b1 - sub) LD A,(var_b1) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_b1),A ; line 62 : endif if_not_true_2: ; line 63 : x1 = (x1 + a1) LD A,(var_x1) LD D,A LD A,(var_a1) ADD A,D LD L,A ld A,L LD (var_x1),A ; line 64 : y1 = (y1 + b1) LD A,(var_y1) LD D,A LD A,(var_b1) ADD A,D LD L,A ld A,L LD (var_y1),A ; line 65 : if ((x2 == 0) or (x2 == 17)) LD A,(var_x2) LD D,A LD A,17 CALL_(sys_test_equalb) PUSH HL LD A,(var_x2) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_3) ; line 66 : sub = (a2 * 2) LD A,(var_a2) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 67 : a2 = (a2 - sub) LD A,(var_a2) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_a2),A ; line 68 : endif if_not_true_3: ; line 69 : if ((y2 == 0) or (y2 == 7)) LD A,(var_y2) LD D,A LD A,7 CALL_(sys_test_equalb) PUSH HL LD A,(var_y2) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_4) ; line 70 : sub = (b2 * 2) LD A,(var_b2) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 71 : b2 = (b2 - sub) LD A,(var_b2) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_b2),A ; line 72 : endif if_not_true_4: ; line 73 : x2 = (x2 + a2) LD A,(var_x2) LD D,A LD A,(var_a2) ADD A,D LD L,A ld A,L LD (var_x2),A ; line 74 : y2 = (y2 + b2) LD A,(var_y2) LD D,A LD A,(var_b2) ADD A,D LD L,A ld A,L LD (var_y2),A ; line 75 : if ((x3 == 0) or (x3 == 113)) LD A,(var_x3) LD D,A LD A,113 CALL_(sys_test_equalb) PUSH HL LD A,(var_x3) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_5) ; line 76 : sub = (a3 * 2) LD A,(var_a3) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 77 : a3 = (a3 - sub) LD A,(var_a3) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_a3),A ; line 78 : endif if_not_true_5: ; line 79 : if ((y3 == 0) or (y3 == 58)) LD A,(var_y3) LD D,A LD A,58 CALL_(sys_test_equalb) PUSH HL LD A,(var_y3) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_6) ; line 80 : sub = (b3 * 2) LD A,(var_b3) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 81 : b3 = (b3 - sub) LD A,(var_b3) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_b3),A ; line 82 : endif if_not_true_6: ; line 83 : x3 = (x3 + a3) LD A,(var_x3) LD D,A LD A,(var_a3) ADD A,D LD L,A ld A,L LD (var_x3),A ; line 84 : y3 = (y3 + b3) LD A,(var_y3) LD D,A LD A,(var_b3) ADD A,D LD L,A ld A,L LD (var_y3),A ; line 85 : if ((x4 == 0) or (x4 == 113)) LD A,(var_x4) LD D,A LD A,113 CALL_(sys_test_equalb) PUSH HL LD A,(var_x4) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_7) ; line 86 : sub = (a4 * 2) LD A,(var_a4) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 87 : a4 = (a4 - sub) LD A,(var_a4) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_a4),A ; line 88 : endif if_not_true_7: ; line 89 : if ((y4 == 0) or (y4 == 58)) LD A,(var_y4) LD D,A LD A,58 CALL_(sys_test_equalb) PUSH HL LD A,(var_y4) LD D,A LD A,0 CALL_(sys_test_equalb) ld A,L LD D,A POP HL ld A,L OR D LD L,A ld A,L CP 0 JUMP_Z(if_not_true_8) ; line 90 : sub = (b4 * 2) LD A,(var_b4) LD H,0 LD L,A LD D,H LD E,L LD A,2 LD H,0 LD L,A CALL_(sys_mulemw) ld A,L LD (var_sub),A ; line 91 : b4 = (b4 - sub) LD A,(var_b4) LD E,A LD A,(var_sub) LD D,A LD A,E OR A SBC A,D LD H,0 LD L,A ld A,L LD (var_b4),A ; line 92 : endif if_not_true_8: ; line 93 : x4 = (x4 + a4) LD A,(var_x4) LD D,A LD A,(var_a4) ADD A,D LD L,A ld A,L LD (var_x4),A ; line 94 : y4 = (y4 + b4) LD A,(var_y4) LD D,A LD A,(var_b4) ADD A,D LD L,A ld A,L LD (var_y4),A ; ;Slow-Down & quit if they user wants ; ; line 98 : for time = 0000 to 0500 LD HL,0000 LD (var_time),HL forloop_0: ; line 99 : if ((readkey) == K_EXIT) CALL GET_KEY LD L,A ld A,L LD D,A LD A,K_EXIT CALL_(sys_test_equalb) ld A,L CP 0 JUMP_Z(if_not_true_9) RET ; line 101 : endif if_not_true_9: ; line 102 : next LD HL,(var_time) INC HL LD (var_time),HL DEC HL LD D,H LD E,L LD HL,0500 CALL_(sys_test_lessw) LD A,0 CP L JUMP_NZ(forloop_0) ; line 103 : goto Loop JUMP_(Loop) ; DATA STR0: .db "Dave",0 STR1: .db "Dave",0 STR2: .db "Dave",0 STR3: .db "Dave",0 sys_test_equalb: CP D JR NZ,equalb_no LD L,1 JR equalb_end equalb_no: LD L,0 equalb_end: RET sys_mulemw: LD C,L LD B,H LD HL,0000 LD A,15 sys_MLP: SLA E RL D JR NC, sys_MLP1 ADD HL,BC sys_MLP1: ADD HL,HL DEC A JR NZ, sys_MLP OR D RET P ADD HL,BC RET sys_test_lessw: LD A,H CP D JR C,sys_lessw_no JR NZ,sys_lessw_yes LD A,L CP E JR C,sys_lessw_no JR Z,sys_lessw_no sys_lessw_yes: LD L,1 JR sys_lessw_end sys_lessw_no: LD L,0 sys_lessw_end: RET .end