; File: CC.PROM.EQ.TEXT ; Date: 18-Jan-84 ; PROMvers equ 1 ;Current PROM version number PROMlevl equ 15 ;{!CV};Current PROM version number (interim) PROMlevl equ 0 ;{!UP};Current PROM level number ; RAMbase equ $00000 ;Base address of low RAM RAMlen equ $1000 ;Length of low RAM (4k bytes) RAMkbbuf equ RAMbase+$300 ;Start of keyboard buffer RAMkblen equ $100 ;Length of keyboard buffer RAMmxbug equ RAMbase+$400 ;Start of MACSBUG RAM RAMwksta equ RAMbase+$700 ;Start of workstation RAM RAMend equ RAMbase+RAMLen ;End address + 1 of low RAM ; ROMbase equ $10000 ;Base address of workstation PROM ROMlen equ $2000 ;Length of workstation PROM ROMend equ ROMbase+ROMlen ;End address + 1 of workstation PROM ; MXBbase equ $20000 ;Base address of MACSBUG (if present) MXBlen equ $2000 ;Length of MACSBUG MXBend equ MXBbase+MXBlen ;End address + 1 of MACSBUG MXBinit equ MXBbase+4 ;Address of MacsBug init vector 0.5 MXBentry equ MXBbase+8 ;Address of MacsBug entry vector 0.5 ; IOPbase equ $30000 ;Base address of I/O pg IOPprom equ IOPbase+$0200 ;Base address of slot PROMs 0.7 VIAbase equ IOPbase+$0F00 ;Base address of VIA registers ; DSPbase equ $80000 ;{!CC}Base address of display buffer 0.8 DSPlen equ $0E000 ;{!CC}Length of display buffer 0.8 DSPend equ DSPbase+DSPlen ;{!CC}End address + 1 of display buffer 0.8 USRbase equ DSPend ;{!CC}Base address of user RAM 0.8 ; DSPbase equ $880000 ;{!UC}Base address of display buffer 0.8 DSPlen equ $00E000 ;{!UC}Length of display buffer 0.8 DSPend equ DSPbase+DSPlen ;{!UC}End address + 1 of display buffer 0.8 USRbase equ $080030 ;{!UC}Base address of user RAM 0.8 ; DSPbase equ $80000 ;{!VN}Base address of display buffer 0.8 DSPlen equ $0E000 ;{!VN}Length of display buffer 0.8 DSPend equ DSPbase+DSPlen ;{!VN}End address + 1 of display buffer 0.8 USRbase equ DSPend ;{!VN}Base address of user RAM 0.8 ; MEMprom equ $90000 ;memory limit if not in PROM 0.7 MEM256k equ $BFFFC ;memory limit for 256k system 0.7 MEM512k equ $FFFFC ;{!CV};memory limit for 512k system 0.7 MEM512k equ $FF7FC ;{!UC};memory limit for 512k system 0.8 page ; ; Corvus CONCEPT Workstation interrupt vector definition ; IVlvl1 equ $64 ;level 1 interrupt vector (SLOTS) IVlvl2 equ $68 ;level 2 interrupt vector (DC1) IVlvl3 equ $6C ;level 3 interrupt vector (OMNINET) IVlvl4 equ $70 ;level 4 interrupt vector (DC0) IVlvl5 equ $74 ;level 5 interrupt vector (TIMER) IVlvl6 equ $78 ;level 6 interrupt vector (KYDB) IVlvl7 equ $7C ;level 7 interrupt vector ; ; Corvus CONCEPT Workstation static RAM address definition ; CPbtslot equ RAMwksta+$000 ;(700-700) boot slot number CPbtsrvr equ RAMwksta+$001 ;(701-701) boot server number ;(702-705) CPosslot equ RAMwksta+$006 ;(706-706) OS volume slot number CPossrvr equ RAMwksta+$007 ;(707-707) OS volume server number CPosdrv equ RAMwksta+$008 ;(708-708) OS volume drive number CPosblk equ RAMwksta+$009 ;(709-70B) OS volume block number CPtrnvrs equ RAMwksta+$00C ;(70C-70C) OMNINET transporter version CPtprnbr equ RAMwksta+$00D ;(70D-70D) OMNINET transporter number CPdiskRC equ RAMwksta+$00E ;(70E-70E) disk controller return code CPomniRC equ RAMwksta+$00F ;(70F-70F) OMNINET return code ; CPtimout equ RAMwksta+$010 ;(710-713) boot disk timeout value 0.7 CPblkio equ RAMwksta+$014 ;(714-717) boot disk blk i/o subr pointer CPdskio equ RAMwksta+$018 ;(718-71B) boot disk i/o subr pointer ; CPuserID equ RAMwksta+$01C ;(71C-725) user name (decrypted) CPusernm equ RAMwksta+$026 ;(726-72F) user name (encrypted) ; CPfinlv equ RAMwksta+$030 ;(730-733) floppy interleave table pointer CPfdvsz equ RAMwksta+$034 ;(734-735) floppy device size (blocks) CPfbps equ RAMwksta+$036 ;(736-737) floppy bytes per sector CPfspt equ RAMwksta+$038 ;(738-738) floppy sectors per track CPftps equ RAMwksta+$039 ;(739-739) floppy tracks per side CPfspd equ RAMwksta+$03A ;(73A-73A) floppy sides per disk CPfofst equ RAMwksta+$03B ;(73B-73B) floppy first track offset CPftyp equ RAMwksta+$03C ;(73C-73C) floppy type ; CPwndrcd equ RAMwksta+$040 ;(740-763) system window record (36 bytes) CPscnofs equ RAMwksta+$064 ;(764-765) bytes per display scan line CPdspflg equ RAMwksta+$066 ;(766-766) display flags CPbblen equ RAMwksta+$067 ;(767-767) blind boot user name length 0.8 CPbbname equ RAMwksta+$068 ;(768-76F) blind boot user name 0.8 page CPsl1typ equ RAMwksta+$071 ;(771-771) slot device type for slot 1 CPsl2typ equ RAMwksta+$072 ;(772-772) slot device type for slot 2 CPsl3typ equ RAMwksta+$073 ;(773-773) slot device type for slot 3 CPsl4typ equ RAMwksta+$074 ;(774-774) slot device type for slot 4 CPsl5typ equ RAMwksta+$075 ;(775-775) slot device type for slot 5 ; CPuserpw equ RAMwksta+$080 ;(780-787) user password (encrypted) 0.7 CPomnidv equ RAMwksta+$090 ;(790-7CF) network devices (64 bytes) 0.7 ; (indexed by transporter nbr) 0.7 CPsrvnam equ RAMwksta+$0D0 ;(7D0-7D9) disk server name (10 bytes) 0.8 CPticks equ RAMwksta+$0DA ;(7DA-7DD) 50 ms. ticks from timer drvr 0.8 ; CPomnram equ RAMwksta+$180 ;(880-88F) static RAM for OMNINET CPsl1ram equ RAMwksta+$200 ;(900-9FF) static RAM for slot 1 device CPsl2ram equ RAMwksta+$300 ;(A00-AFF) static RAM for slot 2 device CPsl3ram equ RAMwksta+$400 ;(B00-BFF) static RAM for slot 3 device CPsl4ram equ RAMwksta+$500 ;(C00-CFF) static RAM for slot 4 device ; CPiobuf equ RAMwksta+$600 ;(D00-EFF) I/O buffer (512 bytes) CPstack equ RAMwksta+$800 ;(F00-FFF) initial system stack CPextcrt equ RAMwksta+$800 ;(F00-F00) external CRT flag CPsysst equ RAMwksta+$801 ;(F01-F01) system initialization status CPistack equ RAMwksta+$8FC ;(FFC-FFC) initial system stack pointer ; CPomnibf equ USRbase-$30 ;OMNINET driver buffer (48 bytes) 0.8 ; (OMNINET can't access below $80000) page ; ; Corvus CONCEPT Workstation PROM address vector definitions ; CPsysrst equ ROMbase+$004 ;(10004) system restart pointer CPuniqid equ ROMbase+$008 ;(10008) unique workstation ID CPromvrs equ ROMbase+$00C ;(1000C) PROM version number CPromlvl equ ROMbase+$00D ;(1000D) PROM level number CPcksum equ ROMbase+$00E ;(1000E) PROM checksum ; CPobootj equ ROMbase+$010 ;(10010) jump to OMNINET disk boot subr CPoboot equ ROMbase+$012 ;(10012) OMNINET disk boot subr pointer CPoblkio equ ROMbase+$016 ;(10016) OMNINET disk blk i/o subr pointer CPodskio equ ROMbase+$01A ;(1001A) OMNINET disk i/o subr pointer ; CPlbootj equ ROMbase+$020 ;(10020) jump to local disk boot subr CPlboot equ ROMbase+$022 ;(10022) local disk boot subr pointer CPlblkio equ ROMbase+$026 ;(10026) local disk blk i/o subr pointer CPldskio equ ROMbase+$02A ;(1002A) local disk i/o subr pointer ; CPfbootj equ ROMbase+$030 ;(10030) jump to floppy disk boot subr CPfboot equ ROMbase+$032 ;(10032) floppy boot subr pointer CPfblkio equ ROMbase+$036 ;(10036) SSSD floppy blk i/o subr pointer CPfsctio equ ROMbase+$03A ;(1003A) SSSD floppy sector i/o subr pointer CPfinit equ ROMbase+$03E ;(1003E) SSSD floppy initialization ;Pablkio equ ROMbase+$042 ;(10042) Apple floppy blk i/o subr pointer ;Pasctio equ ROMbase+$046 ;(10046) Apple floppy sector i/o subr pointer ;Painit equ ROMbase+$04A ;(1004A) Apple floppy initialization CPxblkio equ ROMbase+$042 ;(10042) DDDS floppy blk i/o subr ptr 0.7 CPxsctio equ ROMbase+$046 ;(10046) DDDS floppy sctr i/o subr ptr 0.7 CPxinit equ ROMbase+$04A ;(1004A) DDDS floppy initialization 0.7 ; CPkbinit equ ROMbase+$050 ;(10050) initialize (reset) keyboard driver CPkbgetc equ ROMbase+$054 ;(10054) get a keyboard character ; CPdsinit equ ROMbase+$060 ;(10060) initialize display driver CPdsputc equ ROMbase+$064 ;(10064) display a character CPdsputs equ ROMbase+$068 ;(10068) display a string CPdscvuc equ ROMbase+$06C ;(1006C) convert character to upper case ; CPivec1 equ ROMbase+$070 ;(10070) level 1 interrupt vector (SLOTS) CPivec2 equ ROMbase+$074 ;(10074) level 2 interrupt vector (DC1) CPivec3 equ ROMbase+$078 ;(10078) level 3 interrupt vector (OMNINET) CPivec4 equ ROMbase+$07C ;(1007C) level 4 interrupt vector (DC0) CPivec5 equ ROMbase+$080 ;(10080) level 5 interrupt vector (TIMER) CPivec6 equ ROMbase+$084 ;(10084) level 6 interrupt vector (KYDB) CPivec7 equ ROMbase+$088 ;(10088) level 7 interrupt vector page ; ; Corvus CONCEPT Workstation I/O pg definitions ; IOkybd equ VIAbase+$05 ;(30F05) level 6 - keyboard 0.7 IOdc0 equ VIAbase+$25 ;(30F25) level 4 - data comm 0 0.7 IOdc1 equ VIAbase+$45 ;(30F45) level 2 - data comm 1 0.7 IObootsw equ VIAbase+$61 ;(30F61) boot selection switches IObeepfq equ VIAbase+$71 ;(30F71) beep frequency IOtimr equ VIAbase+$7D ;(30F7D) level 5 - timer 0.7 IOslot equ VIAbase+$7F ;(30F7F) level 1 - slots (port A ORA) 0.7 IOomni equ VIAbase+$C1 ;(30FC1) level 3 - OMNINET 0.7 ; ; Slot device types (set in CPsl1typ..CPsl5typ) ; DTndev equ 0 ;no device DTlocl equ 1 ;local disk DTomni equ 2 ;OMNINET disk DTc8 equ 3 ;Corvus 8" SSSD floppy disk DTc5 equ 4 ;Corvus 5" SSSD floppy disk (unused) DTa5 equ 5 ;Apple 5" floppy disk ; DTbank equ 6 ;Corvus BANK ; DTf8 equ 7 ;Corvus 8" DSDD floppy disk DTf5 equ 8 ;Corvus 5" DSDD floppy disk DTf3 equ 9 ;Corvus 3" DSDD floppy disk ; Miscellaneous equates ; off equ 0 ; on equ 1 ; false equ 0 ;Pascal FALSE boolean true equ 1 ;Pascal TRUE boolean jumpto equ $4EF9 ;"jmp" op code DskRead equ $32 ;disk read command DskWrit equ $33 ;disk write command NTO1 equ $00040000 ;{!CC};network timeout - broadcast NTO2 equ $07FFFFFF ;{!CC};network timeout - normal traffic ;{!CC}; (25 minutes) NTO1 equ $000C0000 ;{!MM};network timeout - broadcast NTO2 equ $0FFFFFFF ;{!MM};network timeout - normal traffic ;{!MM}; (25 minutes) page ;driver address equates ; ; CC.PROM.KB -- Keyboard driver equates ; ; ; ADDRESSES OF KEYBOARD UART'S I/O REGISTERS ; KBRdata EQU VIAbase+$01 ;DATA INPUT PORT KBRstat EQU VIAbase+$03 ;STATUS REGISTER KBRcmnd EQU VIAbase+$05 ;COMMAND REGISTER KBRcntl EQU VIAbase+$07 ;CONTROL REGISTER ; ; External CRT equates ; KBcPort equ $30f21 ;data comm 0 UART pointer KBuDa equ 0 ;UART data port offset KBuSt equ 2 ;UART status port offset KBrdBit equ 3 ;busy bit for input ; ; CC.PROM.DS -- Display driver equates ; DShomeH equ $8D55E ;{!CC}horizontal home location 0.8 DShomeV equ $8D506 ;{!CC}vertical home location 0.8 DShomeH equ $88D55E ;{!UC}horizontal home location 0.8 DShomeV equ $88D506 ;{!UC}vertical home location 0.8 DShomeH equ $8D55E ;{!VN}horizontal home location 0.8 DShomeV equ $8D506 ;{!VN}vertical home location 0.8 DSdefOf equ 96 ;default bytes per scan line DScellW equ 6 ;character cell width DScellY equ 10 ;character cell height DSmaxXH equ 719 ;120*DScellW-1 DSmaxYH equ 559 ;56*DScellY-1 DSmaxXV equ 557 ;93*DScellW-1 DSmaxYV equ 719 ;72*DScellY-1 ; ; External CRT equates ; DScPort equ $30f21 ;data comm 0 UART pointer DSuDa equ 0 ;UART data port offset DSuSt equ 2 ;UART status port offset DSwrBit equ 4 ;busy bit for output ; ; CC.PROM.LD -- Local disk driver equates ; ; ; CC.PROM.OD -- Omninet disk driver equates ; StrAdr EQU $30FA1 ;address of Transporter register RdyAdr EQU $30F7F ;address of VIA register A, used for Omninet ready page ;driver address equates (continued) ; ; CC.PROM.FD -- Corvus 8" SSSD floppy disk driver equates ; ; FLOPPY MAIN EQUATES USED BY THE DRIVERS AND FORMAT CODE GROUPS. ; indices to code in static ram - ram is slot dependent $900 for ; $A00 for slot 2, $B00 for slot 3, and $C00 for slot 4. ; BASERAM equ CPsl1ram ;ADDRESS OF FIRST RAM FOR SLOTS BLKSZ equ 512 ;OS BLOCK SIZE ; ; SLOT BASE ADDRESSES ; ; The floppy controller is inserted into one of the slots. ; Each slot has two address select decodes coming to it. ; One is called NDEVSEL and the other is called SLOTSEL. ; NDEV1AD equ $30001 ;ADRS OF NDEV0 (does not exist) DEVADOFST equ $20 ;OFFSET OF OTHER NDEVS ADRS ; SLOT1AD equ $30001 ;ADRS OF slot 0 (does not exist) SLTADOFST equ $200 ;ADRS OFST FOR OTHER SLOTS ; SLTSTAD equ $30A01 ;SLOT STATUS ADRS ; ; CC.PROM.FB -- Corvus 8" DDDS floppy disk driver equates ; ; I/O slot base address ; IOSbase EQU $30001 ;as if a slot 0 existed IOSoffst EQU $20 ;offset to next slot ; DBPoffst EQU $100 ;offset to next pg of static ram MAXdrive EQU 4 ;maximum number of drives