VolksForth/6502/Apple2/vFORTH38/systemio.fb
2017-04-24 00:25:49 +02:00

1 line
11 KiB
Plaintext
Executable File

\ loadscreen fuer EMUF i/o er14dez88 1 9 +thru \ 65KEY? GETKEY cas16apr06| $C000 Constant KBDDTA | $C010 Constant KBDSTR | $FD0C Constant RDKEY | CODE 65KEY? ( -- FLAG) KBDDTA lda $80 # AND push0a jmp end-code | CODE GETKEY ( -- 8B) RDKEY jsr KBDSTR sta $7F # AND push0a jmp end-code : CURON ( --) $7F EMIT ; : CUROFF ( --) $08 EMIT SPACE $08 EMIT ; : 65KEY ( -- 8B) CURON BEGIN PAUSE 65KEY? UNTIL CUROFF GETKEY ; \ DECODE EXPECT KEYBOARD cas16apr06$08 CONSTANT #BS $0D CONSTANT #CR $1B CONSTANT #ESC : 65DECODE ( ADDR CNT1 KEY -- ADDR CNT2) #BS CASE? IF DUP IF DEL 1- THEN EXIT THEN #CR CASE? IF DUP SPAN ! EXIT THEN >R 2DUP + R@ SWAP C! R> EMIT 1+ ; : 65EXPECT ( ADDR LEN1 -- ) SPAN ! 0 BEGIN DUP SPAN @ U< WHILE KEY DECODE REPEAT 2DROP SPACE ; INPUT: KEYBOARD [ HERE INPUT ! ] 65KEY 65KEY? 65DECODE 65EXPECT [ \ (emit cas11apr06 | $FDED Constant COUT Code (emit ( 8b -- ) SP X) lda $80 # ORA COUT jsr (drop jmp end-code \ EMIT CR DEL PAGE AT AT? cas16apr06 | Variable out 0 out ! | &80 Constant c/row : 65emit ( 8b -- ) 1 out +! (emit ; : 65CR #CR 65emit out @ c/row / 1+ c/row * out ! ; : 65DEL CUROFF SPACE CUROFF -2 out +! ; CODE 65PAGE ( --) PHA TXA PHA TYA PHA $FC58 jsr PLA TAY PLA TXA PLA next jmp END-CODE : 65at ( row col -- ) DUP $24 C! OVER $25 C! swap c/row * + out ! ; : 65AT? ( -- row col ) $25 C@ $24 C@ ; \ er14dez88 : 65type ( adr len -- ) bounds ?DO I c@ emit LOOP ; \ TYPE DISPLAY (BYE BP 28MAY85RE) cas16apr06 OUTPUT: DISPLAY [ HERE OUTPUT ! ] 65EMIT 65CR 65TYPE 65DEL 65PAGE 65AT 65AT? [ \ Jump to ProDOS MLI | CODE MLI $BF00 JSR 0 C, 0 , next jmp END-CODE | CREATE QUITPARAM 4 C, 0 , 0 , | : MLI+ ( n -- n+mli ) ['] MLI + ; | : MLI! ( n -- ) MLI+ ! ; | : MLIC! ( n -- ) MLI+ C! ; | : (bye $65 5 MLIC! QUITPARAM 6 MLI! MLI ; \ B/BLK cas16apr06 $400 CONSTANT B/BLK \ cas16apr06 \ (r/w cas16apr06