From: HAND-HELD-COMPUTER
      EPSON HX-20 Software
      ASSEMBLER
      DISASSEMBLER
      page '70'

HC-20 PROTOCOL
CREATED  BY  KENJI AKAHANE
REVISION     8-2
DATE         03.04.1982
UPDATE       04.20.1982
UPDATE       11.19,1982
FILE         PROTOCOL HX1D

NOTE. UPDATE MARK IS 72 COLUMN '%'. REVISION B
NOTE. UPDATE MARK IS 72 COLUMN '@'. REVISION C

CP/NET LOGICAL MESSAGE SPECIFICATION

NOTES:  MM = MASTER ID
        SS = SLAVE ID
        XX = DON'T CARE BYTE
        NN = VALUE SPECIFIED

        ALL NUMERIC VALUES ARE IN HEXADECIMAL

 FMT  DID  SID  FNC  SIZ      MSG / FUNCTION NAME
---------------------------------------------------------------------------
                              SYSTEM RESET:
 00   MM   SS   00   00       00-00 = XX
 01   SS   MM   00   00       00-00 = 00

                              CONSOLE INPUT:
 00   MM   SS   01   00       00-00 = XX
 01   SS   MM   01   00       00-00 = 00

                              CONSOLE OUTPUT:
 00   MM   SS   02   00       00-00 = XX
 01   SS   MM   02   00       00-00 = CHARACTER INPUT

                              RAW CONSOLE INPUT:
 00   MM   SS   03   00       00-00 = MASTER CONSOLE #
 01   SS   MM   03   00       00-00 = CHARACTER INPUT

                              RAW CONSOLE OUTPUT:
 00   MM   SS   04   00       00-00 = MASTER CONSOLE #
                              00-00 = CHARACTER TO OUTPUT
 01   SS   MM   04   00       00-00 = 00

                              LIST PUTPUT:
 00   MM   SS   05   00       00-00 = MASTER LIST #
                              01-NN = CHARACTER TO LIST DEVICE
                                       (NN = 01 TO 80)
 01   SS   MM   05   00       00-00 = 00

                              DIRECT CONSOLE I/O:
 00   MM   SS   06   00       00-00 = XX
 01   SS   MM   06   00       00-00 = 00


