; RTerm 85 v0.4 ; by Randy Gluvna ; gluvna@home.com ; http://members.home.com/gluvna #INCLUDE "TI-85.H" #INCLUDE "KEYS.INC" PORT = 007H .ORG 0 .DB "RTerm v0.4",0 INIT: ROM_CALL(CLEARTEXT) MENU: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_ROW),HL LD HL,STRING_TITLE LD DE,(PROGRAM_ADDR) ADD HL,DE SET 3,(IY+05) ROM_CALL(D_ZT_STR) LD HL,$0001 LD (CURSOR_ROW),HL LD HL,STRING_AUTHOR LD DE,(PROGRAM_ADDR) ADD HL,DE RES 3,(IY+05) ROM_CALL(D_ZT_STR) LD HL,$0003 LD (CURSOR_ROW),HL LD HL,STRING_MENU LD DE,(PROGRAM_ADDR) ADD HL,DE ROM_CALL(D_ZT_STR) MENU_WAIT: CALL GET_KEY CP G_1 JR Z,TERMINAL CP G_2 JUMP_Z(SETTINGS) CP G_3 JUMP_Z(QUIT) CP G_MODE JUMP_Z(QUIT) JR MENU_WAIT TERMINAL: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_X),HL TERM_WAIT: LD HL,TEXT_MEM BIT 4,(HL) JUMP_NZ(KEY_VARS) LD HL,$1400 LD (CURSOR_ROW),HL LD A,$23 LD HL,TEXT_MEM BIT 6,(HL) CALL_NZ(ALPHA) ROM_CALL(TX_CHARPUT) JR CONTINUE ALPHA: BIT 5,(HL) JR NZ,UPPER LD A,$DB RET UPPER: LD A,$DA RET CONTINUE: IN A,(7) AND 3 CP 3 JUMP_NZ(RECEIVE) CALL GET_KEY LD HL,TEXT_MEM CP 55 JUMP_Z(MENU) CP 48 JUMP_Z(KEY_ALPHA) CP 2 JUMP_Z(KEY_BACKSPACE) CP 3 JUMP_Z(SPACE) CP 9 JUMP_Z(KEY_ENTER) CP 15 JUMP_Z(CLEAR) CP 23 JUMP_Z(KEY_VARS) CP 46 JUMP_Z(KEY_A) CP 38 JUMP_Z(KEY_B) CP 30 JUMP_Z(KEY_C) CP 22 JUMP_Z(KEY_D) CP 14 JUMP_Z(KEY_E) CP 45 JUMP_Z(KEY_F) CP 37 JUMP_Z(KEY_G) CP 29 JUMP_Z(KEY_H) CP 21 JUMP_Z(KEY_I) CP 13 JUMP_Z(KEY_J) CP 44 JUMP_Z(KEY_K) CP 36 JUMP_Z(KEY_L) CP 28 JUMP_Z(KEY_M) CP 20 JUMP_Z(KEY_N) CP 12 JUMP_Z(KEY_O) CP 43 JUMP_Z(KEY_P) CP 35 JUMP_Z(KEY_Q) CP 27 JUMP_Z(KEY_R) CP 19 JUMP_Z(KEY_S) CP 11 JUMP_Z(KEY_T) CP 34 JUMP_Z(KEY_U) CP 26 JUMP_Z(KEY_V) CP 18 JUMP_Z(KEY_W) CP 10 JUMP_Z(KEY_X) CP 33 JUMP_Z(KEY_Y) CP 25 JUMP_Z(KEY_Z) CP 17 JUMP_Z(KEY_SPACE) CP 42 JUMP_Z(KEY_EQUALS) JUMP_(TERM_WAIT) RECEIVE: CALL_(RECEIVE_BYTE) RES 7,A CP 8 JUMP_Z(BACKSPACE) CP 10 JUMP_Z(TERM_WAIT) CP 12 JUMP_Z(CLEAR) CP 13 JUMP_Z(JUMP_NEWLINE) JUMP_(PRINT_CHAR) KEY_ALPHA: BIT 6,(HL) JR Z,SET_ALPHA BIT 5,(HL) JR Z,SET_UPPER RES 6,(HL) RES 5,(HL) JUMP_(TERM_WAIT) SET_ALPHA: SET 6,(HL) JUMP_(TERM_WAIT) SET_UPPER: SET 5,(HL) JUMP_(TERM_WAIT) KEY_ENTER: LD A,13 CALL_(SEND_BYTE) LD HL,TEXT_MEM BIT 7,(HL) JUMP_NZ(JUMP_NEWLINE) JUMP_(TERM_WAIT) KEY_BACKSPACE: LD A,8 CALL_(SEND_BYTE) LD HL,TEXT_MEM BIT 7,(HL) JUMP_NZ(BACKSPACE) JUMP_(TERM_WAIT) SPACE: LD A,$20 JUMP_(SEND) KEY_VARS: LD HL,TEXT_MEM SET 4,(HL) IN A,(7) AND 3 CP 3 JUMP_NZ(RECEIVE) LD HL,$1400 LD (CURSOR_ROW),HL LD A,(TEXT_MEM+1) ROM_CALL(TX_CHARPUT) CALL GET_KEY CP 4 JR Z,INCREMENT CP 1 JR Z,DECREMENT CP 48 JR Z,QUIT_VARS CP 54 JR Z,SEND_VARS CP 55 JR Z,QUIT_VARS CP 23 JR Z,QUIT_VARS JR KEY_VARS INCREMENT: LD A,(TEXT_MEM+1) CP 127 JR Z,KEY_VARS LD HL,TEXT_MEM+1 INC (HL) JR KEY_VARS DECREMENT: LD A,(TEXT_MEM+1) OR A JR Z,KEY_VARS LD HL,TEXT_MEM+1 DEC (HL) JR KEY_VARS SEND_VARS: LD A,(TEXT_MEM+1) JUMP_(SEND) QUIT_VARS: LD HL,TEXT_MEM RES 4,(HL) JUMP_(TERM_WAIT) KEY_A: BIT 5,(HL) JR Z,LOWER_A LD A,$41 JUMP_(SEND) LOWER_A: LD A,$61 JUMP_(SEND) KEY_B: BIT 5,(HL) JR Z,LOWER_B LD A,$42 JUMP_(SEND) LOWER_B: LD A,$62 JUMP_(SEND) KEY_C: BIT 5,(HL) JR Z,LOWER_C LD A,$43 JUMP_(SEND) LOWER_C: LD A,$63 JUMP_(SEND) KEY_D: BIT 5,(HL) JR Z,LOWER_D LD A,$44 JUMP_(SEND) LOWER_D: LD A,$64 JUMP_(SEND) KEY_E: BIT 6,(HL) JR Z,MATH_E BIT 5,(HL) JR Z,LOWER_E LD A,$45 JUMP_(SEND) MATH_E: LD A,$5E JUMP_(SEND) LOWER_E: LD A,$65 JUMP_(SEND) KEY_F: BIT 5,(HL) JR Z,LOWER_F LD A,$46 JUMP_(SEND) LOWER_F: LD A,$66 JUMP_(SEND) KEY_G: BIT 5,(HL) JR Z,LOWER_G LD A,$47 JUMP_(SEND) LOWER_G: LD A,$67 JUMP_(SEND) KEY_H: BIT 6,(HL) JR Z,NUM_H BIT 5,(HL) JR Z,LOWER_H LD A,$48 JUMP_(SEND) NUM_H: LD A,$28 JUMP_(SEND) LOWER_H: LD A,$68 JUMP_(SEND) KEY_I: BIT 6,(HL) JR Z,MATH_I BIT 5,(HL) JR Z,LOWER_I LD A,$49 JUMP_(SEND) MATH_I: LD A,$29 JUMP_(SEND) LOWER_I: LD A,$69 JUMP_(SEND) KEY_J: BIT 6,(HL) JR Z,NUM_J BIT 5,(HL) JR Z,LOWER_J LD A,$4A JUMP_(SEND) NUM_J: LD A,$2F JUMP_(SEND) LOWER_J: LD A,$6A JUMP_(SEND) KEY_K: BIT 5,(HL) JR Z,LOWER_K LD A,$4B JUMP_(SEND) LOWER_K: LD A,$6B JUMP_(SEND) KEY_L: BIT 6,(HL) JR Z,NUM_L BIT 5,(HL) JR Z,LOWER_L LD A,$4C JUMP_(SEND) NUM_L: LD A,$37 JUMP_(SEND) LOWER_L: LD A,$6C JUMP_(SEND) KEY_M: BIT 6,(HL) JR Z,NUM_M BIT 5,(HL) JR Z,LOWER_M LD A,$4D JUMP_(SEND) NUM_M: LD A,$38 JUMP_(SEND) LOWER_M: LD A,$6D JUMP_(SEND) KEY_N: BIT 6,(HL) JR Z,NUM_N BIT 5,(HL) JR Z,LOWER_N LD A,$4E JUMP_(SEND) NUM_N: LD A,$39 JUMP_(SEND) LOWER_N: LD A,$6E JUMP_(SEND) KEY_O: BIT 6,(HL) JR Z,NUM_O BIT 5,(HL) JR Z,LOWER_O LD A,$4F JUMP_(SEND) NUM_O: LD A,$2A JUMP_(SEND) LOWER_O: LD A,$6F JUMP_(SEND) KEY_P: BIT 6,(HL) JR Z,NUM_P BIT 5,(HL) JR Z,LOWER_P LD A,$50 JUMP_(SEND) NUM_P: LD A,$2C JUMP_(SEND) LOWER_P: LD A,$70 JUMP_(SEND) KEY_Q: BIT 6,(HL) JR Z,NUM_Q BIT 5,(HL) JR Z,LOWER_Q LD A,$51 JUMP_(SEND) NUM_Q: LD A,$34 JUMP_(SEND) LOWER_Q: LD A,$71 JUMP_(SEND) KEY_R: BIT 6,(HL) JR Z,NUM_R BIT 5,(HL) JR Z,LOWER_R LD A,$52 JUMP_(SEND) NUM_R: LD A,$35 JUMP_(SEND) LOWER_R: LD A,$72 JUMP_(SEND) KEY_S: BIT 6,(HL) JR Z,NUM_S BIT 5,(HL) JR Z,LOWER_S LD A,$53 JUMP_(SEND) NUM_S: LD A,$36 JUMP_(SEND) LOWER_S: LD A,$73 JUMP_(SEND) KEY_T: BIT 6,(HL) JR Z,NUM_T BIT 5,(HL) JR Z,LOWER_T LD A,$54 JUMP_(SEND) NUM_T: LD A,$2D JUMP_(SEND) LOWER_T: LD A,$74 JUMP_(SEND) KEY_U: BIT 6,(HL) JR Z,NUM_U BIT 5,(HL) JR Z,LOWER_U LD A,$55 JUMP_(SEND) NUM_U: LD A,$31 JUMP_(SEND) LOWER_U: LD A,$75 JUMP_(SEND) KEY_V: BIT 6,(HL) JR Z,NUM_V BIT 5,(HL) JR Z,LOWER_V LD A,$56 JUMP_(SEND) NUM_V: LD A,$32 JUMP_(SEND) LOWER_V: LD A,$76 JUMP_(SEND) KEY_W: BIT 6,(HL) JR Z,NUM_W BIT 5,(HL) JR Z,LOWER_W LD A,$57 JUMP_(SEND) NUM_W: LD A,$33 JUMP_(SEND) LOWER_W: LD A,$77 JUMP_(SEND) KEY_X: BIT 6,(HL) JR Z,NUM_X BIT 5,(HL) JR Z,LOWER_X LD A,$58 JR SEND NUM_X: LD A,$2B JR SEND LOWER_X: LD A,$78 JR SEND KEY_Y: BIT 6,(HL) JR Z,NUM_Y BIT 5,(HL) JR Z,LOWER_Y LD A,$59 JR SEND NUM_Y: LD A,$30 JR SEND LOWER_Y: LD A,$79 JR SEND KEY_Z: BIT 6,(HL) JR Z,NUM_Z BIT 5,(HL) JR Z,LOWER_Z LD A,$5A JR SEND NUM_Z: LD A,$2E JR SEND LOWER_Z: LD A,$7A JR SEND KEY_SPACE: BIT 6,(HL) JR Z,NUM_SPACE LD A,$20 JR SEND NUM_SPACE: LD A,$5F JR SEND KEY_EQUALS: LD A,$3D JR SEND CALL_NEWLINE: LD A,(CURSOR_Y) ADD A,6 LD (CURSOR_Y),A LD HL,CURSOR_X LD (HL),0 RET JUMP_NEWLINE: LD A,(CURSOR_Y) ADD A,6 LD (CURSOR_Y),A LD HL,CURSOR_X LD (HL),0 JUMP_(TERM_WAIT) BACKSPACE: LD A,(CURSOR_X) SUB 4 LD (CURSOR_X),A JUMP_(TERM_WAIT) CLEAR: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_X),HL JUMP_(TERM_WAIT) SEND: PUSH AF CALL_(SEND_BYTE) POP AF LD HL,TEXT_MEM BIT 7,(HL) JUMP_Z(TERM_WAIT) PRINT_CHAR: PUSH AF LD A,(CURSOR_Y) CP $36 CALL_NC(SCRNFULL) LD A,(CURSOR_X) CP 122 CALL_NC(CALL_NEWLINE) POP AF ROM_CALL(M_CHARPUT) JUMP_(TERM_WAIT) SCRNFULL: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_X),HL RET SETTINGS: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_ROW),HL LD HL,STRING_SETTINGS LD DE,(PROGRAM_ADDR) ADD HL,DE SET 3,(IY+05) ROM_CALL(D_ZT_STR) LD HL,$0002 LD (CURSOR_ROW),HL LD HL,STRING_SETTINGS_MENU LD DE,(PROGRAM_ADDR) ADD HL,DE RES 3,(IY+05) ROM_CALL(D_ZT_STR) LD HL,$0A02 LD (CURSOR_ROW),HL LD HL,TEXT_MEM BIT 7,(HL) CALL_Z(PRINT_OFF) CALL_NZ(PRINT_ON) LD DE,(PROGRAM_ADDR) ADD HL,DE ROM_CALL(D_ZT_STR) SETTINGS_WAIT: CALL GET_KEY CP G_MODE JUMP_Z(MENU) CP G_1 JR Z,ECHO CP G_2 JUMP_Z(MENU) JR SETTINGS_WAIT ECHO: LD HL,TEXT_MEM BIT 7,(HL) JR Z,ECHO_ON ECHO_OFF: RES 7,(HL) JR SETTINGS ECHO_ON: SET 7,(HL) JR SETTINGS PRINT_OFF: LD HL,STRING_OFF RET PRINT_ON: LD HL,STRING_ON RET QUIT: ROM_CALL(CLEARLCD) LD HL,$0000 LD (CURSOR_ROW),HL RET #INCLUDE "LINKPORT.H" STRING_TITLE: .DB " RTerm v0.4 ",0 STRING_AUTHOR: .DB " by Randy Gluvna ",0 STRING_MENU: .DB "1: Terminal Mode " .DB "2: Settings " .DB "3: Quit",0 STRING_SETTINGS: .DB " Settings ",0 STRING_SETTINGS_MENU: .DB "1: Echo - " .DB "2: Quit",0 STRING_OFF: .DB "Off",0 STRING_ON: .DB "On ",0 .END