; ; Label Memory Description ; ;---------------------------------------------------------------------- ; D E V I C E C O N T R O L B L O C K ;---------------------------------------------------------------------- ; ; DDEVIC $0300 Device serial bus ID, set up by handler, not user alterable ; DDEVIC_D1 EQU 031h ; Disk Drive 1 DDEVIC_D2 EQU 032h ; Disk Drive 2 DDEVIC_D3 EQU 033h ; Disk Drive 3 DDEVIC_D4 EQU 034h ; Disk Drive 4 DDEVIC_D5 EQU 035h ; Disk Drive 5 DDEVIC_D6 EQU 036h ; Disk Drive 6 DDEVIC_D7 EQU 037h ; Disk Drive 7 DDEVIC_D8 EQU 038h ; Disk Drive 8 DDEVIC_D9 EQU 038h ; RAM Disk DDEVIC_P1 EQU 040h ; Printer 1 DDEVIC_P2 EQU 04Fh ; Printer 2 DDEVIC_R1 EQU 050h ; RS232 Port 1 DDEVIC_R2 EQU 051h ; RS232 Port 2 DDEVIC_R3 EQU 052h ; RS232 Port 3 DDEVIC_R4 EQU 053h ; RS232 Port 4 ; ; DUNIT $0301 Disk or device unit number, set up by user ; DUNIT_ONE EQU 001h ; Unit Number DUNIT_TWO EQU 002h ; Unit Number DUNIT_THREE EQU 003h ; Unit Number DUNIT_FOUR EQU 004h ; Unit Number ; ; DCOMND $0302 Device operation to be performed, set up by user ; DCOMND_READ EQU 052h ; Read DCOMND_WRITE EQU 057h ; Write with verify DCOMND_STATUS EQU 053h ; Status DCOMND_PUT EQU 050h ; Put no verify DCOMND_FORMAT EQU 021h ; Format DCOMND_DOWNLOAD EQU 020h ; Download DCOMND_READ_ADDRESS EQU 054h ; Read address DCOMND_READ_SPIN EQU 051h ; Read spin DCOMND_MOTOR_ON EQU 055h ; Motor on DCOMND_VERIFY_SECTOR EQU 056h ; Verify sector ; ; DSTATS $0303 Status code upon return to user ; DSTATS_SEND EQU 040h ; Send data DSTATS_RECEIVE EQU 080h ; Receive data ; ; DBUFLO $0304 Data buffer address of the source or destination of the ; data to be transferred, set by user ; ; DBUFHI $0305 Data buffer address of the source or destination of the ; data to be transferred, set by user ; ; DTIMLO $0306 Time-out value for the handler in one-second units ; DTIMLO_STANDARD EQU 031h ; Standard initialized to this value DTIMLO_CASSETTE EQU 035h ; Cassette time-out value ; ; DUNUSE $0307 Unused byte ; ; DBYTLO $0308 Bytes transferred to or from data buffer ; ; DBYTHI $0309 Bytes transferred to or from data buffer ; ; DAUX1 $030A Device specific information ; DAUX1_GET EQU 052h ; Get sector DAUX1_PUT EQU 050h ; Put sector DAUX1_PUT_VERIFY EQU 057h ; Put sector with verify DAUX1_STATUS EQU 053h ; Status request DAUX1_FORMAT EQU 021h ; Format entire disk ; ; DAUX2 $030B Device specific information ; ;---------------------------------------------------------------------- ; I N P U T / O U T P U T C O N T R O L B L O C K ;---------------------------------------------------------------------- ; ; NUMBER intern There are 8 IOCB's which can be used to transfer data ; from one device to another using these channels ; IOCB0 EQU 040h ; IOCB channel 0 starts at $0340 IOCB1 EQU 050h ; IOCB channel 2 ......... $0350 IOCB2 EQU 060h ; IOCB channel 3 ......... $0360 IOCB3 EQU 070h ; IOCB channel 3 ......... $0370 IOCB4 EQU 080h ; IOCB channel 4 ......... $0380 IOCB5 EQU 090h ; IOCB channel 5 ......... $0390 IOCB6 EQU 0A0h ; IOCB channel 6 ......... $03A0 IOCB7 EQU 0B0h ; IOCB channel 7 ......... $03B0 ; ; ICHID $03x0 Index into device name table for currently OPEN file, ; set by Operating System ; ICDNO $03x1 Device number, set by Operating System ; ; ICCOM $03x2 Command for the type of action to be taken by the device ; ICCOM_OPEN_CHANNEL EQU 003h ; Open channel ICCOM_GET_TEXT_RECORD EQU 005h ; Get text record (line) ICCOM_GET_BINARY_RECORD EQU 007h ; Get binary record (buffer) ICCOM_PUT_TEXT_RECORD EQU 009h ; Put text record (line) ICCOM_PUT_BINARY_RECORD EQU 00Bh ; Put binary record (buffer) ICCOM_CLOSE EQU 00Ch ; Close channel ICCOM_STATUS EQU 00Dh ; Channel status ICCOM_S_GET_CHARACTER EQU 007h ; Screen get character ICCOM_S_PUT_CHARACTER EQU 00Bh ; Screen put character ICCOM_S_DRAW_LINE EQU 011h ; Screen draw line ICCOM_S_FILL_AREA EQU 012h ; Screen fill area ICCOM_D_RENAME EQU 020h ; Rename file ICCOM_D_DELETE EQU 021h ; Delete file ICCOM_D_LOCK EQU 023h ; Lock file ICCOM_D_UNLOCK EQU 024h ; Unlock file ICCOM_D_POINT EQU 025h ICCOM_D_NOTE EQU 026h ICCOM_D_FORMAT EQU 0FEh ; Format disk ICCOM_R_OUTPUT_PART_BLOCK EQU 020h ; RS232 Output partial block ICCOM_R_CONTROL_RTS_XMT_DTR EQU 022h ; RS232 Control RTS, XMT, DTR ICCOM_R_BAUD_STOPBITS_SIZE EQU 024h ; RS232 Baudrate, Stop bits, Word size ICCOM_R_TRANSLATION_MODE EQU 026h ; RS232 Translation mode ICCOM_R_CONCURRENT_MODE EQU 028h ; RS232 Concurrent mode ; ; ICSTA $03x3 Most recent status returned by the device, ; set by Operating System ; ICBAL $03x4 Buffer address for data transfer or the address ; of the filename ; ICBAH $03x5 Buffer address for data transfer or the address ; of the filename ; ICPTL $03x6 Address of the device's put one byte routine minus 1, ; set by the operating system ; ICPTH $03x7 Address of the device's put one byte routine minus 1, ; set by the operating system ; ICBLL $03x8 Buffer length set to the maximum number of bytes ; to transfer in put and get commands ; ICBLH $03x9 Buffer length set to the maximum number of bytes ; to transfer in put and get commands ; ICAX1 $03xA Auxiliary byte 1, also referred to as AUX1 ; ICAX1_C_READ EQU 004h ; Cassette Read ICAX1_C_WRITE EQU 008h ; Cassette Write ICAX1_D_READ EQU 004h ; Disk Read file ICAX1_D_READ_DIRECTORY EQU 006h ; Disk Read directory ICAX1_D_WRITE EQU 008h ; Disk Write file ICAX1_D_APPEND EQU 009h ; Disk Append to file ICAX1_D_IO EQU 00Ch ; Disk Read/Write file ICAX1_E_WRITE EQU 008h : Editor S: output ICAX1_E_KEYB_IN_SCREEN_OUT EQU 012h ; Editor K: input S: output ICAX1_E_SCREEN_IN_OUT EQU 013h ; Editor S: input S: output ICAX1_K_READ EQU 004h ; Keyboard Read ICAX1_P_WRITE EQU 008h ; Printer Output ICAX1_R_CONCURRENT_READ EQU 005h ; RS232 Concurrent read ICAX1_R_BLOCK_WRITE EQU 008h ; RS232 Block write ICAX1_R_CONCURRENT_WRITE EQU 009h ; RS232 Concurrent write ICAX1_R_CONCURRENT_IO EQU 00Dh ; RS232 Concurrent read and write ICAX1_S EQU 028h ; Display ICAX1_S_CS EQU 008h ; Display Clear screen ICAX1_S_CS_RO EQU 00Ch ICAX1_S_CS_TW EQU 018h ICAX1_S_CS_TW_RO EQU 01Ch ICAX1_S_TW EQU 038h ; Display Text window ICAX1_S_TW_RO EQU 03Ch ICAX1_S_RO EQU 02Ch ; Display Read operation ; ; ICAX2 $03xB Auxiliary byte 2, also referred to as AUX2 ; ICAX2_C_SHORT_RECORD_GAPS EQU 080h ; Cassette Short inter-record gaps ICAX2_P_820_SIDEWAYS EQU 053h ; Printer 820 Sideways printing ICAX2_P_NORMAL EQU 04Eh ; Printer 40 characters per line ICAX2_P_WIDE EQU 057h ; Printer Wide printing mode ICAX2_S_GR_0 EQU 000h ; Display Graphics mode 0 ICAX2_S_GR_1 EQU 001h ; Display Graphics mode 1 ICAX2_S_GR_2 EQU 002h ; Display Graphics mode 2 ICAX2_S_GR_3 EQU 003h ; Display Graphics mode 3 ICAX2_S_GR_4 EQU 004h ; Display Graphics mode 4 ICAX2_S_GR_5 EQU 005h ; Display Graphics mode 5 ICAX2_S_GR_6 EQU 006h ; Display Graphics mode 6 ICAX2_S_GR_7 EQU 007h ; Display Graphics mode 7 ICAX2_S_GR_8 EQU 008h ; Display Graphics mode 8 ICAX2_S_GR_9 EQU 009h ; Display Graphics mode 9 ICAX2_S_GR_10 EQU 00Ah ; Display Graphics mode 10 ICAX2_S_GR_11 EQU 00Bh ; Display Graphics mode 11 ; ; ICAX3 $03xC Auxiliary byte 3, maintain a record of the disk sector ; number for the Basic NOTE and POINT ; ICAX4 $03xD Auxiliary byte 4, maintain a record of the disk sector ; number for the Basic NOTE and POINT ; ICAX5 $03xE Auxiliary byte 5, used by NOTE and POINT to maintain a ; record of the byte within a sector ; ICAX6 $03xF Auxiliary byte 6, spare auxiliary byte ; ;---------------------------------------------------------------------- ; D E V I C E C O M M A N D S ;---------------------------------------------------------------------- COMMAND_MOUNT_DISK EQU 001h COMMAND_MOUNT_DISK_PROTECT EQU 002h COMMAND_DISMOUNT_DISK EQU 0FEh COMMAND_DISMOUNT_DISK_SAVE EQU 0FFh ;---------------------------------------------------------------------- ; D R I V E V A R I A B L E S ;---------------------------------------------------------------------- ATR_HEADER_SIZE EQU 16 SECTOR_SIZE EQU 128 DISK_BLOCK_SIZE EQU 1024 BLOCK_COUNT_SINGLE EQU 90 BLOCK_COUNT_MEDIUM EQU 130 BLOCK_COUNT_ENHANCED EQU 140 BLOCK_COUNT_DOUBLE EQU 180 BLOCK_COUNT_TEST EQU 2 DISK_SECTORS_SINGLE EQU 720 DISK_SECTORS_MEDIUM EQU 1040 DISK_SECTORS_ENHANCED EQU 1120 DISK_SECTORS_DOUBLE EQU 1440 DISK_SECTORS_TEST EQU 4 DISK_SINGLE EQU 92160 ; DISK_SECTORS_SINGLE * SECTOR_SIZE DISK_MEDIUM EQU 133120 ; DISK_SECTORS_MEDIUM * SECTOR_SIZE DISK_ENHANCED EQU 143360 ; DISK_SECTORS_ENHANCED * SECTOR_SIZE DISK_DOUBLE EQU 184320 ; DISK_SECTORS_DOUBLE * SECTOR_SIZE DISK_TEST EQU 512 ; DISK_SECTORS_TEST * SECTOR_SIZE DISK_TYPE_NONE EQU " " DISK_TYPE_SINGLE EQU "S" DISK_TYPE_MEDIUM EQU "M" DISK_TYPE_ENHANCED EQU "E" DISK_TYPE_DOUBLE EQU "D" DISK_TYPE_TEST EQU "T" DISK_FORMAT_NONE EQU 0 DISK_FORMAT_ATR EQU 1 DISK_FORMAT_XFD EQU 2