CHANNEL INFORMATION BLOCKS ========================== Short channel block (first four blocks in CHANS area) IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : Name of channel (ASCII character code) Long channel block (any subsequent block in CHANS) IX+00 (2 bytes): Address of PRINT# routine or #0008 for Interface 1 channel IX+02 (2 bytes): Address of INPUT# routine or #0008 for Interface 1 channel IX+04 (1 byte) : Name of channel (ASCII character code). IX+05 (2 bytes): Address of Interface 1 PRINT# routine or #1234 identifier IX+07 (2 bytes): Address of Interface 1 INPUT# routine or CLOSE# routine IX+09 (2 bytes): Length of channel information block (minimum #000B). IX+0B onwards : Any additional information. CHANNEL SUMMARY --------------- A G N Network U B Binary RS232 H O V VDU C Centronics I P Printer W Window D Display J Q X E K Keyboard R RAM Y F L S Screen Z ZX Printer M Microdrive T Text RS232 CHANNEL "K" - Keyboard ---------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "K" name of channel CHANNEL "S" - Screen -------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "S" name of channel CHANNEL "R" - Internal workspace -------------------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "R" name of channel CHANNEL "P" - Printer --------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "P" name of channel CHANNEL "C" - Centronics printer output --------------------------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "C" name of channel IX+05 (2 bytes): 0 IX+07 (2 bytes): 0 IX+09 (2 bytes): Channel length #000B CHANNEL "M" - Microdrive channel -------------------------------- IX+00 (2 bytes): 0008 Interface 1 hook IX+02 (2 bytes): 0008 Interface 1 hook IX+04 (1 byte) : "M" name of channel IX+05 (2 bytes): Address of PRINT# routine IX+07 (2 bytes): Address of INPUT# routine IX+09 (2 bytes): Channel length .... CHANNEL "N" - Network --------------------- IX+00 (2 bytes): 0008 Interface 1 hook IX+02 (2 bytes): 0008 Interface 1 hook IX+04 (1 byte) : "N" name of channel IX+05 (2 bytes): Address of PRINT# routine IX+07 (2 bytes): Address of INPUT# routine IX+09 (2 bytes): Channel length .... CHANNEL "T" - Text RS232 ------------------------ IX+00 (2 bytes): 0008 Interface 1 hook IX+02 (2 bytes): 0008 Interface 1 hook IX+04 (1 byte) : "T" name of channel IX+05 (2 bytes): Address of PRINT# routine IX+07 (2 bytes): Address of INPUT# routine IX+09 (2 bytes): Channel length #000B CHANNEL "B" - Binary RS232 -------------------------- IX+00 (2 bytes): 0008 Interface 1 hook IX+02 (2 bytes): 0008 Interface 1 hook IX+04 (1 byte) : "B" name of channel IX+05 (2 bytes): Address of PRINT# routine IX+07 (2 bytes): Address of INPUT# routine IX+09 (2 bytes): Channel length #000B CHANNEL "W" WINDOW INFORMATION ------------------------------ ; All window channels: W_OUT EQU #00 ; Address of WINDOW output routine (=WINDOW) W_IN EQU #02 ; Address of WINDOW input routine (=REPORT_J) W_NAME EQU #04 ; Name of channel (="W") W_IDEN EQU #05 ; New channel identifier (=#1234) W_CLOSE EQU #07 ; Address of empty buffer routine ; (EMPTY_2 for Slow windows or RET for Fast windows) W_CHLEN EQU #09 ; Length of channel information block W_FLAGS EQU #0B ; Various flags, defined as follows: ; Bit 7: Set if leading space not reqd. for keywords, reset otherwise ; Bit 6: Not used ; Bit 5: Set if scroll pause enabled, reset otherwise ; Bit 4: Set for Slow window, reset for Fast window ; Bit 3: Set for INVERSE 1, reset for INVERSE 0 ; Bit 2: Set if using double height, reset otherwise ; Bits 1,0: Number of control parameters required W_XCOORD EQU #0C ; Current x coordinate of print position W_WIDTH EQU #0D ; Number of characters per line W_YCOORD EQU #0E ; Current y coordinate of print position W_HEIGHT EQU #0F ; Height of window, in squares W_PRPOS EQU #10 ; Address within screen of current print position W_PRPOSlo EQU W_PRPOS+0 W_PRPOShi EQU W_PRPOS+1 W_HOME EQU #12 ; Address within screen of top left-hand corner of window W_HOMElo EQU W_HOME+0 W_HOMEhi EQU W_HOME+1 W_ATTR EQU #14 ; Colours currently being used for window W_SCROLLS EQU #15 ; Counts number of scrolls allowed before scroll pause, +1 ; ; "Slow" window channels: W_PIX EQU #16 ; Position within square of current print position W_CH_WID EQU #17 ; Width of characters, in pixels W_CHARS EQU #18 ; Address of character set (20-7F) minus #100 W_CHARSlo EQU W_CHARS+0 W_CHARShi EQU W_CHARS+1 W_UDG EQU #1A ; Address of character set (80-A4) W_UDGlo EQU W_UDG+0 W_UDGhi EQU W_UDG+1 W_WIDTH_8 EQU #1C ; Width of window, in squares W_LEN EQU #1D ; Number of characters stored in buffer W_BUFFER EQU #1E ; The buffer itself CHANNEL "Z" ZX PRINTER INFORMATION ---------------------------------- Z_OUT EQU #00 ; Address of channel "Z" output Z_IN EQU #02 ; Address of channel "Z" input Z_NAME EQU #04 ; Name of channel (="Z") Z_IDEN EQU #05 ; Constant #1234 identifies new channel Z_CLOSE EQU #07 ; Address of close buffer routine Z_LEN EQU #09 ; Length of channel info (ie. #010E) Z_FLAGS EQU #0B ; Various flags ; Bit 7: Set if leading space not reqd. for keywords, reset otherwise ; Bit 6: Not used ; Bit 5: Not used ; Bit 4: Not used ; Bit 3: Set for INVERSE 1, reset for INVERSE 0 ; Bit 2: Set if OVER status is ON, reset otherwise ; Bits 1,0: Number of control parameters required Z_XCOORD EQU #0C ; X coordinate of print position in buffer Z_WIDTH EQU #0D ; Width of buffer (ie. #20) Z_BUFFER EQU #0E ; New printer buffer (#100 bytes) CHANNEL "R" RAMDISC INFORMATION ------------------------------- R_OUT EQU #00 ; Address of RAMdisc file output routine (=R_PRINT) R_IN EQU #02 ; Address of RAMdisc file input routine (=R_INPUT) R_NAME EQU #04 ; Name of channel (="R") R_IDEN EQU #05 ; New channel identifier (=#1234) R_CLOSE EQU #07 ; Address of RAMdisc file close routine (=R_FLUSH) R_LEN EQU #09 ; Length of channel information block (=#021B) R_CHFLAG EQU #0B ; Various flags, defined as follows: ; Bits 7-2: Not used ; Bit 1: Set if End-Of-File at end of record, reset otherwise ; Bit 0: Reset for a READ file, set for a WRITE file R_CHBYTE EQU #0C ; Pointer into buffer R_CHREC EQU #0E ; Record number within file R_CHNAME EQU #0F ; File name R_RECLEN EQU #19 ; Length of record within buffer R_BUFFER EQU #1B ; Buffer storing current record CHANNEL "V" VDU INFORMATION --------------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "V" name of channel IX+05 (2 bytes): 0 IX+07 (2 bytes): 0 IX+09 (2 bytes): Channel length .... CHANNEL "V" VDU INFORMATION --------------------------- IX+00 (2 bytes): Address of PRINT# routine IX+02 (2 bytes): Address of INPUT# routine IX+04 (1 byte) : "V" name of channel IX+05 (2 bytes): 0 IX+07 (2 bytes): 0 IX+09 (2 bytes): Channel length IX+0B Flags IX+10 Current window info IX+20 Global info IX+30 IX+38 ....