This tutorial will show you how to make a program that will display normal and inverse (white on black) text.
The program below will display normal text on the home screen. The program uses the calls we have already learned, and adds some new ones. In a future tutorial, we will make a program that displays small text.
#define B_CALL(xxxx) rst 28h \ .dw xxxx #define B_JUMP(xxxx) call 50h \ .dw xxxx _clrlcdfull =4540h ;The calls we will be using are defined here or use an include file _homeup =4558h _puts =450Ah CURCOL =800Dh CURROW =800Ch .org 9D95h B_CALL(_clrlcdfull) ;Clear the screen B_CALL(_homeup) ;Bring on the home screen ld a,0 ;Load "a" register as zero ld (CURCOL),a ;Load zero into the y coordinate ld (CURROW),a ;Load zero into the x coordinate ld hl,txtLabel ;Load text from label below B_CALL(_puts) ;Put text on screen B_CALL(_clrlcdfull) ;Clear screen ret ;Return to OS txtLabel: ;the "Label" can be replaced with any name you want as long as you change the one on the top .db "This Program " .db "displays text " .db "on the home " .db "screen. It can " .db "be up to 16 char" .db "long, it can " .db "only be 8 lines " .db "long. ",0 .end END
(CURCOL) - the y coordinate of the cursor
(CURROW) - the x coordinate of the cursor
_puts - Puts the text on the screen. This command will bring the specified text to the screen.
_getkey - Detects a key press on the key pad
ld - z80 instruction fo loading something. In this program, it loads 0 (zero) to the "a" register. The syntax is - ld (register), (value#)
The calculator's memory is where nearly all data is stored. Unfortunately, memory access is relatively slow for the processor. So, when we want the processor to manipulate data, like add two numbers together, we don't want to do it in the memory. Instead, we load the data into special fast memory locations inside the processor itself called registers. In the normal text displaying program (above), the value "0" was saved into the "a" register. The value in the register was then in turn, loaded in to CURCOL and CURROW (the X and Y coordinates of the text). Registers are extremely important! If you don't understand them, I recommend that you read tutorial 4 in Andy S.' tutorials.
Jeez, things just keep getting better. Inverse text is normal font text (white) on a black backround. This program will display the text "TI-83 Plus Asm" in inverse text. All you need to know to display inverse text is loading text coordinates and setting textinverse mode.
#define bcall(xxxx) rst 28h \ .dw xxxx #define bjump(xxxx) call 50h \ .dw xxxx _clrlcdf =4540h _homeup =4558h _puts =450Ah CURCOL =800Dh CURROW =800Ch textinverse =3 ;See the new commands section for more information textflags =5 .org 9D95h bcall(_clrlcdf) bcall(_homeup) set textInverse,(iy+textflags) ;Sets the textinverse mode ld a,0 ;Load 0 to the "a" register ld (CURCOL),a ;Setting Y coordinates ld a,0 ;Loading 0 to the "a" register ld (CURROW),a ;Setting X coordinates ld hl,txtTIAsm ;Display text from the TIAsm label bcall(_puts) ;Put text on screen res textInverse,(iy+textflags) ;Resets the text inverse ret ;Return to OS txtTIAsm: .db " TI-83 Plus Asm ",0 ;Text to be displayed on screen .end END
set - z80 instruction that sets the characteristics of the TI
res - z80 instruction which will reset the characteristic
textinverse - Inverse text mode of the TI
textflags - You don't need to know this yet
Tutorial 8