CON
''***************************************
''*  z8-Emulator  Objekt Definitionen   *
''*  Author: Uwe Nickel                 *
''*  Copyright (c) 2012 by UN-Soft      *
''***************************************
'Version für nicht doppelt belegte Ausgabepins des Prop!
'==> keine Emulation P33 und P34

'--------------------------------------------------------------------------------
' Festlegungen 
'--------------------------------------------------------------------------------
  clk_mode        = xtal1 + pll16x
  xin_freq        = 5_000_000
'--------------------------------------------------------------------------------
'-------------------------------------------------------------------------------- 
' Zuweisung externe Geräte (IO-Port's) zu Propeller-Pins ........................
'--------------------------------------------------------------------------------

' Port 2 u. 3 Z8................................................................. 
  P2startpin    = -8            'niedrigster Portpin für P2-Hardware-Emulation
                                'negativer Wert schaltet P2 aus
'................................................................................  
  P30           = |<31         'SIOin oder In
  P31           = |<4          'Tin oder Handshake Port2
  P32           = |<25 '5          'In oder
'  P33           = |<25         'In oder 
'  P34           = |<24         'Out oder /DM
  P35           = |<6          'Out oder
  P36           = |<7          'Tout oder Handshake Port2
  P37           = |<5 '30         'SIOout oder Out
  
' VGA..............................................................................        
  vgapin        = 16           'VGA - ab Pin16 acht Pins
  
' Tastatur.........................................................................                             
  kbdata        = 26           'Tastatur-Daten                                              
  kbclock       = 27           'Tastatur-Clock

' Serielle Schnittstelle...........................................................                                             
  TxPin         = 30           'Portpin serielle Ausgabe                                   
  DtrPin        = 25           'Portpin DTR                                                
  RxPin         = 31           'Portpin serielle Eingabe                                   
  CtsPin        = 24           'Portpin CTS                                                

' SD-Karten Anschlusspins..........................................................                               
  spiDO         = 0            '4 Portpin 
  spiClk        = 1   
  spiDI         = 2   
  spiCS         = 3
'----------------------------------------------------------------------------------        

' TINY Memory-Map ...............................................................
 romstart       = $0000                        '1. ROM-Adresse ia. gleich 1. Adresse Programmemory
 romend         = $27FF                        'Wert entsprechend ROM-Filelänge setzen!
                                               '2k-System: 1000,  4k-System: 27FF
'................................................................................                                               
 keystart       = $7F00                        'Tastaturmatrix
 keyend         = $7F0F
'................................................................................                                                
 ramstart       = $E000                        'Erste RAM-Adresse
 ramend         = $FFFF                        'Letzte RAM-Adresee entspricht Ende Programmemory
'................................................................................   
 cbuffstart     = $FC00                        'Kassettenpuffer SAVE/LOAD
 cbufflen       = $80
'................................................................................   
 ascbwsstart    = $FD00                        'ASCII-Bildwiederholspeicher
 ascbwslen      = $7F
'................................................................................    
 bwsstart       = $FE00                        'grafischer Bildwiederholspeicher
 bwsend         = $FFFF
'--------------------------------------------------------------------------------   
 dmemstart      = $0000                        '1.Adresse Datamemory, ggf. gleich PM-Adressen
 dmemend        = $FFFF
'................................................................................    
 calccmdreg     = 0                            'Registernummer zur Übergabe an Berechnungs-Cog
'-------------------------------------------------------------------------------- 
 ram_len        = ramend - ramstart +1
 rom_len        = romend - romstart
 key_len        = keyend - keystart  
 lenpmem        = ram_len + rom_len
 ascbws_offset  = ascbwsstart - ramstart
 cbuff_offset   = cbuffstart - ramstart
 cbuff_at       = cbuff_offset + $11
 cbuff_to       = cbuff_offset + $13
 cbuff_dat      = cbuff_offset + $20
'---------------------------------------------------------------------------------
                                                                                 
' Tastatur ......................................................................
lockxx          = %0_000_000   'Lock- Setup
autoxx          = %00_00000    'Autorepeat- Setup
Reset_key       = $FFDB        'SHIFT + F12
Reboot_key      = $FF94        'ALT-GR + F12
Wait_key        = $00DB        'F12
IRQstop_key     = $00D9        'F10
T0ISR_key       = $ff96        'ALT-GR + F10 
'................................................................................
''      lockxx  - bit 6 disallows shift-alphas (case set soley by CapsLock)        
''                bits 5..3 disallow toggle of NumLock/CapsLock/ScrollLock state   
''                bits 2..0 specify initial state of NumLock/CapsLock/ScrollLock   
''               (eg. %0_001_100 = disallow ScrollLock, NumLock initially 'on')    
''      autoxx  - auto-repeat setup                                                
''                bits 6..5 specify delay (0=.25s, 1=.5s, 2=.75s, 3=1s)            
''                bits 4..0 specify repeat rate (0=30cps..31=2cps)                 
''               (eg %01_00000 = .5s delay, 30cps repeat)                          
'----------------------------------------------------------------------------------
' Bildschirm (Memory etc.).......................................................
 lenbmp         = 300                  'Größe Bitmap-Speicher in Longs        
 lenx           = bwsend - bwsstart +1 'Größe Bildspeicher TINY in Byte
'................................................................................                                
 stdcol         = $FF_09               'Vordergrundfarbe(weiß)_ Hintergrundfarbe(blau)
'................................................................................ 
 col1           = $09_FF
 delay1         = 10_000_000
 blink1         = 3
'................................................................................   
 col2           = $33_55
 delay2         = 50_000_000
 blink2         = 2
'----------------------------------------------------------------------------------
' Serielle Ein-/Ausgabe
         Baudrate       = 1200   'Standardwert Baudrate  für senden und empfangen
         RX1FIFO_SIZE   = 150    '600 bytes  Buffersize
         TX1FIFO_SIZE   = 140    '560 bytes  Buffersize       
         SerMode        = %0_0_1_0_1_0_0_0
'..................................................................................
''       Aufbau SerMode-Byte:
''       Bit   7 6 5 4 3 2 1 0
''             | | | | | | | |- Tx:  0- nicht invertiert, 1- invertiert 
''             x x | | | | |--- Rx:  0- nicht invertiert, 1- invertiert 
''                 | | | |------Dtr: 0- low-aktiv, 1- high-aktiv 
''                 | | |--------Dtr: 0- on, 1- off
''                 | |----------Cts: 0- low-aktiv, 1- high-aktiv 
''                 |------------Cts: 0- on, 1- off
''             
'----------------------------------------------------------------------------------
' Z8 Spezial-Register
R0    = $00
R1    = $01
R2    = $02
R3    = $03
SIO   = $F0
TMR   = $F1
T1    = $F2
PRE1  = $F3
T0    = $F4
PRE0  = $F5
P2M   = $F6
P3M   = $F7
P01M  = $F8
IPR   = $F9
IRQ   = $FA
IMR   = $FB
FLAG  = $FC
RP    = $FD
SPH   = $FE
SPL   = $FF
' interne Steuerungsregister
T0_wr = $100
T1_wr = $101
SIOout= $102
'----------------------------------------------------------------------------------
   
PUB dummy            