Sitenotice: 11/29/2018: The wiki is back. It turns out, some anti-virus product on my web server had an issue with the latest version of PHP. My server techs have resolved this issue, and things should be working again. During the investigation, I did restore to a backup from September. There is a chance that any changes done since then were lost, but I do not recall any edits. --OS-9 Al
8/30/2016: Massive re-work is being done on the InfoBox Templates. Read that page to keep up with the plan for that, and adding better keyword tags (categories) to all the pages. --OS-9 Al (talk) 15:28, 31 August 2016 (CDT)
Inkey.asm Level 2
*************** * INKEY - a subroutine for BASIC09 by Robert Doggett * Called by: RUN INKEY(StrVar) * RUN INKEY(Path, StrVar) * Inkey determines if a key has been typed on the given path * (Standard Input if not specified), and if so, returns the next * character in the String Variable. If no key has been type, the * null string is returned. If a path is specified, it must be * either type BYTE or INTEGER. NAM INKEY IFP1 USE /D0/DEFS/OS9DEFS ENDC TYPE set SBRTN+OBJCT REVS set REENT+1 mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE InKeyNam fcs "Inkey" org 0 Parameters Return rmb 2 Return addr of caller PCount rmb 2 Num of params following Param1 rmb 2 1st param addr Length1 rmb 2 size Param2 rmb 2 2nd param addr Length2 rmb 2 size E$Param equ $38 SIZE equ * InKeyEnt leax Param1,S ldd PCount,S Get parameter count cmpd #1 just one parameter? beq InKey20 ..Yes; default path A=0 cmpd #2 Are there two params? bne ParamErr No, abort ldd [Param1,S] Get path number ldx Length1,S leax -1,X byte available? beq InKey10 ..Yes; (A)=Path number leax -1,X Integer? bne ParamErr ..No; abort tfr B,A InKey10 leax Param2,S InKey20 ldu 2,X length of string ldx 0,X addr of string ldb #$FF stb 0,X Initialize to null str cmpu #2 at least two-byte str? blo InKey30 ..No stb 1,X put str terminator InKey30 ldb #SS.Ready OS9 I$GetStt is there an data ready? bcs InKey90 ..No; exit ldy #1 OS9 I$Read Read one byte rts InKey90 cmpb #E$NotRdy bne InKeyErr rts (carry clear) ParamErr ldb #E$Param Parameter Error InKeyErr coma rts emod InKeyEnd equ *