Compucolor.org – Virtual Media

Listing of file='KEYBRD.BAS;01' on disk='vmedia/colorcue-sector.ccvf'

100 REM  **** GET CHARACTER FROM KEYBOARD ****
110 DATA  245,229,197,1,206,40,205,36,0,202,-1,-1,11
120 DATA  121,176,194,-1,-1,29,194,-1,-1,17,255,255,195
130 DATA  -1,-1,95,175,87,175,50,255,129,193,225,241,201
140 REM  ** FIND END OF BASIC RAM **
150 QT =  256* PEEK (32941)+ PEEK (32940)
160 REM
170 REM  ** CHECK TO SEE IF IT'S ALREADY LOADED **
180 IF  QT> 65503 THEN  250: REM  ** IT'S NOT LOADED **
190 RESTORE  110
200 FOR  I= 1 TO  39: READ  QB
210 IF  QB> = 0 AND  QB< >  PEEK (QT+ I) THEN  I= 39: QB= 999
220 NEXT  I
230 IF  QB< 256 THEN  390: REM  ** IT'S LOADED, JUST SET JUMP **
240 REM  ** COME HERE TO LOAD PROGRAM **
250 QT= QT- 39:RESTORE  110
260 REM  ** LOAD MACHINE INSTRUCTIONS **
270 FOR  I= 1 TO  39: READ  QB: POKE  (QT+ I),QB- (QB< 0): NEXT  I
280 REM  ** LOAD ADDRESSES **
290 QZ =  QT+ 29:QA =  QT+ 11:GOSUB  350
300 QZ =  QT+ 7:QA =  QT+ 17:GOSUB  350
310 QZ =  QT+ 4:QA =  QT+ 21:GOSUB  350
320 QZ =  QT+ 32:QA =  QT+ 27:GOSUB  350
330 GOTO  370
340 REM  ** LOAD ADDRESS QZ AT ADDRESSES QA, QA+1 **
350 ZZ =  INT (QZ/ 256): POKE  QA,QZ- 256* ZZ:POKE  QA+ 1,ZZ:RETURN
360 REM  ** CHANGE END OF BASIC RAM **
370 QZ =  QT:QA =  32940:GOSUB  350
380 REM  ** LOAD BASIC JUMP LOCATION **
390 QZ =  QT+ 1:QA =  33283:GOSUB  350
400 POKE  33282,195:REM  ** LOAD JUMP **
410 CLEAR  200:REM  ** ALL DONE **
420 REM  ** USER PROGRAM STARTS HERE **
430 REM  THREE EXAMPLES ARE INCLUDED BELOW
440 REM
450 PRINT  "THIS IS AN EXAMPLE OF READING WITH NO ECHO."
460 PRINT  "TYPE SOMETHING THEN HIT <RETURN> TO SEE WHAT IT WAS."
470 Y =  CALL (0):IF  Y= - 1 THEN  470:REM  ** DON'T LET IT TIMEOUT **
480 IF  Y= 13 THEN  510:REM  ** IF RETURN IS HIT - ALL DONE **
490 A$ =  A$+ CHR$ (Y):REM  ** ADD CHARACTER TO STRING **
500 GOTO  470:REM  ** GO GET NEXT CHARACTER **
510 PRINT  A$
520 PRINT : PRINT  "IN THE NEXT EXAMPLE, THE COMPUTER WILL WAIT"
530 PRINT  "FOR 5 SECONDS AND THEN PRINT A TIMEOUT MESSAGE IF"
540 PRINT  "YOU HAVE NOT TYPED ANYTHING. IT WILL REMAIN IN A"
550 PRINT  "LOOP PRINTING EVERYTHING YOU TYPE ON A NEW LINE"
560 PRINT  "UNTIL YOU LEAVE THE KEYBOARD ALONE FOR 5 SECONDS."
565 INPUT  "TYPE <RETURN> WHEN YOU ARE READY TO START:";A$
570 Y =  CALL (5)
580 IF  Y= - 1 GOTO  600
590 PRINT  CHR$ (Y):GOTO  570
600 PRINT  "5 SECONDS EXPIRED"
610 PRINT :PRINT  "END OF EXAMPLES"
650 END