; LAST UPDATED: 30 MAY 83 -- No version numbers given to libraries. ; REASON FOR UPDATE: Cleanup. aep ; ; PROGRAM NAME: COMPUPRO.LIB -- Data constants common to all programs ; developed CompuPro Systems Components. ; ; ========================== Copyright 1982, CompuPro Corporation, ; || || A division of Godbout Electronics. ; || COMPUPRO.LIB || Oakland Airport, Oakland, CA ; || || ; ========================== ; ; This product is a copyright program product of CompuPro and is ; supplied for use with the CompuPro Computer Systems. ; ; COMMONLY USED CONSTANTS: FALSE EQU 0 TRUE EQU NOT FALSE ; ;************************************************ ;* RAM STORAGE LOCATION ASSIGNMENTS: * ;************************************************ ; ; Page Zero Definitions: IOBYTE EQU 03h ;Location of I/O BYTE CDISK EQU 04h ;Location of current disk BOOTSW EQU 40h ;Boot switch value location IOCNTL EQU 42h ;Auxilary I/O control byte BUFF EQU 80h ;Default Buffer from CP/M input XBOOT EQU 100h ;Base of Boot Initial Program Loader ; ;------------------------------------------------ ; ; Dual CPU 8085/8088 Swapout Control Port: SWAPP EQU 0FDh ;Dual Processor SWAP Port ; ;************************************************ ;* DISK INPUT/OUTPUT PORT ASSIGNMENTS: * ;************************************************ ; MRTRY EQU 10 ;Maximum retry count ; ; Drive "types" used to identify the active driver to use ; for disk Read/Write operations. ; FD8TYPE EQU 00h ;DISK 1 -- 8 inch disk type base value FD5TYPE EQU 20h ;DISK 1 -- 5 1/4 inch disk type base value D2$TYPE EQU 40h ;DISK 2 controller disk type base value D3$TYPE EQU 50h ;DISK 3 controller disk type base value D4$TYPE EQU 60h ;DISK 4 controller disk type base value MEMTYPE EQU 80h ;M-DRIVE / 8088 used as "DMA controller" HMDTYPE EQU 81h ;Separate drive type for M-DRIVE/H ;------------------------ ; ; MEMORY DRIVE and BOOT activity indicators: ; HM$BASE EQU 0C6h ;Base port of all "/H" boards HM$DATA EQU HM$BASE ;Data port address HM$CNTL EQU HM$BASE+1 ;Data select control port ; ; Floppy Disk (DISK 1) controller and drive constants: ; FD8PORT EQU 0C0h ;Base port address for Controller FD5PORT EQU 0CCh ;Base port address for 5 inch drives FDCS EQU 0 ;Status register offset FDCD EQU 1 ;Data register offset FDMA EQU 2 ;DMA address offset (when written) INTS EQU 2 ;Status Register offset (when read) FDON EQU 3 ;Floppy disk offset to turn on/off motor and PROM ; ; Floppy Disk (DISK1) Controller Function Definitions: FD$RTRK EQU 02 ;Read entire track FD$SPEC EQU 03 ;Specify FD$DSTS EQU 04 ;Read Drive status FD$WRT EQU 05 ;Write data FD$RDAT EQU 06 ;Read data FD$RECA EQU 07 ;Recalibrate FD$RSTS EQU 08 ;Read interrupt status FD$DRID EQU 10 ;Read ID FD$FMT EQU 13 ;Format a track FD$SEEK EQU 15 ;Seek cylinder FD$SKIP EQU 0010$0000b ;Skip deleted data address marked sectors FD$MFM EQU 0100$0000b ;MFM (double density) command, else FM (single density) FD$MT EQU 1000$0000b ;Multi-track operation, head 0 then head 1 of cylinder ; ; Floppy Disk (DISK1) Controller Main Status Register bit definitions: FD$RQM EQU 1000$0000b ;Request for Master data transfer (command/status) FD$DIO EQU 0100$0000b ;Data Input (0) / Output (1) data transfer mode FD$NDM EQU 0010$0000b ;Controller in non-DMA mode FDCBUSY EQU 0001$0000b ;Controller Busy (read/write command active) FDD3SK EQU 0000$1000b ;Drive #3 is in seek mode FDD2SK EQU 0000$0100b ;Drive #3 is in seek mode FDD1SK EQU 0000$0010b ;Drive #3 is in seek mode FDD0SK EQU 0000$0001b ;Drive #3 is in seek mode ; ; DISK1 Result Status Register 0 bits: FDC$IC EQU 1100$0000b ;Interrupt Completion Code bits FDC$SKE EQU 0010$0000b ;Seek End FDC$CHK EQU 0001$0000b ;Equipment Check failure FD$NRDY EQU 0000$1000b ;Drive not ready ; These are specified in other status bytes, and second byte of some commands. FD$HDS EQU 0000$0100b ;Head Select (0/1) of cylinder FD$DRVS EQU 0000$0011b ;Drive Select (0-3) ; ; DISK1 Result Status Register 1 bits: FD$EOC EQU 1000$0000b ;End of Cylinder FD$HDRR EQU 0010$0000b ;Header Data Error (CRC error) FD$OVR EQU 0001$0000b ;Data xfer overrun error FD$NDAT EQU 0000$0100b ;No data error, sector not found FD$NWRT EQU 0000$0010b ;Data was not written, protected diskette FD$MDAM EQU 0000$0001b ;Missing Data Address Marker error ; ; DISK1 Result Status Register 2 bits: FD$CMRK EQU 0100$0000b ;Control Marker (DDAM found during scan) FD$DATR EQU 0010$0000b ;Data error in sector (CRC error) FD$XCYL EQU 0001$0000b ;Wrong cylinder encountered ; ; DISK1 Result Status Register 3 bits: FD$DFLT EQU 1000$0000b ;Drive Fault status indicated FD$WRTP EQU 0100$0000b ;Drive Write Protected FD$RDY EQU 0010$0000b ;Drive Ready status FD$CYL0 EQU 0001$0000b ;Drive Cylinder 0 indicated FD2SIDE EQU 0000$1000b ;Diskette is 2 sided ;FD$HDS, FD$DRVS = 111b ;------------------------ ; ; CompuPro DISK 2 Equates: ; D2$PORT EQU 0C8h ;Base port address D2$CNTL EQU D2$PORT ;Control port D2$STAT EQU D2$PORT ;Status port is same as control D2$DATA EQU D2$PORT+1 ;Data port (I/O) ; ; Disk 2 Commands: D2$READ EQU 1100$1000b ;Read data command D2$WRT EQU 1101$0000b ;Write data command D2$TIME EQU 0000$0110b ;Time out D2$STRB EQU 1000$0000b ;Drive strobe D2$HEAD EQU 1001$0000b ;Head register D2$CYL EQU 1000$1000b ;Cylinder register D2$SEC EQU 1001$1000b ;Sector register D2$SIN EQU 1010$0000b ;Step in D2$SOU EQU 1000$0000b ;Step out D2$RST EQU 0000$0100b ;Reset drive command bit D2$ATTN EQU 1000$0000b ;Acknowledge end of state machine sequence (interrupt) ; ; Disk 2 Status Bits: ; ATTN EQU 1000$0000b ;State machine activity bit D2$TOUT EQU 0100$0000b ;Timeout error bit D2$CRC EQU 0010$0000b ;CRC error on data sector bit D2$OVR EQU 0001$0000b ;Overrun on data transfer error bit D2$NRDY EQU 0000$1000b ;Drive not ready status bit D2$SEKD EQU 0000$0100b ;Seek done status bit D2$WRTF EQU 0000$0010b ;Write fault (negative true status) D2$CYL0 EQU 0000$0001b ;Cylinder 0 status bit (negative true status) ; ; Selector Channel: SELCHAN EQU 0F0h ;Selector channel port SELPRI EQU 10 ;Disk priority (as a DMA device, switches set) SELBYT EQU 2Fh-SELPRI ;Selector channel command byte ;------------------------ ; ; CompuPro DISK 3 Equates: ; D3$PORT EQU 90h ;Base port address D3$ATTN EQU 00h ;Attention, start DISK3 on current IOPB operation D3RESET EQU 01h ;Reset DISK3 to initial state ; ; DISK3 uses 16 byte Command Input/Output Parameter Blocks for all operations. D3DIOPB EQU 0050h ;Base address (default) Command Input/Output Parm Block D3$CMD EQU 0 ;Command byte offset in CIOPB D3$STAT EQU 1 ;Result Status D3$DRVS EQU 2 ;Drive Select D3$RWF EQU 3 ;Read/Write Flag (Read: lsb = 1, Write: lsb = 0) D3$SEC EQU 4 ;Sector (low) D3$SECH EQU 5 ;Sector (high) D3$TRK EQU 6 ;Track (low) D3$TRKH EQU 7 ;Track (high) D3$NSEC EQU 8 ;Number of Sectors (low) D3$NSCH EQU 9 ;Number of Sectors (high) D3$DMA EQU 10 ;Direct Memory Access (low) D3$DMA2 EQU 11 ;Direct Memory Access (mid) D3$DMA3 EQU 12 ;Direct Memory Access (high) D3$LINK EQU 13 ;Linkage (low) to next CIOPB D3$LNK2 EQU 14 ;Linkage (mid) D3$LNK3 EQU 15 ;Linkage (high) ; ; DISK3 commands: D3$NOOP EQU 0 ;No-operation, jump to new link address D3$VER EQU 1 ;Return current version of internal system D3$GLBL EQU 2 ;Set global parameters to board D3$SPEC EQU 3 ;Specify disk parameters D3$MAP EQU 4 ;Set bad sector map D3$HOME EQU 5 ;Home disk to cylinder 0 (recalibrate drive) D3$XFER EQU 8 ;Transfer data -- Read/Write Sector(s) D3$REL EQU 9 ;Relocate the current sector ; D3$READ EQU 0000$0001b ;Read data transfer type D3$WRT EQU 0000$0000b ;Write data transfer type ; ; DISK3 result status bytes: D3$BUSY EQU 0 ;Command in progress D3$RNG EQU 1 ;Argument Range Error D3$NRDY EQU 2 ;Drive Not Ready Error D3$TIME EQU 3 ;Time out Error D3$CRC EQU 4 ;Data CRC Error D3$WFLT EQU 5 ;Write Fault Error D3$OVR EQU 6 ;Overrun Error D3$NFND EQU 7 ;Header Not Found D3$MFUL EQU 8 ;Relocate map full D3$DONE EQU 255 ;Successful completion of command ; ;**************************************************************** ;* INPUT/OUTPUT PHYSICAL DEVICE PORT, MASK ASSIGNMENTS * ;**************************************************************** ; ; CompuPro Interfacer 1,2 board equates. ; IF1P0 EQU 00h ;Serial port zero IF1P1 EQU 02h ;Serial port one IF1P2 EQU 04h ;Serial port two IF2PP EQU 08h ;Parallel ports base address IF1UD EQU 0 ;Data on even I/O unit IF1US EQU 1 ;Status on odd I/O unit ; IF1US0 EQU IF1P0+IF1US ;Interfacer I status UART 0 IF1US1 EQU IF1P1+IF1US ;Interfacer I status UART 1 IF1US2 EQU IF1P2+IF1US ;Interfacer II status UART 2 ; IF1UD0 EQU IF1P0+IF1UD ;Interfacer I data UART 0 IF1UD1 EQU IF1P1+IF1UD ;Interfacer I data UART 1 IF1UD2 EQU IF1P2+IF1UD ;Interfacer II data UART 2 ; ; Control Port bits: IF1NBI EQU 1000$0000b ;Number of bits/character (7/8) IF1EPS EQU 0100$0000b ;Even parity/ odd parity IF1NP EQU 0010$0000b ;No parity / parity bit generated IF1TSB EQU 0001$0000b ;Number of stop bits (1/2) IF1CA EQU 0000$1000b ;RS 232 CA output (Request to Send) IF1CD EQU 0000$0100b ;RS 232 CD output (Data Terminal Ready) IF1TIE EQU 0000$0010b ;Transmitter interrupt enable IF1RIE EQU 0000$0001b ;Receiver interrupt enable ; Status Port bits: IF1CB EQU 1000$0000b ;RS 232 CB input IF1CC EQU 0100$0000b ;RS 232 CC input IF1FE EQU 0010$0000b ;Framing error IF1OR EQU 0001$0000b ;Overrun error IF1PE EQU 0000$1000b ;Parity error IF1OPT EQU 0000$0100b ;Optional status line IF1DAV EQU 0000$0010b ;Data available IF1TBE EQU 0000$0001b ;Transmit buffer empty ;--------------------------------- ; ; CompuPro System Support 1 equates. ; SS1B EQU 50h ;System Support starting port ; ; Priority Interrupt Controller (8259A) Ports: SS1MP0 EQU SS1B+0 ;Master PIC port 0 SS1MP1 EQU SS1B+1 ;Master PIC port 1 SS1SP0 EQU SS1B+2 ;Slave PIC port 0 SS1SP1 EQU SS1B+3 ;Slave PIC port 1 ; PIC Commands: EOI EQU 001$00$000b ;Non-specific End Of Interrupt SEOI EQU 011$00$000b ;Specific End Of Interrupt SETPRI EQU 110$00$000b ;Set Priority command READISR EQU 000$01$011b ;Read IS register (interrupts being serviced) SMMON EQU 011$01$000b ;Special mask mode on SMMOFF EQU 010$01$000b ;Special mask mode off ; ; Timer/Counter (8253) Ports: SS1T0 EQU SS1B+4 ;Timer number 0 SS1T1 EQU SS1B+5 ;Timer number 1 SS1T2 EQU SS1B+6 ;Timer number 2 SS1TC EQU SS1B+7 ;Timer control port ; ; Floating Point Processor (8231, 8232, 9511, 9512) Ports: SS1FPPD EQU SS1B+8 ;Floating point processor data port SS1FPPC EQU SS1B+9 ;Floating point processor command port ; ; Battery backed-up Real Time Clock (OKI) Ports: SS1CLKC EQU SS1B+10 ;Clock command port SS1CLKD EQU SS1B+11 ;Clock data port ; RTC Control Bits: RTC$HLD EQU 0100$0000b ;Hold clock value control bit RTC$WRT EQU 0010$0000b ;Write to clock chip control bit RTC$READ EQU 0001$0000b ;Read clock chip control bit ; ; System Support I UART Ports: SS1UD EQU SS1B+12 ;Uart data port SS1US EQU SS1B+13 ;Uart status port SS1UM EQU SS1B+14 ;Uart modem port SS1UC EQU SS1B+15 ;Uart command port ; System Support Uart Active Commands: SS1TENB EQU 0010$0111b ;Enable transmission control byte SS1TDIS EQU 0000$0110b ;Disable transmission control byte ; UART status bits: SS1DAV EQU 0000$0010b ;System Support Data Available SS1TBE EQU 0000$0001b ;System Support Transmit Buffer Empty SS1DSR EQU 1000$0000b ;System Support Data Set Ready input status ;--------------------------------- ; ; CompuPro Interfacer 3,4 Port Equates ; IF3B EQU 10h ;Interfacer 3,4 Base address IF3UD EQU IF3B+0 ;Uart data location IF3US EQU IF3B+1 ;Uart status IF3UM EQU IF3B+2 ;Uart mode register IF3UC EQU IF3B+3 ;Uart command register IF3IT EQU IF3B+4 ;Transmit Interrupt control/status register IF3IR EQU IF3B+5 ;Receive Interrupt control/status register IF3UX EQU IF3B+7 ;Uart select register ; IF3DAV EQU 0000$0010b ;Interfacer 3,4 Data Available IF3TBE EQU 0000$0001b ;Interfacer 3,4 Transmit Buffer Empty IF3DSR EQU 1000$0000b ;Interfacer 3,4 Data Set Ready input status ;--------------------------------- ; ; For all CompuPro UART interfacer boards: ; UDAV EQU 0000$0010b ;Universal UART Data Available UTBE EQU 0000$0001b ;Universal UART Transmit Buffer Empty ; ;====== end of CompuPro related "fixed" port and mask assigments ======