GET I/O BYTE: 00 MM SS 07 00 00-00 = XX 01 SS MM 08 00 00-00 = 00 SET I/O BYTE: 00 MM SS 08 00 00-00 = XX 01 SS MM 08 00 00-00 = 00 PRINT STRING: 00 MM SS 09 00 00-00 = XX 01 SS MM 09 00 00-00 = 00 READ CONSOLE BUFFER: 00 MM SS 0A 00 00-00 = XX 01 SS MM 0A 00 00-00 = 00 GET CONSOLE STATUS: 00 MM SS 0B 00 00-00 = MASTER CONSOLE # 01 SS MM 0B 00 00-00 = CONSOLE STATUS BYTE RETURN VERSION NUMBER: 00 MM SS 0C 00 00-00 = XX 01 SS MM 0C 00 00-00 = 00 RESET DISK SYSTEM: 00 MM SS 0D 00 00-00 = XX 01 SS MM 0D 00 00-00 = 00 SELECT DISK: 00 MM SS 0E 00 00-00 = SELECTED DISK 01 SS MM 0E 00 00-00 = RETURN CODE OPEN FILE: 00 MM SS 0F 0E 00-01 = FCB ADDRESS IN SLAVE 02-02 = DRIVE CODE 03-0A = FILE NAME 0B-0D = FILE TYPE 0E-0E = EXTEND NUMBER 01 SS MM 0F 00 00-00 = DIRECTORY CODE CLOSE FILE: 00 MM SS 10 01 00-00 = FCB ADDRESS IN SLAVE 01 SS MM 10 00 00-00 = DIRECTORY CODE SEARCH FOR FIRST: 00 MM SS 11 0C 00-00 = DRIVE CODE 01-08 = FILE NAME 09-0B = FILE TYPE 0C-0C = EXTEND NUMBER 01 SS MM 11 00 00-00 = DIRECTORY CODE 01-20 = DIRECTORY FCB ENTRY SEARCH FOR NEXT: 00 MM SS 12 01 00-00 = XX 01 SS MM 12 00 00-00 = DIRECTORY CODE 01-20 = DIRECTORY FCB ENTRY
DELETE FILE: 00 MM SS 13 0C 00-00 = DRIVE CODE 01-08 = FILE NAME 09-0B = FILE TYPE 0C-0C = EXTEND NUMBER 01 SS MM 13 00 00-00 = DIRECTORY CODE READ SEQUENTIAL: 00 MM SS 14 03 00-01 = FCB ADDRESS IN SLAVE 02-02 = EXTEND NUMBER 03-03 = CURRENT RECORD 01 SS MM 14 82 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-81 = SECTOR OF DATA READ 82-82 = RETURN CODE WRITE SEQUENTIAL: 00 MM SS 15 83 00-01 = FCB ADDRESS IN SLAVE 02-02 = EXTEND NUMBER 03-03 = CURRENT RECORD 04-83 = SECTOR OF DATA TO WRITE 01 SS MM 15 02 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-02 = RETURN CODE MAKE FILE: 00 MM SS 16 0E 00-01 = FCB ADDRESS IN SLAVE 02-02 = DRIVE CODE 03-0A = FILE NAME 0B-0D = FILE TYPE 0E-0E = EXTEND NUMBER 01 SS MM 16 00 00-00 = DIRECTORY CODE RENAME FILE: 00 MM SS 17 1F 00-00 = DRIVE CODE 01-08 = FILE NAME 09-0B = FILE TYPE 0C-0C = EXTEND NUMBER 0D-0D = S1 (NOT USED) 0E-0E = S2 (NOT USED) 0F-0F = RECORD COUNT (NOT USED) 10-10 = DRIVE CODE 11-18 = FILE NAME 19-1B = FILE TYPE 1C-1C = EXTEND NUMBER 1D-1D = S1 (NOT USED) 1E-1E = S2 (NOT USED) 1F-1F = RECORD COUNT (NOT USED) 01 SS MM 17 00 00-00 = DIRECTORY CODE
RETURN LOGIN VECTOR: 00 MM SS 18 00 00-00 = XX 01 SS MM 18 00 00-00 = 00 RETRUN CURRENT DISK: 00 MM SS 19 0C 00-00 = XX 01 SS MM 19 00 00-00 = 00 SET DMA ADDRESS: 00 MM SS 1A 00 00-00 = XX 01 SS MM 1A 00 00-00 = 00 GET ALLOCATION VECTOR ADDRESS: 00 MM SS 1B 00 00-00 = XX 01 SS MM 1B 00 00-00 = 00 WRITE PROTECT DISK: 00 MM SS 1C 00 00-00 = XX 01 SS MM 1C 00 00-00 = 00 GET R/O VECTOR: 00 MM SS 1D 00 00-00 = XX 01 SS MM 1D 00 00-00 = 00 SET FILE ATTRIBUTES: 00 MM SS 1E 0C 00-00 = DRIVE CODES 01-08 = FILE NAME 09-0B = FILE TYPE 0C-0C = EXTEND NUMBER 01 SS MM 1E 00 00-00 = 00 GET DISK PARAMETER ADDRESS 00 MM SS 1F 00 00-00 = XX 01 SS MM 1F 00 00-00 = 00 SET/GET USER CODE: 00 MM SS 20 00 00-00 = SET/GET CODE 01 SS MM 20 00 00-00 = CURRENT CODE (IF GET) READ RANDOM 00 MM SS 21 04 00-01 = FCB ADDRESS IN SLAVE 02-04 = R0,R1,R2 RANDOM RECORD # 01 SS MM 21 82 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-81 = SECTOR OF DATA READ 82-84 = RETURN CODE WRITE RANDOM: 00 MM SS 22 84 00-01 = FCB ADDRESS IN SLAVE 02-81 = SECTOR OF DATA TO WRITE 82-84 = R0,R1,R2 RANDOM RECORD # 01 SS MM 22 02 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-02 = RETURN CODE COMPUTE FILE SIZE: 00 MM SS 23 01 00-01 = FCB ADDRESS IN SLAVE 01 SS MM 23 05 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-04 = R0,R1,R2 RANDOM RECORD # 05-05 = RETURN CODE SET RANDOM RECORD 00 MM SS 24 03 00-01 = FCB ADDRESS IN SLAVE 02-02 = EXTEND NUMBER 03-03 = CURRENT NUMBER 01 SS MM 24 03 00-02 = R0,R1,R2 RANDOM RECORD # 03-03 = 00
RESET DRIVE: 00 MM SS 25 01 00-01 = DRIVE VECTOR 01 SS MM 25 00 00-00 = RETURN CODE ACCESS DRIVE: 00 MM SS 26 01 00-01 = DRIVE VECTOR 01 SS MM 26 00 00-00 = 0 FREE DRIVE: 00 MM SS 27 01 00-01 = DRIVE VECTOR 01 SS MM 27 00 00-00 = 0 WRITE RANDOM WITH ZERO FILL: 00 MM SS 28 84 00-01 = FCB ADDRESS IN SLAVE 02-81 = SECTOR OF DATA TO WRITE 82-84 = R0,R1,R2 RANDOM RECORD # 01 SS MM 28 02 00-00 = EXTEND NUMBER 01-01 = CURRENT RECORD 02-02 = RETURN CODE
HC-20 SERIAL NETWORK PROTOCOL 1. MASTER - SLAVE HANDSHAKE SOURCE DESTINATION COMMENT ENQURE TO DESTINATION DEVICE (EOT) ---> P1 ---> DID ---> SID ---> ENQ ---> <--- ACK SOH ---> SEND HEADER (FUNCTION) FMT ---> DID ---> SID ---> FNC ---> SIZ ---> HCS ---> <--- ACK (NAK), (WAK) STX ---> DB0 ---> DB1 ---> . ---> . ---> DBN ---> ETX ---> CKS ---> <--- ACK, (NAK) (EOT) --->
2. NET WORK RS232C 8-BIT STANDARD PROTOCOL -------------------------------------- -------------- | FMT | DID | SID | FNC | SIZ | MSG | -------------------------------------- -------------- FMT = MESSAGE FORMAT CODE DID = MESSAGE DESTINATION PROCESSOR ID SID = MESSAGE SOURCE PROCESSOR ID FNC = FUNCTION CODE SIZ = DATA FIELD LENGTH - 1 MSG = ACTUAL MESSAGE, SIZ + 1 BYTES LONG MESSAGE FIELD LENGTH TABLE FMT CODE FMT DID SID FNC SIZ MSG COMMENT 00 1 1 1 1 1 1-256 PREFERRED FORMAT 01 1 1 1 1 1 1-256 RETURNED RESULT 02 1 1 1 1 2 1-65536 (NOT SUPPORTED) 03 1 1 1 1 2 1-65536 (NOT SUPPORTED) 04 2 2 2 1 1 1-256 (NOT SUPPORTED) 05 2 2 2 1 1 1-256 (NOT SUPPORTED) 06 2 2 2 1 2 1-65536 (NOT SUPPORTED) 07 2 2 2 1 2 1-65536 (NOT SUPPORTED) CONTROL CODES SOH = 01 STX = 02 ETX = 03 EOT = 04 ENQ = 05 ACK = 06 DLE = 10 NAK = 15 WAK = DLE ; (1F 3B) ENQ PROCEDURE (A): FROM MASTER TO SLAVE 0 (EOT) = END TRANSMIT 1 P1 = POLLING/SELECT FUNCTION (00:SELECT 80:POLLING) SUPORT SELECT ONLY 2 DID = SLAVE SELECTED DEVICE ID 3 SID = MASTER DEVICE ID 4 ENQ (B); FROM SLAVE TO MASTER 1 ACK HEADING PROCEDURE (A): FROM MAIN TO SLAVE 1 SOH = 2 FMT = (00) 3 DID = SELECTED SLAVE ID 4 SID = MASTER ID 5 FNC = FUNCTION CODE 6 SIZ = SIZE 7 HCS = CHECKSUM OF HEADER (COMPLEMENT OF 'SOH-SIZ')
(B): FROM SLAVE TO MASTER 1 ACK = IF RECIEVED CORRECTLY, AND IS ABLE TO RECIVE TEXT THEN 'ACK' IF RECIEVED CORRECTLY, BUT ISN'T ABLE TO RECIVE TEXT THEN 'WAK' IF RECIEVED NOT CORRECTLY, THEN 'NAK' (C): FROM MASTER TO SLAVE IF RECIEVED CODE FROM SLAVE IS 'ACK' GOTO 'SEND TEXT' IF RECIEVED CODE IS 'WAK', WAIT 100 MILI SEC, THEN GOTO (A), IF RECIEVED CODE IS 'NAK', GOTO (A) IF RECIEVED CODE IS NOT 'ACK', 'NAK', EITHER 'WAK', OR NOT RECIEVED ANSWER, MASTER CPU SEND 'ENQ', THEN SLAVE CPU SEND (ACK:'WAK', 'ACK' ), THEN SLAVE SEND (ACK:'WAK', 'NAK', 'ACK') AGAIN. SEND TEXT PROCEDURE (A): FROM MASTER TO SLAVE 1 STX 2 DATA BYTE 0 3 DATA BYTE 1 . . N DATA BYTE N-2 N+1 ETX N+2 CKS = CHECKSUM (STX --- ETX) (EOT) (B): FROM SLAVE TO MASTER 1 ACK = IF RECIEVED CORRECTLY, AND IS ABLE TO RECIVE TEXT THEN 'ACK' IF RECIEVED CORRECTLY, BUT ISN'T ABLE TO RECIVE TEXT THEN 'WAK' IF RECIEVED NOT CORRECTLY, THEN 'NAK'. (C): FROM MASTER TO SLAVE IF RECIEVED CODE FROM SLAVE IS 'ACK' GOTO 'SEND TEXT' IF RECIEVED CODE IS 'WAK', WAIT 100 MILI SEC, THEN GOTO (A), IF RECIEVED CODE IS 'NAK', GOTO (A) IF RECIEVED CODE IS NOT 'ACK' EITHER 'NAK' OR NOT RECIEVED ANSWER, SEND SLAVE 'ENQ', THEN SLAVE SEND (ACK: 'NAK', 'ACK') TO MASTER AGAIN. NOTE. TIME OUT = 100 MILI SEC. ONCE MASTER CPU SELECT SLAVE CPU, UNTIL 'EOT' CODE IS SEND TO SLAVE CPU, MASTER-SLAVE CONNECTION IS NOT CUT. IF CURRENR HEADER IS SAME AS LAST HEADER, CURRENT HEADER IS ABLE TO BE OMIT.
HX-20 ORIGINAL COMMANDS NOTE. HX-20 ORIGINAL FNC COMMANDS ARE FROM 80H TO FFH. IF THE BIT6 OF FNC IS 0, THE COMMAND HAS TO RECIEVE THE ANSWER FROM DEVICE. IF BIT6 IS 0, DESTINATION DEVICE MAY OMIT THE ANSWER. (1) DISK SEE TF FUNCTION (TF function not in booklet)
4 CRT COMMAND SEE SCREEN DOCUMENT.
DOCUMENT OF SCREEN COMMAND FILE NAME SCREEN HX1D CREATED 06.10.1982 AUTHOR K. AKAHANE, M. HANAOKA UPDATE 06.23.1982 K. A SCREEN COMMAND ENTRY POINT : DISCON (#FF5E) PRAMETER : 1 ACCX : PACKET TOP ADDRESS. 2 PACKET 0 : FUNCTION 1 : DATA 1 . . . . N : DATA N 3 NOTE IF YOU USE CRT THEN PACKET NEED MORE 4 BYTES AREA FROM FUNCTION-4 TO FUNCTION-1. BUT THEN ACCX POINTS FUNCTION PACKET ADDRESS. RETURN : 1 PACKET DATA IS SET FROM NEXT ADDRESS OF FUNCTION. REGISTER : PRESERVD ACCX AND ACCB
FMT DID SID FNC SIZ MSG / FUNCTION NAME (L:LCD C:CRT) ------------------------------------------------------------------------- SCREEN DEVICE SELECT(L.C) 00 MM SS 84 00 00-00 = DEVICE NO. (CRT:30 LCD:22) 01 SS MM 84 00 00-00 = ERROR CODE. 00 : NON ERROR. FE : DEVICE NOT READY. FF : DEVICE NAME NOT CORRECT. INITIALIZE SCREEN DEVICE.(C) 00 MM SS 85 00 00-00 = XX 01 SS MM 85 00 00-00 = ERROR CODE. 00 : NON ERROR. FF : I/O ERROR. CHECK SCREEN DEVICE AND GET SOME PARAMETERS. (L.C) 00 MM SS 86 00 00-00: XX 01 SS MM 86 00 00-00: SCREEN DEVICE NO. 01-02: SCREEN TOP ADDRESS.(CRT) 03-04: MAX SCREEN SIZE.(CRT) SET SCREEN SIZE (L.C) 00 MM SS 87 03 00-00 = SCREEN WIDTH OF VIRTUAL SCREEN 01-01 = SCREEN DEPTH OF VIRTUAL SCREEN 02-03 = TOP ADDRESS OF VIRTUAL SCREEN (NOT USED) 01 SS MM 87 00 00-00 = ERROR CODE. 00 : NON ERROR. FF : SCREEN SIZE IS NOT CORRECT. FE : ADDRESS OF TOP OF SCREEN IS NOT CORRECT. READ SCREEN SIZE (L.C) 00 MM SS 88 00 00-00 = XX 01 SS MM 88 01 00-00 = SCREEN WIDTH 01-01 = SCREEN DEPTH GET PHYSICAL SCREEN SIZE (L.C) 00 MM SS 89 00 00-00 = XX 01 SS MM 89 01 00-00 = SCREEN WIDTH 01-01 = SCREEN DEPTH SET THE PYSICAL SCREEN POINTER ON THE VIRTUAL SCREEN (L.C) 00 MM SS C0 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) 01 SS MM C0 00 00-00 = XX GET THE PYSICAL SCREEN POINTER ON THE VIRTUAL SCREEN (L.C) 00 MM SS 8A 00 00-00 = XX 01 SS MM 8A 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y)
?SET READ POINTER (L.C) 00 MM SS C1 01 00-00 = COORDINATE OF X IN THE VIRTUAL SCREEN 01-01 = COORDINATE OF Y 01 SS MM C1 00 00-00 = XX ?GET READ POINTER (L.C) 00 MM SS 8B 00 00-00 = XX 01 SS MM 8B 01 00-00 = COORDINATE OF X IN THE VIRTUAL SCREEN 01-01 = COORDINATE OF Y SET CURSOR POSITION ON THE VIRTUAL SCREEN (L.C) 00 MM SS C2 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) 01 SS MM C2 00 00-00 = XX GET CURSOR POSITION ON THE VIRTUAL SCREEN (L.C) 00 MM SS 8C 00 00-00 = XX 01 SS MM 8C 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) SET CURSOR MARGIN (L.C) 00 MM SS C3 00 00-00 = MARGIN 01 SS MM C3 00 00-00 = XX GET CURSOR MARGIN (L.C) 00 MM SS 8D 00 00-00 = XX 01 SS MM 8D 00 00-00 = MARGIN SET SCROLL STEP (L.C) 00 MM SS C4 01 00-00 = HORIZONTAL SCROLL STEP 01-01 = VERTICAL SCROLL STEP 01 SS MM C4 00 00-00 = XX GET SCROLL STEP (L.C) 00 MM SS 8E 00 00-00 = XX 01 SS MM 8E 01 00-00 = HORIZONTAL SCROLL STEP 01-01 = VERTICAL SCROLL STEP SET LIST FLAG (L.C) 00 MM SS C5 00 00-00 = XX 01 SS MM C5 00 00-00 = XX RESET LIST FLAG (L.C) 00 MM SS C6 00 00-00 = XX 01 SS MM C6 00 00-00 = XX
SET POINT TO DISPLAY (L.C) 00 MM SS C7 04 00-01 = COORDINATE (X) 02-03 = COORDINATE (Y) 04-04 = COLOR CODE 01 SS MM C7 00 00-00 = XX GET POINT ON THE DISPLAY (L.C) 00 MM SS 8F 03 00-01 = COORDINATE (X) 02-03 = COORDINATE (Y) 01 SS MM 8F 00 00-00 = COLOR CODE DRAW LINE TO DISPLAY (L.C) 00 MM SS C8 08 00-01 = COORDINATE (X) OF START POINT 02-03 = COORDINATE (Y) OF START POINT 04-05 = COORDINATE (Y) OF END POINT 06-07 = COORDINATE (Y) OF END POINT 08-08 = COLOR CODE (C) 01 SS MM C8 00 00-00 = XX ?READ CHARACTER ON THE READ POINTER (L.C) (ERASED 1982/05/08) 00 MM SS 90 00 00-00 = XX 01 SS MM 90 00 00-00 = READ CHARACTER READ THE EXTEND OF CURRENT LINE (L.C) 00 MM SS 91 00 00-00 = XX 01 SS MM 91 03 00-00 = FIRST LINE NUMBER WHICH HAS CURRENT LINE. 01-01 = LAST LINE NUMBER WHICH HAS CURRENT LINE. 02-02 = LAST COORDINATE (X) 03-03 = LAST COORDINATE (Y) SET LINE TERMINATE POSITION (L.C) 00 MM SS C9 00 00-00 = LINE NUMBER 01 SS MM C9 00 00-00 = XX WRITE ONE CHARACTER TO VIRTUAL SCREEN (L.C) 00 MM SS 92 00 00-00 = CHARACTER CODE 01 SS MM 92 01 00-00 = CURSOR POSITION X 01-01 = CURSOR POSITION Y CLEAR THE GRAPHICS SCREEN. (L.C) 00 MM SS CA 00 00-00 = BACK GROUND COLOR (C) 01 SS MM CA 00 00-00 = XX SET SCROLL SPEED (C) 00 MM SS CB 00 00-00 = SCROLL SPEED (0-9) 01 SS MM CB 00 00-00 = XX
**SET DISPLAY MODE (C) % 00 MM SS 93 02 00-00 = CHARACTER MODE. % (00:NOT USE 01:ACTIVE) % 01-01 = GRAPHIC MODE. % (00:NOT USE 01:GRP0 01:GRP1) % 02-02 = BACKGROUND COLOR % (0:GREEN % 1:YELLOW % 2:BLUE % 3:RED % 4:WHITE % 5:SYIAN % 6:MAGENTA % 7:ORANGE ) % 01 SS MM 93 00 00-00 = ERROR CODE % (00:NON ERROR FF:ERROR) % ?SET CURSOR POSITION ON PHISICAL SCREEN (C) 00 MM SS CC 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) 01 SS MM CC 00 00-00 = XX ?GET CURSOR POSITION ON PHYSICAL SCREEN (C) 00 MM SS 94 00 00-00 = XX 01 SS MM 94 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) WRITE ONE CHARACTER ON ACC-POSITION ON PHYSICAL SCREEN (C) 00 MM SS CD 01 00-00 = CHARACTER CODE 01-01 = COLOR CODE. 01 SS MM CD 00 00-00 = XX SET ACC-POSITION ON PHYSICAL SCREEN(C) 00 MM SS CE 01 00-00 = COORDINATE (X) 01-01 = COORDINATE (Y) 01 SS MM CE 00 00-00 = XX READ ONE CHARACTER ON ACC-POSITION ON PHYSICAL SCREEN (C) 00 MM SS 95 00 00-00 = XX 01 SS MM 95 01 00-00 = CHARACTER CODE 01-01 = COLOR CODE. COLOR SET SELECT (C) % 00 MM SS CF 00 00-00 = COLOR SET CODE. % (0:COLOR SET 0 1:COLOR SET 1) % 01 SS MM CF 00 00-00 = XX % SET CURSOR MODE (C) 00 MM SS D0 00 00-00 = CURSUR MODE (0:ON 1:OFF) 01 SS MM D0 00 00-00 = XX ?READ ONE LINE'S (32 BYTES) CHARACTERS ON READ POINTER (C) 00 MM SS 96 00 00-00 = XX 01 SS MM 96 20 CHARACTER CODE
?SET GRAPHIC CHARACTER FONT (C) 00 MM SS D1 06 00-00 = CHARACTER CODE 01-06 = CHARACTER FONT PATTERN 01 SS MM D1 01 00-00 = XX ?DRAW CIRCLE (C) 00 MM SS D2 0? 00-0? = 01 SS MM D2 00 00-00 = XX ?PAINT (C) 00 MM SS D3 0? 00-0? = 01 SS MM D3 00 00-00 = XX *** SCREEN NEW COMMAND (1982/05/08) % % READ CHARACTERS FROM VS. (L,C) % 00 MM SS 97 03 00-00 = START X-COORDINATE. % 01-01 = START Y-COORDINATE. % 02-03 = READ CHARACTERS NO. % 01 SS MM 97 NN 00-NN = CHARACTERS WHICH ARE RED. % % WRITE ONE CHARACTER TO VS AND % GET EXTEND OF NEW CURSOR POSITION.(L,C)% 00 MM SS 98 00 00-00 = CHARACTER CODE. % 01 SS MM 98 03 00-00 = CURSOR POSITION X. % 01-01 = CURSOR POSITION Y. % 02-02 = FIRST LINE NO. % 03-03 = LAST LINE NO. % % @