Re: A83: Char Table
[Prev][Next][Index][Thread]
Re: A83: Char Table
> >
> >this comes from the online usgard school by jimmy mardel (of sqrxz
> >fame). this is for the ti-85, but can be ported (the most important
> >thing would be to change the key codes).
> >
> >
> > ; Input routine - made by Jimmy Mårdell 97-03-05
> > ;
> > ; Reads a sentence entered from the keyboard. Only uppercase
> > ; letters and space are allowed. Left arrowkey = backspace.
> > ;
> > ; When calling, HL should point to where the string should
> > ; be stored and A should hold the maximum length of the
> > ; string. Be sure there are enough space (A+1) to store the
> > ; nullterminated string at HL! ($800C) should hold the screen
> > ; position where the string starts.
> > ;
> > ; This input routine will also have a flashing cursor. If you
> > ; don't like it, remove all rows where the explanation starts
> > ; with a *.
> > ;
> > ; IMPORTANT: The input must NOT wrap to a new row! Then it
> > ; will not work properly. The last char on a row should not
> > ; be used either (if cursorcol=0 when calling, the maximum char
> > ; length is 20). If you have a cursor, the two last chars should
> > ; not be used (max length 19 if the screen location starts to
> > ; the far left).
> > ;
> > ; The routine requires one temporary variable, noLet.
> >
> > Input:
> > push bc
> > push de
> > push hl
> > set 2,(iy+12) ; * Turn cursor blinking on
>
> What's the 83 equivelent of this flag
>
set curable,(iy+curflags)
> > ld (noLet),a ; Store the maximum lenght of the string
> > ld e,0 ; E = numbers of letters written so far
> > WaK:
> > ld a,32
> > ld ($800E),a ; * Set "character under cursor" to space
>
> What's the 83 equivelent of this RAM area?
>
either currow or curcol, you will have to look in a ti-83 include file
for that. (ti-85.h, available with zshell)
> > push hl ; * Save HL since GET_KEY destroys HL
> > > call GET_KEY
>
> The 83 equivelent is _GetKey right?
>
yes
> > cp $02 ; $02 = left key
> > jr z,BackSpace
> > cp $09 ; $09 = enter
> > jr z,NameDone
> > cp $11 ; $11 = space
> > jr nz,CheckLetter
> > ld a,32 ; Space is ascii char 32
> > pop hl
> > jr PutLetter ; Put the letter on screen and in memory
> > CheckLetter:
> > ld hl,&Letters ; HL -> letter table
> > ld bc,26 ; 26 letters to check
> > cpir ; Compare A with each letter until match
> > ld d,c ; Then C = the letter. Store in D
> > pop hl ; HL -> current position in string
> > jr nz,WaK ; Wait until valid keystroke
> > ld a,65 ; 65 = ascii char for A
> > add a,d ; Now A=ASCII char for the letter pressed
> > PutLetter:
> > ld c,a
> > ld a,(noLet) ; A = max letters
> > cp e ; Check if max size is reached
> > jr z,WaK ; If so, wait for a new key
> > ld (hl),c ; If not, store the key entered
> > inc hl ; Point to the next byte in the string
> > inc e ; And increase the letter counter
> > ld a,c
> > call TX_CHARPUT ; Show the chars pressed on the screen
>
> Is this _putc or _putmap?
_putc - write char, update cursor
> > jr WaK ; And jump back and wait for a new key
> > BackSpace:
> > pop hl ; HL -> current position in string
> > ld a,e
> > or a ; Check if string size = 0
> > jr z,WaK ; If so, backspace not allowed - repeat
> > res 2,(iy+12) ; * Stopp cursor blinking
> > dec e ; Decrease string size
> > dec hl ; And string pointer
> > push hl
> > ld hl,$800D ; HL -> x cursor position
>
> What's the 83 equivelent ram LOCATION?
>
see above... (corrow or curcol)
> > dec (hl) ; Decrease it
> > ld a,32 ; Overwrite the last letter with a space
> > call TX_CHARPUT ; Put the space over the chars
> > call TX_CHARPUT ; * And over the blinking cursor
> > dec (hl) ; * Decrease the x coordinate twice
> > dec (hl)
> > pop hl
> > set 2,(iy+12) ; * Stopp cursor blinking
> > jr WaK ; Wait for a key
> > NameDone:
> > pop hl ; HL -> current position in string
> > ld (hl),0 ; Put a terminating zero at end of string
> > res 2,(iy+12) ; * Stopp cursor blinking
> > pop hl
> > pop de
> > pop bc
> > ret
> >
> > ; The keycodes of the letters A-Z stored backways
> >
> > Letters:
> > .db $19,$21,$0A,$12,$1A,$22,$0B,$13,$1B,$23,$2B
> > .db $0C,$14,$1C,$24,$2C,$0D,$15,$1D,$25,$2D,$0E
> > .db $16,$1E,$26,$2E
> >
>
> I change these to the 83 GetKey codes, right?
yes you can find thoes in the offical ti docs.
Follow-Ups:
References: