-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTI-85.H
More file actions
163 lines (153 loc) · 7.58 KB
/
Copy pathTI-85.H
File metadata and controls
163 lines (153 loc) · 7.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ÜÜÜÜÜ ÜÜÜ Ü Ü ÜÜÜÜÜ Ü Ü
; Üß Û ß Û Û Û Û Û
; Üß ßßßÜ ÛßßßÛ Ûßß Û Û
; ÛÜÜÜÜ ßÜÜÜß Û Û ÛÜÜÜÜ ÛÜÜÜÜ ÛÜÜÜÜ
; Version 4.0 - November 1995
; Copyright 1995
; Dan Eble (eble.2@osu.edu)
; Magnus Hagander (e95_mha@e.kth.se)
; Rob Taylor (100635.152@compuserve.com)
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; #DEFINEs for relative calls and jumps
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
#DEFINE ROM_CALL(index) call $8C09 \ .db index
#DEFINE CALL_Z(addr) call $8C0C \ .dw addr
#DEFINE CALL_(addr) call $8C0F \ .dw addr
#DEFINE CALL_NZ(addr) call $8C12 \ .dw addr
#DEFINE CALL_C(addr) call $8C18 \ .dw addr
#DEFINE CALL_NC(addr) call $8C1E \ .dw addr
#DEFINE JUMP_Z(addr) call $8C24 \ .dw addr
#DEFINE JUMP_(addr) call $8C27 \ .dw addr
#DEFINE JUMP_NZ(addr) call $8C2A \ .dw addr
#DEFINE JUMP_C(addr) call $8C30 \ .dw addr
#DEFINE JUMP_NC(addr) call $8C36 \ .dw addr
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ZShell Specific Data areas
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
PROGRAM_ADDR =$8C3C ; program address
ROM_VERS =$8C3E ; ROM version byte
ZSHELL_VER =$8C3F ; ZShell version number
ZS_BITS =$8C40 ; bit 0 set : checksum again
; bit 1 set : get out without screen
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; Call addresses
; These addresses are in the same location in all ROM versions, and can
; therefor be accessed through a direct call.
; There is no need to use the ROM_CALL function.
; Instead, use e.g. "call LD_HL_MHL", without using any macro.
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
LD_HL_MHL =$0033 ; HL=(HL), A=L
CP_HL_DE =$008E ; CP HL,DE (modifies flags only)
UNPACK_HL =$009A ; unpacks one digit of HL into %A
STORE_KEY =$01B1 ; store immediate keystroke from %A
GET_KEY =$01BE ; get immediate keystroke into %A
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; Call Indexes
; These indexes are used in the ROM_CALL macro to call functios that
; are in the TI-85's ROM.
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
TX_CHARPUT =$00 ; xlated display of %A on screen, normal text style
D_LT_STR =$01 ; display length-byte normal text string
M_CHARPUT =$02 ; display %A on screen, menu style
D_ZM_STR =$03 ; display zero-terminated string, menu style
D_LM_STR =$04 ; display length-byte string, menu style
GET_T_CUR =$05 ; HL = absolute address of text cursor
SCROLL_UP =$06 ; scroll text screen up
TR_CHARPUT =$07 ; raw display of %A on screen, normal text style
CLEARLCD =$08 ; clear LCD, but not text or graphics memory
D_HL_DECI =$09 ; disp. HL as 5-byte, right just., blank-pad. decimal
CLEARTEXT =$0A ; clear LCD and text memory (affected by 1,(IY+13))
D_ZT_STR =$0B ; display zero-terminated normal text string
BUSY_OFF =$0C ; turn off "busy" indicataor
BUSY_ON =$0D ; turn on "busy" indicator
FIND_PIXEL =$80 ; Find location in RAM for a pixel on the GFX screen
; WARNING! Page must be set to 4 before this function
; is called! Do "ld a,4" and "out (5),a" do to that.
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; Data Locations
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
KEY_0 =$8000 ; translated scancode of last key, but 0 if gotten
KEY_1 =$8001 ; translated scancode of key down now
KEY_2 =$8002 ; same as 8001, but $FF if more than one key is down
KEY_STAT =$8004 ; bit 2 set = key down now
LAST_KEY =$8006 ; last key pressed
CONTRAST =$8007 ; contrast
CURSOR_ROW =$800C ; text cursor row
CURSOR_COL =$800D ; text cursor column
CURSOR_LET =$800E ; letter under text cursor
BUSY_COUNTER =$8080 ; counter for busy indicator
BUSY_BITMAP =$8081 ; bitmap for busy indicator
CURR_INPUT =$80C6 ; -> current home-screen input
BYTES_USED =$80CC ; # of used user memory (Add to 80C8 to find first
; byte of free memory)
TEXT_MEM =$80DF ; text memory
CURSOR_ROW2 =$800C ; text cursor row
CURSOR_COL2 =$800D ; text cursor column
CHECKSUM =$81BE ; memory checksum from 8BF7 to FA6F
CURSOR_X =$8333 ; x value of cursor
CURSOR_Y =$8334 ; y value of cursor
_IY_TABLE =$8346 ; where IY usually points
GRAPH_MEM =$8641 ; graphics memory
TEXT_MEM2 =$8A6B ; secondary text memory
USER_MEM =$8B1B ; -> start of user memory
FIXED_POINT =$8B3A ; fixed-point decimal place (FFh for floating point)
VAT_END =$8BEB ; -> one byte before end of VAT (backwards)
VAT_START =$FA6F ; start of VAT
VIDEO_MEM =$FC00 ; video memory
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; Key Scancode definitions
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; Function Character
K_NOKEY =$00 ;No key
K_DOWN =$01 ;Down
K_LEFT =$02 ;Left
K_RIGHT =$03 ;Right
K_UP =$04 ;Up
K_ENTER =$09 ;Enter
K_PLUS =$0A ;+ X
K_MINUS =$0B ;- T
K_STAR =$0C ;* O
K_SLASH =$0D ;/ J
K_RAISE =$0E ;^ E
K_CLEAR =$0F ;Clear
K_SIGN =$11 ;(-) Space
K_3 =$12 ;3 W
K_6 =$13 ;6 S
K_9 =$14 ;9 N
K_RIGHTPAR =$15 ;) I
K_TAN =$16 ;Tan D
K_CUSTOM =$17 ;Custom
K_DOT =$19 ;. Z
K_2 =$1A ;2 V
K_5 =$1B ;5 R
K_8 =$1C ;8 M
K_LEFTPAR =$1D ;( H
K_COS =$1E ;Cos C
K_PRGM =$1F ;Prgm
K_DEL =$20 ;Del
K_0 =$21 ;0 Y
K_1 =$22 ;1 U
K_4 =$23 ;4 Q
K_7 =$24 ;7 L
K_EE =$25 ;EE G
K_SIN =$26 ;Sin B
K_STAT =$27 ;Stat
K_XVAR =$28 ;x-Var x
K_ON =$29 ;On
K_STO =$2A ;Sto =
K_COMMA =$2B ;, P
K_SQUARE =$2C ;x^2 K
K_LN =$2D ;Ln F
K_LOG =$2E ;Log A
K_GRAPH =$2F ;Graph
K_ALPHA =$30 ;Alpha
K_F5 =$31 ;F5
K_F4 =$32 ;F4
K_F3 =$33 ;F3
K_F2 =$34 ;F2
K_F1 =$35 ;F1
K_SECOND =$36 ;2nd
K_EXIT =$37 ;EXIT
K_MORE =$38 ;MORE