|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 10496 (0x2900) Types: TextFile Names: »PORTS.LIB«
└─⟦b445f10af⟧ Bits:30004389 CP/M Plus Source files └─ ⟦this⟧ »PORTS.LIB«
;======================================================================== ;= CR8/CR7 PORTS EQUATES FOR CP/M 3.0 BIOS - DATE:840403 ;======================================================================== TRUE EQU -1 FALSE EQU NOT TRUE CR7 EQU 7 CR8 EQU 8 MSC9205 EQU 5 DTC510A EQU 4 ST406 EQU 0000$0001B ST506 EQU 0000$0010B ST412 EQU 0000$0100B CDCWREN EQU 0000$1000B mf1 EQU 0001$0000B ;ONE 5 1/4" MINI FLOPPY mf2 EQU 0010$0000B ;TWO - - - f1 EQU 0100$0000B ;ONE STANDARD 8" FLOPPY cr16mfd equ 1000$0000b ;cr16 format disk ;======================================================================== ;= CONDITIONAL ASSEMBLY PARAMETERS = ;======================================================================== BANKED EQU TRUE HDCTRL EQU dtc510a ;MSC9205 CRTYPE EQU cr7 ;CR8 HWCONFIG EQU st412+mf1 ;+cr16mfd ;======================================================================== VERSION EQU 11 MONTH EQU 04 DAY EQU 03 YEAR EQU 84 ;======================================================================== TPABANK EQU 1 if banked SYSBANK EQU 0 else SYSBANK EQU TPABANK endif ;------------------------------------ if (hwconfig and 0fh) eq st506 HD$TRKS EQU 153 HD$HEAD EQU 3 HD$MC1 EQU 1H HD$MC2 EQU 31H endif ;------------------------------------ if (hwconfig and 0fh) eq st412 HD$TRKS EQU 306 HD$HEAD EQU 3 HD$MC1 EQU 1H HD$MC2 EQU 31H endif ;------------------------------------ if (hwconfig and 0fh) eq st406 HD$TRKS EQU 306 HD$HEAD EQU 1 HD$MC1 EQU 1 HD$MC2 EQU 31H endif ;------------------------------------ if (hwconfig and 0fh) eq cdcwren HD$TRKS EQU 675 HD$HEAD EQU 4 HD$MC1 EQU 2 HD$MC2 EQU 0A2H endif ;------------------------------------ if (hdctrl eq msc9205) HD$PSPT EQU 17 else HD$PSPT EQU 18 endif ;------------------------------------ ccp$drive equ 1 ;drive A: ;************************************************************************ ;* CHIP BASES * ;************************************************************************ P$CTC EQU 000H ;00 - 07 P$PIO EQU 008H ;PARALLEL I/O PORTS 8255(08 - 0F) P$SIO EQU 010H ;10 - 1F P$MAP3 EQU 020H ;MAP REGISTER I/O (20 - 2F) P$DMA EQU 030H ;30 - 3F P$MFDC EQU 040H ;MINI FLOPPY DISK CONTROLLER P$PIT EQU 0D0H ;PROGRAMMABLE INTERVAL TIMER 8253 if (crtype eq CR8) P$HDC EQU 090H ;HARD DISK CONTROLLER else P$HDC EQU 05AH ;HARD DISK CONTROLLER P$UART EQU 0E0H ;8251 endif ;************************************************************************ ;* CTC PORTS AND COMMANDS * ;************************************************************************ P$DMA$INT EQU P$CTC+00H ;CTC CH0,(DMA INTERRUPTS) P$MFD$INT EQU P$CTC+01H ;CTC CH1,(FLOPPY INTERRUPT) P$TIM$INT EQU P$CTC+02H ;CTC CH2,16MS TIMER INTERRUPT P$SCI$INT EQU P$CTC+03H ;CTC CH3,(SCI MULTIBUS INTERRUPT) C$CTC$RESET EQU 03H ; ;************************************************************************ ;* PIO PORTS AND COMMANDS * ;************************************************************************ if (crtype eq CR8) P$BANK$DMA EQU P$PIO+0 ;MAP REGISTER endif P$SWITCH EQU P$PIO+1 ;PORT B P$RAMCTL EQU P$PIO+2 ;PORT C M$TEST$LED EQU 040H ;FOR PORT C M$HD$SELECT EQU 001H ;FOR PORT B ;************************************************************************ ;* SIO PORTS AND COMMANDS * ;************************************************************************ if (crtype eq CR8) P$LPT$DATA EQU P$SIO+0 ;LINE PRINTER DATA PORT P$LPT$STAT EQU P$SIO+2 ;LINE PRINTER CONTROL/STATUS endif P$CRT$STAT EQU P$SIO+3 ;CONSOLE CONTROL/STATUS P$CRT$DATA EQU P$SIO+1 ;CONSOLE DATA PORT P$MODEM$DATA EQU P$SIO+0 ;MODEM DATA PORT P$MODEM$STAT EQU P$SIO+2 ;MODEM CONTROL/STATUS PORT C$SIO$RESEXT EQU 010H C$SIO$CHRES EQU 018H C$SIO$RESTXI EQU 028H C$SIO$ERRRES EQU 030H ;************************************************************************ ;* DMA PORTS AND COMMANDS * ;************************************************************************ P$DMA$ADR0 EQU P$DMA+00H ; P$DMA$CNT0 EQU P$DMA+01H ; P$DMA$ADR1 EQU P$DMA+02H ; P$DMA$CNT1 EQU P$DMA+03H ; P$DMA$STAT EQU P$DMA+08H ;DMA COMMAND/STATUS P$DMA$REQ EQU P$DMA+09H ;DMA REQUEST P$DMA$MASK EQU P$DMA+0AH ;CHANNEL MASK P$DMA$MODE EQU P$DMA+0BH ;CHANNEL MODE P$DMA$TOGGLE EQU P$DMA+0CH ;BYTE POINTER FLIP-FLOP P$DMA$CLEAR EQU P$DMA+0DH ;MASTER CLEAR P$DMA$PMASK EQU P$DMA+0FH ;PARALLEL MASK C$DMA$BYTE EQU 041H ;COMMAND BYTE C$DMA$READ EQU 044H ;FLOPPY READ MODE BYTE C$DMA$WRITE EQU 048H ;FLOPPY WRITE MODE BYTE C$DMA$CH0 EQU 088H ;CH0 MODE BYTE C$DMA$CH1 EQU 085H ;CH1 MODE BYTE C$DMA$CH2 EQU 082H ;CH2 MODE BYTE (DUMMY) C$DMA$CH3 EQU 083H ;CH3 MODE BYTE (DUMMY) C$DMA$DONE EQU 002H ;DMA OPERATION COMPLETE MASK ;************************************************************************ ;* MINI FLOPPY DISK CONTROLLER PORTS AND COMMANDS * ;************************************************************************ P$MFD$STAT EQU P$MFDC ;MFDC COMMAND/STATUS P$MFD$TRK EQU P$MFDC+1 ;TRACK P$MFD$SECT EQU P$MFDC+2 ;SECTOR P$MFD$DATA EQU P$MFDC+3 ;DATA C$MFD$RESTORE EQU 008H ; C$MFD$SEEK EQU 018H ; C$MFD$RDSEC EQU 082H ; C$MFD$RDMSEC EQU 092H ; C$MFD$WRSEC EQU 0A2H ; C$MFD$WRMSEC EQU 0B2H ; C$MFD$WRTRK EQU 0C4H ; C$MFD$FBD EQU 0D0H ; C$MFD$FWRTRK EQU 0F4H ;WRITE TRACK (FORMAT),H.L.DELAY MFD$STEP$RATE EQU 0 XS$DELAY EQU 0 S$DELAY EQU 3 M$DELAY EQU 32 L$DELAY EQU 128 XL$DELAY EQU 160 ;************************************************************************ ;* MSC 9205 HARD DISK CONTROLLER PORTS AND COMMANDS * ;************************************************************************ if (hdctrl eq MSC9205) P$HD$0 EQU P$HDC ; P$HD$1 EQU P$HDC+1 ; P$HD$2 EQU P$HDC+2 ; P$HD$3 EQU P$HDC+3 ; P$HD$4 EQU P$HDC+4 ; P$HD$5 EQU P$HDC+5 ; P$HD$7 EQU P$HDC+7 ; C$HD$NOP EQU 000H C$HD$SEEK EQU 001H C$HD$FORMAT EQU 002H C$HD$RESTORE EQU 003H C$HD$READ EQU 004H C$HD$VERIFY EQU 005H C$HD$WRITE EQU 006H C$HD$SETINTL EQU 007H endif ;************************************************************************ ;* DTC 510A HARD DISK CONTROLLER PORTS AND COMMANDS * ;************************************************************************ if (hdctrl eq DTC510A) if (crtype eq CR8) P$CSR EQU P$HDC ;CHANNEL STATUS REG. PORT P$CCSR EQU P$HDC+1 ;COMMAND COMPLETION STATUS REG. PORT P$DADDRL EQU P$HDC+2 ;DATA BUFFER LOW ADDRESS PORT P$DADDRM EQU P$HDC+3 ;DATA BUFFER MID ADDRESS PORT P$CADDRL EQU P$HDC+4 ;COMMAND BUFFER LOW ADDRESS PORT P$CADDRM EQU P$HDC+5 ;COMMAND BUFFER MID ADDRESS PORT P$DADDRH EQU P$HDC+6 ;DATA BUFFER HIGH ADDRESS PORT P$CADDRH EQU P$HDC+7 ;COMMAND BUFFER HIGH ADDRESS PORT else P$HD$STAT EQU P$HDC ; P$HD$DATA EQU P$HDC+1 ; P$HD$RESET EQU P$HDC+5 ; endif C$DIRDY EQU 00H ;TEST DRIVE READY C$DIRST EQU 01H ;RESTORE C$DIRSYN EQU 02H ;REQUEST SYNDROME C$DIRSS EQU 03H ;REQUEST SENSE STATUS C$DIFORM EQU 04H ;FORMAT DISK C$DIVERF EQU 05H ;VERIFY TRACK FORMAT C$DIFMT EQU 06H ;FORMAT TRACK C$DIFBAD EQU 07H ;FORMAT BAD TRACK C$HD$READ EQU 08H ;READ DATA C$HD$WRITE EQU 0AH ;WRITE DATA C$DISEEK EQU 0BH ;SEEK C$DISET EQU 0C2H ;SET DRIVE CHARACTERISTICS endif ;************************************************************************ ;* PIT PORTS AND COMMANDS * ;************************************************************************ if (crtype eq CR8) P$LPT$BAUD EQU P$PIT+1 ; P$CRT$BAUD EQU P$PIT+2 ; P$PIT$CMD EQU P$PIT+3 ; P$MODEM$BAUD EQU P$LPT$BAUD ; C$LPT$MODE EQU 0111$0110B ;CH 1,LOAD LSB THEN MSB,MODE 3,BINARY C$CRT$MODE EQU 1011$0110B ;CH 2,LOAD LSB THEN MSB,MODE 3,BINARY C$MODEM$MODE EQU C$LPT$MODE ;CH 1 else P$LPT$BAUD EQU P$PIT+0 ; P$MODEM$BAUD EQU P$PIT+1 ; P$CRT$BAUD EQU P$PIT+2 ; P$PIT$CMD EQU P$PIT+3 ; C$MODEM$MODE EQU 0111$0110B ;CH 1, C$CRT$MODE EQU 1011$0110B ;CH 2,LOAD LSB THEN MSB,MODE 3,BINARY C$LPT$MODE EQU 0011$0110B ;CH 3, ;************************************************************************ ;* UART PORTS AND COMMANDS * ;************************************************************************ P$LPT$DATA EQU P$UART+0 ;LINE PRINTER DATA PORT P$LPT$STAT EQU P$UART+1 ;LINE PRINTER CONTROL/STATUS C$UART$MODE EQU 04EH ; C$UART$CMD EQU 037H ; endif ;************************************************************************ ;* MASKS AND VALUES * ;************************************************************************ M$CRT$OUT EQU 04H ;CRT TX EMPTY MASK V$CRT$OUT EQU 04H ; " " " VALUE M$CRT$IN EQU 01H ;CRT RX READY MASK V$CRT$IN EQU 01H ; " " " VALUE if (crtype eq CR8) M$LPT$OUT EQU 24H ;LPT TX EMPTY MASK V$LPT$OUT EQU 24H ; " " " VALUE M$LPT$IN EQU 00H ;LPT RX READY MASK V$LPT$IN EQU 00H ; " " " VALUE else M$LPT$OUT EQU 01H ;LPT TX EMPTY MASK V$LPT$OUT EQU 01H ; " " " VALUE M$LPT$IN EQU 02H ;LPT RX READY MASK V$LPT$IN EQU 02H ; " " " VALUE endif M$MODEM$OUT EQU M$CRT$OUT V$MODEM$OUT EQU V$CRT$OUT M$MODEM$IN EQU M$CRT$IN V$MODEM$IN EQU V$CRT$IN M$RAMMAP EQU 20H ;PORT MASK ;************************************************************************ ;* EQUATES FOR MODE BYTE BIT FIELDS * ;************************************************************************ MB$INPUT EQU 0000$0001B ;DEVICE MAY DO INPUT MB$OUTPUT EQU 0000$0010B ; " " " OUTPUT MB$IN$OUT EQU MB$INPUT+MB$OUTPUT ; " " " BOTH MB$SOFT$BAUD EQU 0000$0100B ;SOFTWARE SELECTABLE BAUD RATE MB$SERIAL EQU 0000$1000B ;DEVICE MAY USE PROTOCOL MB$XON$XOFF EQU 0001$0000B ;XON/XOFF PROTOCOL ENABLED BAUD$600 EQU 7 ;600 BAUD BAUD$1200 EQU 8 ;1200 BAUD BAUD$2400 EQU 10 ;2400 BAUD BAUD$4800 EQU 12 ;4800 BAUD BAUD$9600 EQU 14 ;9600 BAUD BAUD$19200 EQU 15 ;19.2K BAUD ;************************************************************************ ;* MISC EQUATES * ;************************************************************************ CR EQU 0DH ;ASCII CARRIAGE RETURN LF EQU 0AH ;ASCII LINE FEED ESC EQU 1BH ;ASCII ESCAPE BELL EQU 07H ;ASCII BELL RING BS EQU 08H ;ASCII BACK SPACE ;--------------------------------------------------------------------------- «eof»