System definitions
opt -l
ttl System Type Definitions for the Positron 9000
page
****************************************
ifeq CPUType-Positron
************************************************************
*
* Dynamic Address Translator Definitions
*
***************
*
* Note that DAT.BlCt is also understood by AllProc and
* Chain (in OS9-P2) to be the number of blocks available
* to each task. If less than 64k is available, these
* routines must be modified to put DAT.Free in the
* blocks that can be allocated, and the required values
* into the other blocks, (eg the I/O block), to complete
* the DAT image.
*
DAT.BlCt equ 32 D.A.T. blocks/address space available
*
***************
DAT.BlUs equ 32 blocks available for RAM in address space
DAT.GBlk equ DAT.BlCt*2 number of graphics blocks
DAT.Blsz equ $800 D.A.T. block size in bytes
DAT.ImSz equ DAT.BlCt*2 D.A.T. Image size
***************
*
* DAT.Addr calculates a mask for the top bits of the
* logical address that are mapped by the MMU
DAT.Addr equ -(DAT.BlSz/256) D.A.T. MSB Address bits
*
***************
***************
*
DAT.Regs equ $FF80 DAT RAM base address
DAT.MMU0 equ DAT.Regs+$40 Start of MMU regs
DAT.SBIT equ DAT.Regs+$48 S-bit register (Read-only)
DAT.Fuse equ DAT.Regs+$49 Fuse register for delaying switch to user task
DAT.Accs equ DAT.Regs+$4A Access register
DAT.Task equ DAT.Regs+$4B Task register address (operate)
DAT.TMsk equ $0F bits of register for task number
DAT.Uniq equ 1 bits of DAT Task register are not used for other things
*
***************
DAT.TkCt equ 8 task maps in the MMU
***************
*
* One block number must be guaranteed never to
* contain memory, (ROM or RAM). That block number
* is used by OS9 in the block map and DAT images
* to indicate an unallocated logical block
DAT.Free equ $015F
*
***************
DAT.BlMx equ $100 maximum block number
DAT.BMSz equ $200 Block Map size (one byte per block)
DAT.WrPr equ 0 no Block Write Protect bit
DAT.WrEn equ $200 Block Write Enable bit
***************
*
SysTask equ $80 System Task number
*
***************
IOBlock equ $FF The block number for the I/O
***************
*
* OS9-P1 ColdStart initially sets up the system map
* with RAM block 0 at $0000, a ROMBlock at $E000,
* and the IOBlock at $F000.
ROMBlock equ $1FE ROM block mapped in on ColdStart
ROMCount equ 3 number of blocks of ROM to so map in
RAMCount equ 3 initial blocks of RAM
*
***************
ROMCheck equ Limited check only top 64k for ROM
RAMCheck equ BlockTyp check only first bytes of RAM blocks
LastRAM equ $BF maximum RAM block number
***************
*
* If the I/O is addressed whenever the top
* address lines of the micro, (ie the logical
* bus), take a certain value, rather than being
* addressed through the DAT, then MappedIO must
* be set false (0)
MappedIO equ 1
*
***************
**********
* Several system modules expect to be
* able to abort the startup procedure
* and retry, by jumping through a ROM
* vector (usually the reset vector).
*
D$REBOOT equ $FFFE use an unused vector
*
**********
ClocType set MC6840
*CPort equ $E800
A.Clock set $E800
TickSec set 100 ticks per second
*Cx2Int set 1 CA2 (CB2) interrupt input
*FPort set $FCE0 floppy disk controller
*HPort set $FD00 hard disk controller
DrvCnt set 8 eight drives
*DPort set FPort
*A.T1 set $FC40 serial port address
*A.T.Init set $15 default ACIA initialisation byte
*A.P set $FC20 address of parallel printer port
*A.P1 set A.T1 address of serial printer port
endc
opt l