SUBTTL INTERNAL DISK CONTROLLER DEFINITIONS ;**************************************************************************** ; ; INTERNAL BOARD LEVEL PARAMETERS INCLUDE MODULE FOR THE JADE ; DOUBLE D DISK CONTROLLER BOARD. INCLUDE THIS MODULE TO DEFINE ANY ; PARAMETERS WITH SOFTWARE TO EXECUTE ON THE BOARD'S Z-80 PROCESSOR. ; ;**************************************************************************** ; ; REVISIONS: ; ; 1.0 - 19 JUL 82 ; RELEASE ; ; 1.1 - 14 FEB 83 ; MODIFIED FOR REV C BOARD: ; CHANGED DEFINITIONS TO ALLOW FOR 1795/7 CHIP ; ; 1.2 - 23 OCT 83 GRH ; CLEANED UP, ADDED HEADER GRAPHICS ; ; 1.3 - 30 OCT 85 GRH ; Rearranged definitions. Added double sided hooks. ; ; 1.4 - 24 NOV 85 GRH ; Change code to reflect prom version of hardware. ; ; 1.5 - 22 SEP 86 GRH ; Add automatic 5"/8" timing constant selection based on value of ; assembler variable 'DSIZE' {5,8}. DSIZE MUST be defined in main ; file. ; ;**************************************************************************** ;============================================================================ ; ; DISK DRIVE PARAMETERS ; ;============================================================================ IF DSIZE = 8 NBTRK EQU 80 ;MAXIMUM # STEPS TMPLD EQU 1200 ;PHASE LOCK RECOVERY (100US) (DCM) TMSAW EQU 10 ;STEP AFTER WRITING (100US) (DCM) DFHLD EQU 350 ;HEAD ENGAGE TIME (100US) (DCM) DFSTPC EQU 80 ;STEPPER INTERVAL (100US) (DCM) DFALS EQU 80 ;DELAY AFTER LAST STEP (100US) (DCM) DFMTO EQU 1 ;MOTOR START UP DELAY (100US) (DCM) ENDIF IF DSIZE = 5 NBTRK EQU 80 ;MAXIMUM # STEPS TMPLD EQU 1200 ;PHASE LOCK RECOVERY (100US) (DCM) TMSAW EQU 10 ;STEP AFTER WRITING (100US) (DCM) DFHLD EQU 350 ;HEAD ENGAGE TIME (100US) (DCM) DFSTPC EQU 80 ;STEPPER INTERVAL (100US) (DCM) DFALS EQU 80 ;DELAY AFTER LAST STEP (100US) (DCM) DFMTO EQU 4000 ;MOTOR START UP DELAY (100US) (DCM) ENDIF ;============================================================================ ; ; RETRY VALUES: ; ;============================================================================ RTYSK EQU 5 ;REPOSITION HEAD ON RETRY RTYLS EQU 9 ;LAST REPEATED RETRY ;============================================================================ ; ; INTERNAL MEMORY ASSIGNMENTS ; ROM= 0000..0FFFH ; RAM BANK 0= 8000H..83FFH ; RAM BANK 1= 8400H..87FFH ; ;============================================================================ BANKL EQU 1024 ;1K BANK LENGTH BANK0 EQU 8000H ;LOWER BANK BASE ADDR BANK1 EQU BANK0 + BANKL ;UPPER BANK BASE ADDR RAMSIZ EQU BANKL * 2 ;EXTENT OF RAM ; FMTBG EQU BANK0 ;FORMAT BUFFER FMTPS EQU FMTBG + 4 ;FORMAT START ADDR ;============================================================================ ; ; PORTS ; ;============================================================================ BLSTS: EQU 0 ;BOARD LEVEL STATUS PORT ; ; D7 D0 ; |DCN|2SD|MOF|EIA|INT|TST|US1|US0| ; ^ ^ ^ ^ ^ ^ ^ ^_____ 1: 179X DATA INVERT ; | | | | | | |_________ 1: USER SWITCH 1 (SPARE) ; | | | | | |_____________ 0: TEST MODE ; | | | | |_________________ 0: HOST INTERRUPT REQUEST ; | | | |_____________________ 1: EIA PORT INPUT ; | | |_________________________ 1: MOTOR OFF ; | |_____________________________ 0: 2 SIDED DRIVE ; |_________________________________ 0: DISK CHANGE FLAG ; ; THE FOLLOWING DEFINES EACH BIT & FUNCTION OF THE BOARD ; STATUS PORT (BLSTS) BSUS0 EQU 00000001B ;USER SWITCH 0 - 179X INVERT BSUS1 EQU 00000010B ;USER SWITCH 1 - SPARE BSTST EQU 00000100B ;TEST MODE BSINT EQU 00001000B ;HOST INT REQ BSEIA EQU 00010000B ;EIA SIGNAL INPUT BSMOF EQU 00100000B ;MOTOR OFF INDICATOR BSTSD EQU 01000000B ;2 SIDED DRIVE FLAG BSDCN EQU 10000000B ;DISK CHANGE ;============================================================================ BLCTL: EQU 0 ;BOARD LEVEL CONTROL PORT ; ; |PCB|PCA|DAS|DDE|EIA|DSE|DSB|DSA| ; \_____/ ^ ^ ^ ^ \_____/ ; | | | | | |______ DRIVE SELECT ADDRESS (0..3) ; | | | | |____________ DRIVE SELECT & FDC NMI ENABLE ; | | | |________________ EIA OUTPUT PORT ; | | |____________________ DOUBLE DENSITY ENABLE ; | |________________________ DIRECTION & SIDE SELECT ; | 1: IN/SIDE 1, 0: OUT/SIDE 0 ; |______________________________ PRECOMP SELECT (0..3) ; ; THE FOLLOWING ASSIGNS EACH BIT POSITION & FUNCTION OF THE ; BOARD CONTROL PORT (BLCTL). ; BCDSA EQU 00000001B ;DRIVE SELECT A (2^0) BCDSB EQU 00000010B ;DRIVE SELECT B (2^1) BCDSE EQU 00000100B ;DRIVE SELECT ENABLE BCEIA EQU 00001000B ;EIA SIGNAL OUT BCDDE EQU 00010000B ;DOUBLE DENSITY ENABLE BCDAS EQU 00100000B ;DIRECTION & SIDE BCPCA EQU 01000000B ;PRECOMP SELECT A BCPCB EQU 10000000B ;PRECOMP SELECT B BCDR0: EQU 0 ;DRIVE 0 SELECT ; ; FUNCTION ASSIGNMENTS: ; BCDSN EQU BCDSA + BCDSB ;DRIVE MASK BCSDS EQU 0 ;SINGLE DENSITY BCDDS EQU BCDDE ;DOUBLE DENSITY BCPCH EQU BCPCA ;PRECOMP HEAVY BCPCM EQU BCPCB ;PRECOMP MEDIUM BCPCL EQU BCPCA + BCPCB ;PRECOMP LIGHT BCPCZ EQU 0 ;PRECOMP OFF ;============================================================================ WDCMD: EQU 4 ;179X COMMAND REGISTER ; ; TYPE I COMMANDS: ; 7 0 ; |0 | | |U |H |V |R1|R2| ; \___/ ^ ^ ^ \___/ ; | | | | |___ STEP RATE (SEE DATA SHEET) ; | | | |________ 1: VERIFY TRACK AFTER SEEK, 0: NO VERIFY ; | | |___________ 1: LOAD HEAD, 0: UNLOAD HEAD ; | |______________ 1: UPDATE TRACK REGISTER, 0: NO UPDATE ; |__________________ COMMAND: ; 00: RESTORE & SEEK 01: STEP AS LAST ; 10: STEP IN 11: STEP OUT ; DCHDL: EQU 00011000B ;LOAD HEAD DCHDU EQU 00010000B ;HEAD UNLOAD ; ; ; TYPE II COMMANDS: ; 7 0 ; |1 |0 |WT|M |F2|E |F1|A0| ; ^ ^ ^ ^ ^ ^___ WRITE 1: DELETED, 0: NORMAL DATA MARK ; | | | | | (0 FOR READ COMMAND) ; | | | | |______ 1: SIDE 1, 0: SIDE 0 ; | | | |_________ 1: HEAD LOAD DELAY, 0: NO HEAD LOAD DELAY ; | | |____________ SECTOR LENGTH FIELD SELECT (SEE MANUAL) ; | | (SHOULD BE 1 FOR IBM STANDARD) ; | |_______________ 1: READ MULTIPLE SECTORS, 0: NOT ; |__________________ 1: WRITE, 0: READ COMMAND ; DCRDS EQU 10001000B ;READ SECTOR DCRMSº EQÕ 10011000Â ;REAÄ MULIPLÅ RECORDS DCWRS EQU 10101000B ;WRITE SECTOR ; ; ; TYPE III COMMANDS: ; 7 0 ; |1 |1 | | |0 |E |0 |0 | ; \___/ ^_________ 1: HEAD LOAD DELAY, 0: NO DELAY ; |________________ COMMAND: ; 00: READ ADDRESS 01: NOT USED ; 10: READ TRACK 11: WRITE TRACK ; DCRDA EQU 11000000B ;READ TRACK ADDR DCWRT EQU 11110000B ;WRITE TRACK FORMAT ; ; ; TYPE IV COMMANDS: ; 7 0 ; |1 |1 |0 |1 |I3|I2|I1|I0| ; ^ ^ ^ ^___ 1: INTERRUPT ON LOW-TO-HIGH READY ; | | |______ 1: INTERRUPT ON HIGH-TO-LOW READY ; | |_________ 1: INTERRUPT ON NEXT INDEX PULSE ; |____________ 1: INTERRUPT IMMEDIATELY ; DCSTS: EQU 11010000B ;TERMINATE OPERATION & READ TYPE 1 STATUS DCIFI EQU 11011000B ;FORCED INTERRUPT - NOT USED ;============================================================================ WDSTS: EQU WDCMD ;179X STATUS REGISTER ; ; STATUS BIT DEFINITIONS ; TYPE I COMMAND RESULTS: ; 7 0 ; |NR|WP|HL|SE|CE|T0|IX|BY| ; ^ ^ ^ ^ ^ ^ ^ ^___ 1: BUSY, 0: DONE ; | | | | | | |______ 1: INDEX, 0: NOT INDEX ; | | | | | |_________ 1: TRACK 00, 0: NOT TRACK 00 ; | | | | |____________ 1: CRC ERROR IN ID FIELD ; | | | |_______________ 1: TRACK SEEK VERIFY ERROR, 0: VERIFY OK ; | | |__________________ 1: HEAD LOADED, 0: HEAD UNLOADED ; | |_____________________ 1: DISK WRITE PROTECTED, 0: UNPROTECTED ; |________________________ 1: DRIVE NOT READY, 0: DRIVE READY ; CSDNR EQU 10000000B ;DRIVE NOT READY CSWRP EQU 01000000B ;WRITE PROTECTED CSHLD EQU 00100000B ;HEAD LOADED CSSKE EQU 00010000B ;SEEK ERROR CSCRC EQU 00001000B ;CRC ERROR CSTK0 EQU 00000100B ;TRACK 0 CSINDX EQU 00000010B ;INDEX CSBSY EQU 00000001B ;BUSY ; ; ; TYPE II & III COMMAND RESULTS ; 7 0 ; |NR|WP|WF|NF|CE|LD|RQ|BY| ; ^ ^ ^ ^ ^ ^ ^ ^___ 1: BUSY, 0: DONE ; | | | | | | |______ 1: XFER DATA, 0: NOT READY TO XFER DATA ; | | | | | |_________ 1: LOST DATA XFER, 0: XFER OK ; | | | | |____________ 1: CRC ERROR IN ID FIELD ; | | | |_______________ 1: RECORD NOT FOUND, 0: XFER OK ; | | |__________________ 1: READ- DELETED DATA, WRITE- WRITE FAULT ; | |_____________________ 1: DISK WRITE PROTECTED, 0: UNPROTECTED ; |________________________ 1: DRIVE NOT READY, 0: DRIVE READY ; ; SAME AS TYPE I COMMANDS EXCEPT: CSTYPE EQU 00100000B ;RECORD TYPE CSWFLT EQU 00100000B ;WRITE FAULT CSRNF EQU 00010000B ;RECORD NOT FOUND CSLDE EQU 00000100B ;LOST DATA ERR CSDRQ EQU 00000010B ;DATA REQUEST ; ; DISK STATUS MASKS ; DMRER EQU CSDNR+CSRNF+CSCRC+CSLDE+CSBSY ;READ ERROR TEST MASK DMWER EQU CSDNR+CSWRP+CSWFLT+CSRNF+CSCRC+CSLDE+CSBSY ;WRITE ERROR TEST DMFER EQU CSDNR+CSWRP+CSWFLT+CSLDE ;FORMAT ERROR TEST DMTK0 EQU CSTK0 ;TRACK 0 TEST DMHDL EQU CSHLD ;HEAD LOAD TEST DMDNR EQU CSDNR ;DRIVE NOT READY DMLDE EQU CSLDE ;LOST DATA ERR ;============================================================================ WDTRK EQU WDCMD + 1 ;179X TRACK REGISTER ;============================================================================ WDSEC EQU WDCMD + 2 ;179X SECTOR REGISTER ;============================================================================ WDDTA EQU WDCMD + 3 ;179X DATA REGISTER ;============================================================================ XPSTP: EQU 8H ;STEP PULSE GENERATOR ; (DATA = DON'T CARE) ;============================================================================ XPMTO: EQU 10H ;MOTOR OFF GENERATOR ; (DATA = DON'T CARE) ;============================================================================ XPIRR EQU 20H ;RESET HOST INTERRUPT REQUEST FF ; (DATA = DON'T CARE) ;============================================================================ XPMTX: EQU 40H ;MOTOR ON GENERATOR ; (DATA = DON'T CARE) ;============================================================================ XPDSH: EQU 80H ;DATA SYNC HOLD ; (DATA = DON'T CARE)