A83: > How to do INPUT <
[Prev][Next][Index][Thread]
A83: > How to do INPUT <
Allright, I'll tell you... But if you use this in your programs, I would be
very grateful if you mentioned my name (as a credit, greeting or whatever)
because it wasn't the easiest thing to figure out...
---
Getting String Input
==============================================================
by Linus Akesson
First of all, we put a prompt at 821ch. Max 16 chars.
ld de,821ch ;put the prompt here
ld hl,prompt
ld bc,prompt_len ;length of prompt, max = 16
ldir
Then we call PGMIO_EXEC with the String Input command.
ld a,0 ;code for STRING input
ld (ASM_IND_CALL),a
call PGMIO_EXEC ;defined in squish.inc
Now OP1 contains the name of a temporary string variable. The string contains
tokens, but if you're only interested in alphanumeric input that doesn't
matter, because uppercase letters and digits are still ascii.
This routine is an example of how to display the string without checking for
tokens line sin(.
call _CHKFINDSYM
ex de,hl ;hl is start of string data
ld c,(hl)
inc hl
ld b,(hl)
inc hl ;bc is length of string
ld a,b
or c ;length = 0 ?
ret z ;return if so
loop:
push bc
ld a,(hl) ;get a character
call _putc
pop bc
dec bc
ld a,b
or c ;done yet?
jr nz,loop ;no -> loop back
call _newline
ret
And ofcourse:
prompt: .db "Inp:",0
prompt_len = $-prompt
---
Getting Numeric Input
==============================================================
by Linus Akesson
This is done in about the same way. Start by putting the
prompt at 821ch:
ld de,821ch ;put the prompt here
ld hl,prompt
ld bc,prompt_len ;length of prompt, max = 16
ldir
Then call PGMIO_EXEC, but with a different command in ASM_IND_CALL:
ld a,1 ;code for NUMERIC input
ld (ASM_IND_CALL),a
call PGMIO_EXEC
The input is automatically parsed as an expression, and the result is placed
in OP1.
call _formDisp ;display it
ret
prompt: .db "Inp:",0
prompt_len = $-prompt
---
Now go on and write a killer application,
Linus
Follow-Ups: