*
*   Hardware equates for SBC board
*
DATBOX equ $FFF0 memory mapper regs
DATRW equ $E840 r/w memory mapper regs
CLKSEL equ IFR29 clock select and status register
BASACI equ $E800
INITBR equ $ee initial baud rates (9600 baud)
BAUDRG     equ     $E820      baud rate generator (tty01=MS half; tty02=LS)
wd_reset   equ     $E820               read to reset wdxx controller
*
* Floppy Disk Section Equates
*
FLOP       equ    $E8C0                1797 base address

COM1797    equ     FLOP+0              command / status register
TRK1797    equ     FLOP+1              track register
SEC1797    equ     FLOP+2              sector register
DAT1797    equ     FLOP+3              data register

           pag
*
*   VIA-29 (Floppy disk selects, etc) Equates
*
*                         ORA (VIA A side)
*                   _________________________________
*                   | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
*                   ---------------------------------
*     9229 P0  _______/   /   /   /   \   \   \   \_______  FD SEL A
*  ~HL TOGGLE  __________/   /   /     \   \   \__________  FD SEL B
*       ~DDEN  _____________/   /       \   \_____________  FD SEL C
*   9229 MINI  ________________/         \________________  MOTOR ON
*
*
*
*
*                         ORB  (VIA B side)
*                   _________________________________
*                   | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
*                   ---------------------------------
*  1797 DRQ    _______/   /   /   /   \   \   \   \_______  ~PWR SENSE
*  1797 IRQ    __________/   /   /     \   \   \__________  ground
*    ground    _____________/   /       \   \_____________  ground
*    ground    ________________/         \________________  ground
*
*
*                           VIA Control Lines
*                   _____________       _____________
*                   | CA1 | CA2 |       | CB1 | CB2 |
*                   -------------       -------------
*  FD Timeout  _______/   /                   \   \_______  1797 IRQ
*  WDxx IRQ    __________/                     \__________  Timebase
*
*
*                      Interrupt Flag/Enable Register
*                   _________________________________
*                   | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
*                   ---------------------------------
*  0 clr/set 1 _______/   /   /   /   \   \   \   \_______  CA2 (WDxx)
*  Timer 1     __________/   /   /     \   \   \__________  CA1 (FD time)
*  Timer 2     _____________/   /       \   \_____________  Shift reg
*  CB1 (timer) ________________/         \________________  CB2 (1797)
*
*
           pag


VIA29      equ     $E8A0               via base address

ORB29      equ     VIA29+0             output register B
ORA29      equ     VIA29+1             output register A
DDRB29     equ     VIA29+2             data dir reg A side
DDRA29     equ     VIA29+3             data dir reg B side
SHT29      equ     VIA29+10            shift register for timer
AUX29      equ     VIA29+11            aux ctrl register
PCR29      equ     VIA29+12            periph control register
IFR29      equ     VIA29+13            interrupt flag register
IER29      equ     VIA29+14            interrupt enable register

*   These bit patterns conform to the connections on the A side of VIA29

P09229     equ     %10000000
hltogg     equ     %01000000           in use output line
fdsingden  equ     %00100000           act high for single density
mini9229   equ     %00010000
fdmotor    equ     %00001000           floppy disk motor on (act high)
fdselABC   equ     %00000111           binary drive select bits

fdside     equ     %00010000           side one bit (internal driver only)
nxdrive    equ     %00000111           non-existent drive number

FDFUNNY    equ     ORB29               funny status part of via


*
*   interrupt flag and enble bits for VIA29
*
i_via      equ     %10000000           any part of via interrupt bit
i_time     equ     %00010000           clock timer bit (unshifted)
i_1797     equ     %00001000           1797 interrupt bit
i_shift    equ     %00000100           shift register interr bit
i_unld     equ     %00000010           floppy disk timeout bit
i_wdxx     equ     %00000001           wd1001 interrupt bit

