.Z80 ; ; EQUATES FOR COLD/WARM BOOT MODULE ; ; ;**************************************************************** ;* The following revision number is in reference to the CP/M * ;* 2.2 Cbios. * ;**************************************************************** ; REVNUM EQU 10 ; Cbios revision number CPMREV EQU 22 ; CP/M revision number ; ; System memory size ; IF STDCPM SMSIZE EQU 60 ; For TS-803 ENDIF ; IF USRCPM IF TS800 OR TS803 OR TPCI SMSIZE EQU 55 ENDIF IF TS803H SMSIZE EQU 56 ENDIF ENDIF ; LED12 EQU 10H ; LED 1,2 indicator LED34 EQU 11H ; LED 3,4 IDSWITCH EQU 0 ; DIP SWITCH ; ;**************************************************************** ;* CP/M system equates. If reconfiguration of the CP/M system * ;* is being done, the changes can be made to the following * ;* equates. * ;**************************************************************** ; CDISK EQU 4 ; Address of last logged disk TPA EQU 100H ; Transient memory IOBYTE EQU 3 ; IOBYTE location WBOT EQU 0 ; Warm boot jump address ENTRY EQU 5 ; BDOS entry jump address ; ; EQUATES FOR CONSOLE I/O MODULE ; CKBR EQU 01H ; RECEIVE CHAR AVAIL CPTR EQU 04H ; TXMT BUFFER EMPTY CTS EQU 20H ; CLEAR TO SEND SIGNAL DCD EQU 08H ; DCD SIGNAL ; ; EQUATES FOR PRINTER FUNCTION PRNTMO EQU 0FFFEH ; FLAG TO INDICATE STATE OF PRINTER FUNCTION PBUFSIZ EQU 508 ; PRINTER BUFFER SIZE INPUTOFF EQU 9800H ; ADDRESS OF INPUT OFFSET OF PRINTER BUFFER OUTPUTOFF EQU 9802H ; ADDRESS OF OUTPUT OFFSET OF PRINTER BUFFER BUF_PRNT EQU 9800H ; STARTING ADDRESS OF PRINTER BUFFER SCNMOD EQU 0FF06H ; INDICATOR OF SCREEN STATE XON EQU 11H ; XON CODE TO KEY BOARD BUFFER XOFF EQU 13H ; XOFF CODE TO KEY BOARD BUFFER ; ; EQUATES FOR PARALLEL PRINT FUNCTION PORTS ; PARALCP EQU 60H ; PARALLEL PRINT CONTROL PORT PARALDP EQU 70H ; PARALLEL PRINT DATA PORT PSTOBE EQU 0FEH ; SET STOBE LOW INDICATING DATA IS READY TO RSTOBE EQU 0FFH ; PICK UP, RESET STOBE KYSTAT EQU 0FF07H ; KEY STATUS BYTE KEYCLK EQU 0FF08H ; KEYCLICK ON/OFF BYTE KEYREL EQU 0FFFFH ; KEY RELEASE BYTE ; ; SIO STATUS BIT DEFINITIONS ; RCVRDY EQU 0 ; RECEIVE CHARACTER AVAILABLE TRXRDY EQU 2 ; TRANSMITTER BUFFER EMPTY ; ASCETX EQU 03H ; ASCII END OF TRANSMISSION ASCACK EQU 06H ; ASCII ACKNOWLEDGEMENT ASCDC1 EQU 11H ; X-ON ASCDC3 EQU 13H ; X-OFF ; CNULL EQU 1 ; CONSOLE NULL COUNT ; ; SYSTEM INTERRUPT EQUATES ; KBDIVL EQU DRTINT AND 0FFH ; LOW BYTE OF KEYBOARD INTERRUPT VECTOR STIIVL EQU STIINT AND 0FFH ; LOW BYTE OF TIME AND DATE INTERRUPT VECTOR ; PAGE IF TS803H ; ; BIT FLAGS ; F$RDOP EQU 0 ; READ OPERATION F$RIP EQU 1 ; READ IN PROGRESS F$WIP EQU 2 ; WRITE IN PROGRESS F$INIT EQU 7 ; CONTROLLER INITIALIZED ; ; DRIVE COMMANDS ; STEPRAT EQU 7 ; STEPPING RATE, EACH COUNT = 0.5 MS ; ; 0 = 10 US., 1 = 0.5 MS, ETC. ; DRIVE STATUS ; WREADY EQU 040H ; DRIVE IS READY WFAULT EQU 020H ; WRITE FAULT ON DRIVE WCMPLT EQU 010H ; SEEK COMPLETE ; ; CONTROLLER COMMANDS ; WREST EQU 010H+STEPRAT ; BASIC RESTORE COMMAND + STEPPING RATE WSEEK EQU 060H+STEPRAT ; BASIC SEEK COMMAND + STEPPING RATE WREAD EQU 020H ; READ SECTOR WWRITE EQU 030H ; WRITE SECTOR WFMT EQU 050H ; FORMAT ; ; CONTROLLER STATUS ; WBUSY EQU 080H ; CONTROLLER BUSY WDRQ EQU 008H ; DATA REQUEST WERROR EQU 001H ; ERROR STATUS PRESENT ; WEBLK EQU 080H ; BAD BLOCK DETECT WECRCD EQU 040H ; CRC ERROR - DATA FIELD WECRCI EQU 020H ; CRC ERROR - ID FIELD WENOT EQU 010H ; ID NOT FOUND WEABORT EQU 004H ; ABORTED COMMAND WETR0 EQU 002H ; TRACK 000 ERROR WEDAM EQU 001H ; DATA ADDRESS MARK NOT FOUND ; ; DRIVE/CONTROLLER I/O ; CBASE EQU 48H ; BASE ADR OF THE CONTROLLER ; WDATA EQU CBASE ; DATA PORT (I/O) WPCYL EQU CBASE+1 ; WRITE PRECOMP CYLINDER NUMBER (O) WERRS EQU CBASE+1 ; ERROR DEFINITION (I) WCOUNT EQU CBASE+2 ; SECTOR COUNT (I/O) WSECT EQU CBASE+3 ; SECTOR NUMBER (I/O) WLOCYL EQU CBASE+4 ; CYLINDER NUMBER, LOW ORDER BITS(I-O) WHICYL EQU CBASE+5 ; CYLINDER NUMBER, HIGH ORDER BITS (I/O) WSDH EQU CBASE+6 ; SECTOR SIZE, DRIVE SELECT, HEAD SELECT. (I/O) WCMD EQU CBASE+7 ; COMMAND PORT (O) WSTAT EQU CBASE+7 ; STATUS PORT (I) ENDIF ; ; PAGE 0 ENTRY EQUATES ; ALINIT EQU 0003H ; LOC OF JP VECTOR TO ALPHA DRIVER INITIALIZATION ALOUT EQU 0006H ; ALPHA DRIVER GROUT EQU 0009H ; GRAPHIC DRIVER KBDFTR EQU 000CH ; KEYBOARD FILTER ; ; GRAPHIC ENTRY POINT VECTOR ; GRRSTV EQU 28H ; RESTART 5 ; ; MOUSE FUNCTION ENTRY POINT VECTOR ; MOUSEV EQU 30H ; RESTART 6 VERADR EQU 0C8H ; VERTICAL ADDRESS HALOB EQU 0CAH ; HORIZONTAL ADDRESS LOW BYTE HAHIB EQU 0CCH ; HORIZONTAL ADDRESS HIGH BYTE CONTROL EQU 0CEH ; CONTROL REGISTER ; ADDRESSES OF JP TABLE FOR MOUS FUNCTIONS MSCINT EQU 18H ; RESIDE IN EPROM MSCRNG EQU 1BH MSCXY EQU 1EH MSCTRM EQU 21H MSCKYM EQU 24H MSCKYP EQU 27H MSCMOV EQU 2AH MSCICA EQU 2DH MSCIHC EQU 30H MSCSHC EQU 33H MSCMHC EQU 36H MSCHCC EQU 39H MSCTHC EQU 3CH FLSHROM EQU 3FH CVD3ROM EQU 42H CVD2ROM EQU 45H FTABROM EQU 48H MSCSTS EQU 0FFC8H ; DATA AVAIL STATUS BYTES DIGSTS EQU MSCSTS+1 ; SWITCH STATUS BYTE MSCMODE EQU DIGSTS+1 ; MOUSE KEY MODE ICURAT EQU MSCMODE+1 ; STORAGE AREA FOR CURSOR ATTRI. GCURX EQU ICURAT+1 ; GCURY EQU GCURX+2 XCODI EQU GCURY+2 ; STORAGE AREA FOR X COORDINATES YCODI EQU XCODI+2 ; STORAGE AREA FOR Y COORDINATES BYTFLG EQU YCODI+2 MKYTAB EQU BYTFLG+1 ; MOUSE KEY LEFT, RIGHT AND MIDDLE DIGCNT EQU MKYTAB+3 ; BANKSW EQU 13H ; MEMORY BANK SELECTION PORT LOCFLG EQU 0FF04H ; ADDRESS FOR LOC ESC FLAG ; ; ASCII CHARACTERS ; CR EQU 0DH ; CARRIAGE RETURN LF EQU 0AH ; LINE FEED CTLC EQU 3 ; CONTROL C TO ABORT BELL EQU 7 ; DING ; DPBOFF EQU 10 ; OFFSET TO DPB ADDRESS IN THE HEADER HDBOFF EQU 3 ; OFFSET TO BLOCK MASK IN DPB ; ; NUMBER OF LOGICAL DRIVES ; IF TS800 MAXDRV EQU 0 ;FOR TS-800 ENDIF IF TS803 OR TPCI MAXDRV EQU 2 ;FOR TS-803 ENDIF IF TS803H MAXDRV EQU 4 ;FOR TS-803H ENDIF ; ; EQUATES FOR USERCPM ; IF USRCPM MSIZE EQU 64 ;MEMORY SIZE. ; INTRP EQU TRUE ;TRUE IF INTERRUPTS ALLOWED. ; ; SIO #1 -- RS422 ; CSTT1A EQU 42H ;STATUS PORT FOR CHANNEL A CDAT1A EQU 40H ;DATA PORT FOR CHANNEL A SIOATC EQU 12H ;RS-422 CONTROL AND AUTO-WAIT FOR SIO ; CKBR EQU 01H ;RECEIVE CHAR AVAILABLE ;* ;* MMMOST EQUATE ;* TABLEN EQU 10 ;MAX. NO. OF BDOS INTERCEPT FILES MMMOST2.0 SOR EQU 01H ;START OF REQUEST IPL EQU 'L' ;INITIAL PROGRAM LOAD CIPL EQU 'B' ;CONTINUED IPL BOOTSTRAPPED READC EQU 'R' ;READ A SECTOR REQUEST CODE WRTCD EQU 'W' ;WRITEA SECTOR REQUEST CODE LSTCD EQU 'P' ;SEND PRINT BUFFER TO SPOOL BRKCD EQU 'N' ;END CURRENT PRINT FILE COMCD EQU 'C' ;COMMAND DIRECT IPCDATA EQU CDAT1A ;DATA PORT FOR USER TO IPC IPCSTAT EQU CSTT1A ;STATUS PORT FOR USER TO IPC IOERR EQU 4 ;IO ERROR(TRANSFER ERROR) MMMOST2.04 TIMERR EQU 3 ;TIMEOUT ERROR(NO RESPONCE FROM MMMOST) MMMOST2.04 RTCNT EQU 10 ;RETRY COUNT RWRETRIES EQU 5 ;READ WRITE RETRY COUNT ;FOR IPC READ/WRITE ROUTINES IOBYTE EQU 3 ;ADDRESS OF I/O BYTE CBASEX EQU (MSIZE-20)*1024 ;BIAS FOR LARGER THAN 20K BDOSTRT EQU BDOS+0BH ;INITIAL BDOS JUMP IN CP/M 2.2 MMMOST2.0 NSECTS EQU 44 ;NUMBER OF SECTORS IN IT RETRIES EQU 50 ;NUMBER OF RETRIES ON XMT/RECEIVE USER EQU TRUE ; ; EQUATES FOR IPC CHANNEL ; STATUS EQU 42H DATA EQU 40H CHNRST EQU 00011000B ;COM 3 CHANNEL RESET SDLCMD EQU 00100000B ;X 1 CLOCK, SDLC SYNC, SYNC MODE, NO PARITY GLOBAL EQU 0FFH ;GLOBAL SDLC ADDRESS FLAG EQU 01111110B ;SDLC FLAG RCVLNG EQU 11011001B ;8 BIT RCVR, HUNT PHASE XMTLNG EQU 01101001B ;8 BIT TXMT, SDLC CRC, ENB XMTRDY EQU 10000000B ;READY FOR SIO ON TXMT, NO INTERRUPTS OUTD EQU 0ABEDH ;Z80 OUTD SET-UP FOR DW OTIR EQU 0B3EDH ;Z80 OTIR SET-UP FOR DW OTDR EQU 0BBEDH ;Z80 OTDR SET-UP FOR DW LDIX EQU 21DDH ;Z80 LD IX ADDIXSP EQU 39DDH ;Z80 ADD IX,SP LDSPIX EQU 0F9DDH ;Z80 LD SP,IX JR EQU 18H ;Z80 JR JRZ EQU 28H ;Z80 JUMP RELATIVE ZERO JRNZ EQU 20H ;Z80 JR NON ZERO INDC EQU 50EDH ;Z80 IN D,(C) INEC EQU 58EDH ;Z80 IN E,(C) ENDIF ; ; EQUATES FOR FLOPPY DISK I/O MODULE ; ; BDOS CONSTANTS ON ENTRY TO WRITE ; WRALL EQU 0 ; WRITE TO ALLOCATED WRDIR EQU 1 ; WRITE TO DIRECTORY WRUAL EQU 2 ; WRITE TO UNALLOCATED ; ; FDC EQUATES ; DSELOP EQU 90H ; DISK SELECT AND CONFIGURE PORT FDCCMD EQU 80H ; FDC STATUS AND COMMAND PORT FDCTRK EQU 81H ; FDC TRACK PORT FDCSEC EQU 82H ; FDC SECTOR PORT FDCDAT EQU 83H ; FDC DATA PORT ; ; FDC STATUS BITS ; FDCBSY EQU 0 ; FDC BUSY IS BIT 0 FDCIND EQU 1 ; FDC INDEX HOLE DETECTED FDCTR0 EQU 2 ; FDC TRACK 0 DETECTED FDCCRC EQU 3 ; FDC CRC ERROR ENCOUNTERED FDCSEE EQU 4 ; FDC SEEK ERROR ENCOUNTERED FDCHLD EQU 5 ; FDC HEAD LOAD ACK. FDCPRT EQU 6 ; FDC DISK IS WRITE PROTECTED FDCRDY EQU 7 ; FDC DISK NOT READY BIT ; ; FDC STATUS BYTE MASKS ; ERRMSK EQU 01011100B ; MASK OFF INSIGNIFICANT BITS SEEMSK EQU 00011000B ; CHECK THE NOT READY BIT DNRMSK EQU 00000000B ; DRIVE NOT READY MASK ; ; FDC COMMAND BYTES ; RESCMD EQU 00001000B ; HOME HEAD COMMAND SEECMD EQU 00011000B ; SEEK TRACK COMMAND HDSCMD EQU 00111100B ; HEAD STEP, PREVIOUS DIRECTION HSICMD EQU 01011100B ; HEAD STEP IN, TOWARD HUB. HSOCMD EQU 01111100B ; HEAD STEP OUT, TOWARD EDGE. ; RDSCMD EQU 10001000B ; READ SECTOR WTSCMD EQU 10101000B ; WRITE SECTOR RDACMD EQU 11001000B ; READ SECTOR ADDRESS RDTCMD EQU 11101000B ; READ TRACK WTTCMD EQU 11111000B ; WRITE TRACK FRCCMD EQU 11010000B ; FORCE TERMINATION ; FDCDEL EQU 20000/6 ; TIMER COUNTER FOR 20MS DELAY OF HEAD FDCTIMEOUT EQU 0FFFFH ; TIMER-OUT COUNTER FOR R/W WAIT ROUTINE ; ; EQUATE FOR FLOPPY MOTOR TIME OUT ; USER CAN MODIFY THE TIME, IF NECESSARY. ; FDTOUT EQU 4 ; FLOPPY MOTOR TIME OUT = 4 SEC ; ; CP/M EQUATES ; CPMSEC EQU 16 ; NO. OF 256-BYTE SECTORS USED BY CP/M CPMSIZ EQU 1600H ; LENGTH OF CCP AND BDOS CPMBUF EQU 80H ; DEFAULT CP/M DMA ADDRESS CCPLEN EQU 800H ; LENGTH OF CCP IN BYTES NSECT EQU CPMSIZ/128 ; NUMBER OF SECTORS TO WARMBOOT JP EQU 0C3H ; JUMP OPCODE ; ; DISK PARAMETER BLOCKS ; FIRST COME THE EQUATES FOR DISK PARAMETER BLOCKS ; BPDE EQU 32 ; BYTES/DIRECTORY ENTRY ; ; DRIVE 0 EQUATES ; FOFF0 EQU 2 ; NUMBER OF TRACK RESERVED FOR CP/M O.S. FTPD0 EQU 40 ; NUMBER OF TRACKS/DISK FBPS0 EQU 256 ; NUMBER OF BYTES/SECTOR FNSID0 EQU 2 ; NUMBER OF SIDE/DISK FPSPT0 EQU 18 ; NUMBER OF PHYSICAL SECTOR/TRACK FSPT0 EQU ((FBPS0/128)*FPSPT0)*FNSID0 ;NUMBER OF CP/M SECTOR/TRACK FSPD0 EQU FSPT0*FTPD0 ; NUMBER OF SECTORS/DISK FEPD0 EQU 64 ; NUMBER OF DIRECTORY ENTRIES FBLS0 EQU 2048 ; BLOCK SIZE FBSH0 EQU 4 ; BLOCK SHIFT FACTOR FBLM0 EQU (FBLS0/128)-1 ; BLOCK MASK FEXM0 EQU 0 ; EXTENT MASK FDSM0 EQU ((FSPD0-(FSPT0*FOFF0))/(FBLM0+1))-1 ;CP/M BLOCK PER DISK FDRM0 EQU FEPD0-1 ; DIRECTORY ENTRIES - 1 FALL0 EQU 10000000B ; DIRECTORY BLOCK BIT MAP LOW FALH0 EQU 0B ; DIRECTORY BLOCK BIT MAP HIGH FCKS0 EQU (FDRM0+1)/4 ; SIZE OF DIRECTORY CHECK VECTOR ; ; DRIVE 1 EQUATES ; FOFF1 EQU 2 ; NUMBER OF TRACK RESERVED FOR CP/M O.S. FTPD1 EQU 40 ; NUMBER OF TRACKS/DISK FBPS1 EQU 256 ; NUMBER OF BYTES/SECTOR FNSID1 EQU 2 ; NUMBER OF DISK SIDE FPSPT1 EQU 18 ; NUMBER OF PHYSICAL SECTOR/TRACK FSPT1 EQU ((FBPS1/128)*FPSPT1)*FNSID1 ; NUMBER OF CP/M SECTORS/TRACK FSPD1 EQU FSPT1*FTPD1 ; NUMBER OF SECTORS/DISK FEPD1 EQU 64 ; NUMBER OF DIRECTORY ENTRIES FBLS1 EQU 2048 ; BLOCK SIZE FBSH1 EQU 4 ; BLOCK SHIFT FACTOR FBLM1 EQU (FBLS1/128)-1 ; BLOCK MASK FEXM1 EQU 0 ; EXTENT MASK FDSM1 EQU ((FSPD1-(FSPT1*FOFF1))/(FBLM0+1))-1 ; CP/M BLOCK PER DISK FDRM1 EQU FEPD1-1 ; DIRECTORY ENTRIES-1 FALL1 EQU 10000000B ; DIRECTORY BLOCK BIT MAP LOW FALH1 EQU 0B ; DIRECTORY BLOCK BIT MAP HIGH FCKS1 EQU (FDRM1+1)/4 ; SIZE OF DIRECTORY CHECK VECTOR ; ; ***************************** ; CP/M TO SYSTEM DISK CONSTANTS ; ***************************** ; HSTSIZ EQU FBPS0 ; SYSTEM DISK SECTOR SIZE HSTSPT EQU FPSPT0*FNSID0 ; SYSTEM DISK SECTOR PER TRACK HSTBLK EQU HSTSIZ/128 ; CP/M SECTORS/HOST BUFFER FCPMSPT EQU HSTBLK*HSTSPT ; CP/M SECTOR PER TRACK SECMSK EQU HSTBLK-1 ; SECTOR MASK ; ; END OF 803EQU.MAC