*
*   Equates for via8 - character input/output port
*
VIA08      equ     $E890               via base address

ORB08      equ     VIA08+0             output register B
ORA08      equ     VIA08+1             output register A
DDRB08     equ     VIA08+2             data dir reg A side
DDRA08     equ     VIA08+3             data dir reg B side
T1CNTR     equ     VIA08+4             timer 1 count regs
T2CNTR     equ     VIA08+8             timer 2 count regs
SHT08      equ     VIA08+10            shift register for timer
AUX08      equ     VIA08+11            aux ctrl register
PCR08      equ     VIA08+12            periph control register
IFR08      equ     VIA08+13            interrupt flag register
IER08      equ     VIA08+14            interrupt enable register

IFRPPR     equ     $F001               PPR on X-12
IFRSPR     equ     $F002               SPR on X-12
IFRCOM     equ     $F003               COM on X-12

CA1        equ     %00000010
CB1        equ     %00010000
i_t1cnt    equ     %01000000           timer 1 count down
i_t2cnt    equ     %00100000           timer2 count down

*
*   WDxx Winchester Controller Equates
*

dmadmar    equ     1                   direction for write
wd1000     equ     $E8E0               WD1000 5-1/4 winchester controller

wd_data    equ     wd1000+0            data register

wd_error   equ     wd1000+1            error register (read only)
*                                      bit 7 bad block detect
*                                      bit 6 CRC error, data field
*                                      bit 5 CRC error, ID field
*                                      bit 4 ID not found
*                                      bit 3 unused
*                                      bit 2 Aborted Command
*                                      bit 1 TR000 (track zero) error
*                                      bit 0 DAM not found
wd_wr_pre  equ     wd1000+1            write precomp (write only)

wd_sec_cnt equ     wd1000+2            sector count (during format)

wd_sec_num equ     wd1000+3            sector number

wd_cyl_low equ     wd1000+4            cylinder (low byte)
*                                      C0-C7
wd_cyl_hi  equ     wd1000+5            cylinder (high byte)
*                                      C8-C9

wd_sdh     equ     wd1000+6            size/drive/head
*                                      bit 7 XX,
*                                      bit 6,5 sector size (256,512,128)
*                                      bit 4,3 drive select (0,1,2,3)
*                                      bit 2,1,0 head select (0-7)
wd_secsize equ     %00000000           256 byte sectors
wd_sz_512  equ     %00100000           512 byte sectors
wd_sel0    equ     %00000000           select drive zero
wd_sel1    equ     %00001000           select drive one
wd_sel2    equ     %00010000           select drive two
wd_sel3    equ     %00011000           select drive three

wd_status  equ     wd1000+7            status (read only)
wd_busy    equ     %10000000           busy bit
wd_drq     equ     %00001000           data request bit
*                                      bit 7 busy
*                                      bit 6 ready
*                                      bit 5 write fault
*                                      bit 4 seek complete
*                                      bit 3 data request
*                                      bit 2,1 unused
*                                      bit 0 error (code in wd_error
wd_cmd     equ     wd1000+7            command (write only)
wd_restore equ     %00010110           restore with 3ms step rate
wd_seek    equ     %01110000           seek with 10us step rate
wd_read    equ     %00100000           read sector non DMA
wd_write   equ     %00110000           write sector
wd_format  equ     %01010000           format track (SPECIAL USAGE)
*
W5CMD equ wd_cmd WD1000 command register

*
*
*   bit assignments for the via protocol
*   status bytes
*
TTYOFF     equ     4
TTYON      equ     8
PPROFF     equ     5
PPRON      equ     9
SPROFF     equ     6
SPRON      equ     10
TTYCBRK    equ     7
TTYBRK     equ     11
COMOFF     equ     13
COMON      equ     12
COMBRK     equ     14                  various ints, (BREAK, HANGUP,...)
COMCBRK    equ     15
