#S2
#Titel Forum / Mumpitz XIV
#Pinsel Gadget31:pinsel/MUMPITZ.lbm
#Pinsel Gadget31:pinsel/C_LOGO.LBM
#Y-82
#Font LOSSE 16
#C31
        Fabrikneue
        Commodore-
        Chips für
        unter 10 Mark
#FONT topaz 8
#C21

#C31

Floppy 1541:(alte Version  mit  langer
Platine ohne Hybrid-Bauteil)

#C21
325572-01  Logic Array  UC1    3,00 DM
325302-01  ROM UB3             1,00 DM
901229-05  ROM UB4             1,00 DM
#Spaltenende
#Y+52
#C31
C64

#C21
906107-01  CPU 6510A           6,00 DM
      (völlig kompatibel zur 8500-CPU)
???        (SID)6582A          8,00 DM
(kompatibel zum 8580-9 Volt, nicht zum
6581-12Volt)
318013-01  8580R5  SID C64II   5,00 DM
Adaptersockel zum Betrieb dieser  SIDs
im alten C64 (statt 6581)      5,00 DM
#C31


C16/C116/plus 4

#C21
251535-02  TED 8360            8,00 DM
251640-03  6529B (I/O-Port)    2,00 DM
#Spaltenende
Hinzu  kommen  vier  DM Versandkosten.
Lieferung  nur  gegen  Vorkasse  (bar/
Verrechnungsscheck) -    es    besteht
vorerst   keine   Gefahr,   daß  etwas
ausverkauft ist. Bestellungen an

                  Hans-Christof Tuchen
                  Lotzestraße 10
                  12205 Berlin

#Font Losse 16
#C31
Amigachips im C64/128
#Y+2
#Font topaz 8
#C10

Haben  Sie  mal  wieder  eine 6526-CIA
gehimmelt  und  bekommen keinen Ersatz
mehr?  Dann  schlachten Sie doch einen
ollen  Amiga  aus!  Der hat zwei 8520-
Schnittstellen,  und  die  tun's auch.
Der  einzige  Unterschied liegt in den
vier  Echtzeituhr-Registern,  die  von
der   Firmware   aber   nicht  genutzt
werden.  Der  8520  hat hier nur einen
einfachen  24Bit- Zähler,  das  vierte
Register und der Vorteiler für 50/60Hz
(Bit 7 von CRA) sind funktionslos. Die
Teile  scheinen  aber genauso anfällig
wie ihre C64/128-Pendants zu sein. Bei
einem   von  mir  getesteten  kaputten
wurde  z.B.  nur  bis 4095 gezählt (12
Bits),  bei  einem  anderen  waren die
meisten  Portbits kurzgeschlossen. Zum
Ausschlachten   sollte  man  sich  ein
älteres Amiga-Modell besorgen. Bei den
neuen ist der  8520  ein quadratischer
SMD-Chip.


#Pinsel Gadget31:pinsel/a6.lbm
#Seitenende
#Font Losse 16
#C31
XEP80:TTL-Monochrom
#Font topaz 8
#C21
#Y+2

Der  ABBUC bot im Sommer '97 nagelneue
80Zeichen-Erweiterungen für die Atari-
8Bitter  für  10 DM(!) an. Diese haben
ein  eigenes Netzteil, eine Buchse für
einen  BAS-Monitor und einen 25poligen
Druckerport.
Über  zwei  Joystickleitungen kommuni-
zieren  sie mit dem Hauptrechner. Wenn
das  nicht  mit  einer  ungewöhnlichen
Baudrate  geschähe  (15, 7KHz), könnte
man   dieses   Mini-Terminal  auch  an
anderen  Heimrechnern mit einer RS232-
Schnittstelle  mit  TTL-Pegeln betrei-
ben. (In der Dokumentation steht etwas
vom  Betrieb  mit  anderen  Baudraten,
doch  wie man diese einstellen könnte,
ist  nicht  beschrieben - evtl. klappt
es   mit  einem  der  undokumentierten
reservierten   Befehle.)
#Pinsel Gadget31:pinsel/minimon.lbm
#Pinsel Gadget31:pinsel/9polsubd.lbm
#Y+4
Die    25x80    Zeichen   des   XEP80-
Bildschirms sind 11Pixel hoch - meinen
BAS-Monitor mußte ich erst nachregeln,
um  das volle Bild sehen zu können. Da
ein  TTL-Monochrom-Monitor (für Herku-
les   oder   MDA-Karten)  ein besseres
Bild liefert, schloß ich einen solchen
an.
So  konnte  ich auch das vom Original-
Gerät  nicht unterstützte Intensitäts-
Signal  nutzbar  machen. (Wird von Pin
25  des  NS405- Chips ausgegeben.) Der
Schaltplan  zeigt  die  Pufferung  der
Signale durch einen 74LS86-Chip.
Dieser  wird  so  auf  den vorhandenen
7486  aufgelötet,  daß nur die Pins 4,
7, 10 und 14 Kontakt haben. Die beiden
Synchronisations-Signale liegen an dem
7486  schon  an;  das Bild-Signal holt
man  sich  von  dem  'nördlich'  davon
liegenden    220Ohm-Widerstand,    das
unbenutzte  Intensitäts- Signal direkt
vom  Chip  (bzw.  seiner  Fassung: das
gute  Ding  sollte  man  nicht mit dem
Lötkolben  traktieren).  Legt  man den
zweiten   Gatter-Eingang   an    einen
Schalter,  kann  man  das  Signal  bei
Bedarf   invertieren.   Die   Ausgänge
kommen  an  die angegebenen Pins einer
neunpoligen   Sub-D-Buchse (Weibchen).
Über  eine  Diode  und  einen  330Ohm-
Widerstand  kann  man das Intensitäts-
Signal   auch   ins    BAS-Videosignal
mischen,  doch  ist  der  Effekt etwas
mangelhaft.    Aktiviert    wird   das
Intensitäts-Signal   durch  Bit  1 der
Attribut-Register (ATRIBUTE. BAS).
Versuchshalber  schloß  ich  auch zwei
RGB-Monitore  (CGA)  an. Da  diese nur
auf   eine  Bildhöhe  von  200  Pixeln
ausgelegt sind, fehlten oben und unten
noch mehr Zeilen -  unbrauchbar.

#Pinsel Gadget31:pinsel/a1.lbm


#Font Losse 16
#C31
NS 405: Das
Herz der XEP80
#Spaltenende
#Font topaz 8
#C21
Der   Terminal   Management  Processor
(TMP) in der 80Zeichen-Erweiterung für
die   Atari-8Bitter   wurde   von  der
National   Semiconductor   Corporation
produziert.
Der  Chip  basiert auf der Architektur
und dem Befehlssatz der 8048-Mikrokon-
troller-Familie. In  der  XEP80 steckt
eine  Version  ohne internes Programm-
Rom.

Die  Instruktionen kommen aus dem 8KB-
ROM  (2364)  oberhalb  des  Chips; der
2364   unterhalb  enthält  die  beiden
Atari-Zeichensätze.  Neben   ihm sitzt
ein  8KB-SRAM  als Bildschirmspeicher.
Im   Chip   stecken  noch  einmal  128
Zeichen,  darunter  auch  ein  ß (sz).
Leider  kann  man  diesen  Zeichensatz
nicht im Direktmodus verwenden, da der
Bildschirm  hier  immer mit 'ä's (CHR$
$9B) gelöscht wird.
#Pinsel Gadget31:pinsel/a2.lbm
#Y+1
Der Systembus zum Videospeicher ist 16
Bit  breit.  D.h.  man  kann   maximal
64kx16  ansprechen.  (Die 8048-Familie
besitzt  einen  Multiplex-Bus, bei dem
Adressen  und  Daten über die gleichen
Leitungen   ausgegeben   bzw.  gelesen
werden. Die Adressen müssen gewöhnlich
mit externen Chips [Latches] zwischen-
gespeichert  werden,  da es nur wenige
Peripherie-Chips   mit   einem solchen
Bus  gibt.)  Das High-Byte (Bits 8 bis
15)   des   Videospeichers   ist   als
Attribut-Speicher zum  Zeichen im Low-
Byte  gedacht -  jedes Zeichen auf dem
Bildschirm  könnte also eine individu-
elle Attribut-Kombination haben.  Doch
Atari  ließ  das  dafür  erforderliche
zweite Ram weg.
So   muß   man  sich  mit  den  beiden
internen  Attribut-Speichern begnügen,
deren Funktion noch zusätzlich dadurch
entwertet  wird,  daß  das zur Auswahl
benutzte  oberste  Bit  der Character-
Codes zwischen normalem und invertier-
tem  Zeichensatz  umschaltet. Sinnvoll
kann man  die beiden Attribut-Speicher
nur  mit  dem  halb so großen internen
Zeichensatz    benutzen.
#Y+2
#Pinsel Gadget31:pinsel/a3.lbm

                            (In    dem
Datenbuch  von  National Semiconductor
von 1987 ist sogar eine Anwendung, die
den   externen   Attributspeicher   so
erweitert, daß damit ein Farb-Terminal
gebaut  werden  kann.)
#Pinsel Gadget31:pinsel/a4.lbm
#Y+1
Die zusätzliche Attribut-Hardware  ist
schnell  eingebaut,  fraglich ist nur,
ob  die Firmware und der Handler deren
Nutzung   erlauben.   (Zwei   Register
müssen   umprogrammiert   werden   und
jeweils  die Attribute mit übermittelt
werden.) In der Dokumentation wird ein
DEBUG-Modus erwähnt, mit dem man einen
zusätzlichen  Eingabe-Port  ansprechen
können    soll,   doch   über   dessen
Aktivierung steht nichts geschrieben.
Das   Format   der   Befehlskodes  des
Handlers  korrespondiert nicht mit den
jeweils  angesprochenen  TMP-Registern
oder bestimmten Opcodes.
Die    reservierten   Befehle   führen
teilweise zu bizarren Reaktionen, doch
was  sie  im  einzelnen bewirken, läßt
sich  wohl  nur  durch  Analyse  der 2
Kilobyte   Firmware   ergründen.   Mal
sehen.
#Pinsel Gadget31:pinsel/a5.lbm
#Seitenende
#Font Losse 16
#C31
Der Z80 im C64
#Font topaz 8
#C21
#Y+2


Willcox  schickte  mir  sein REX/DELA-
Z80-Modul  zur  Inspektion. Ich analy-
sierte  die Schaltung und schrieb dann
ein paar Test-Programme für das Ding.

6510  und  Z80  legen sich gegenseitig
mittels /DMA bzw. /WAIT lahm. Wenn man
die  Karte durch Schreiben von Null in
den    I/0-Bereich  1 ($DE00 bis DEFF)
aktiviert  hat,  übernimmt der Z80 den
Bus. Damit er ihn wieder freigibt, muß
man   ihn  mittels  Programmkode  dazu
zwingen, sich durchs Schreiben einer 1
in diesen Bereich wieder abzuschalten.
Auf  der  Karte  werden  zwei  Signale
durch  Kondensatoren verzögert, um das
unterschiedliche Bus-Timing der beiden
Prozessoren auszugleichen.
Mein  Verdacht,  daß dies zeitkritisch
sein  könnte, erhärtete sich beim Test
mit  acht C64 bzw. C128. An einem C64C
(flaches  Gehäuse)  mit  der Platinen-
Version   Rev.  4  funktionierten  die
Testprogramme  erst,  wenn Rechner und
Modul   gut  aufgeheizt  waren -  dann
konnte  man das Z80-Programm aber auch
30 000mal   hintereinander   aufrufen.
Mein    Nachbau    Marke    Kabelsalat
funktionierte an diesem Rechner jedoch
auf Anhieb.
Auf  die  C64-Chips   im   I/O-Bereich
sollte  man  aber  lieber  doch  nicht
zugreifen:  wohlweislich  wickelt  das
C64-CP/M  2.2  solche  BIOS- und BDOS-
Routinen  über das C64-Betriebssystem,
also mit Hilfe des 6510 ab.

Ein  Volladdierer  erhöht  die von den
Z80-Adreßleitungen  12 bis 15 ausgege-
bene  Adresse jeweils um 1000h, so daß
der  Startvektor  des  Z80  bei  $1000
statt bei $0000 liegt.
Ohne   diese   Verschiebung  wäre  der
Parallel-Betrieb gar nicht möglich, da
man  sich  sonst  beim  Schreiben  des
ersten Z80-Befehls den Boden unter den
Füßen wegzöge (6510-Zusatzport bei $00
und $01).

Eine  Z80- Abschaltroutine,  die durch
CALL (entspricht JSR) aufgerufen wird,
könnte so aussehen:

3E 01    LD A,&01
32 00 CE LD (&CE00),A
00       NOP
C9       RET

Physikalisch  wird  der Akkumulatorin-
halt also nach $DE00 gebracht - danach
ist  der  6510 wieder Herr des Busses.
Der Z80-Programmzähler  bleibt auf der
NOP-Anweisung  stehen.  Dies  ist  ein
Dummy, denn die erste Instruktion nach
dem  Umschalten  wird immer überlesen.
Wenn  man  den Z80 wieder einschaltet,
springt er dank RETurn zur aufrufenden
Routine  zurück.  Damit er die findet,
muß  man  ihm  bei der Initialisierung
mittels    Stapelzeiger   (SP)   einen
geschützten  Bereich zugewiesen haben,
wo    er    unter    anderem    seine
Rücksprungadressen ablegen kann.

Hardware-Interrupts  sind  nicht  mög-
lich,  da  keine Quellen angeschlossen
sind.  Da der Z80 'memory mapped' ist,
fällt   die   Unterscheidung  zwischen
Speicher-   und  Input/ OutputBefehlen
weg.


Bei Interesse veröffentliche ich einen
Schaltplan zum Nachbau der Karte.
#Pinsel Gadget31:pinsel/patched.lbm
#Font Losse 16
#C31
Hart&weich
CP/M auf dem C64
#Font topaz 8
#C21
#Y+4
Zum  Betrieb  des Original-CP/Ms benö-
tigt  man ein Z80-Modul;  der Emulator
hat  im  freien  Bereich  ab $C000 die
Routinen   zur   Auswertung  des  Z80-
Programmcodes.
Roßmöller    hat    größtenteils   die
Original-Routinen übernommen, man kann
ohne  Gefahr  mit  dem jeweils anderen
System  einen  Warmstart  durchführen.
Warum das Original den Speicherbereich
von  $C000 bis $CFFF freiläßt, ist mir
ein  Rätsel.  Mit  MOVCPM  und  SYSGEN
verschob  ich  CCP, BIOS und BDOS vier
Kilobyte  nach  oben und gewann soviel
mehr    TPA    (Arbeitsbereich).   Die
Programme funktionieren weiterhin, man
muß nur aufpassen, daß man nicht einen
'alten'    CCP    (Console    Command
Processor) beim Warmstart (STOP-Taste,
CNTRL C) nachlädt.
Ich  versuchte, die 6510-Schnittstelle
zum  Kernal  (bei $A00) so zu patchen,
daß  statt D1 eines Doppellaufwerks U9
angesprochen wird.
Beim  Lesen  klappt's schon, doch beim
Schreiben   kommen   die  Puffer  noch
durcheinander.
Der Bdos Err on A: R/O tritt auf, wenn
man  auf eine Diskette schreiben will,
die man nicht eingeloggt hat (Ctrl C).
Für  5DM  in Marken verschicke ich ein
2-Disketten-Startset  mit den wichtig-
sten  Utilities  für  den  ernsthaften
User.

Die  80Zeichen-Erweiterung  und  manch
anderes Programm laufen  nur  mit  dem
richtigen CP/M (mit Hardware).
#Pinsel Gadget31:pinsel/nsweep.lbm
#Font Losse 16
#C31
Mega-C128
#Font topaz 8
#C21
#Y+2

3.: Vier Bänke für CPU und VIC mit 1KB
gemeinsamem Bereich (Common Area)

Diesmal   geht  es  richtig  los:  Die
untere  Hälfte der von uns eingebauten
512KB  DRAM  wird nutzbar gemacht. Nur
diese  vier Bänke werden von Basic und
dem Speicher-Monitor unterstützt. Ohne
einen  gemeinsamen  Bereich ließe sich
der Rechner nun nur noch im 64er-Modus
starten,  deshalb  werden provisorisch
die  'normalen'  1024  Bytes am Anfang
von   Bank  0  in  allen  vier  Bänken
eingeblendet.
Für  manchen  dürfte diese Ausbaustufe
schon  ausreichen:  Auch ohne REU kann
man  nun  durch  Verlegung  des Video-
Speichers  Dia-Shows  oder Animationen
gestalten  oder  in den Bänken 2 und 3
eine    Ramdisk    einrichten.
(Beispielprogramme  folgen  evtl. nach
Abschluß des Bastel-Projekts.)

#Pinsel Gadget31:pinsel/7404.lbm

Materialbedarf

Je  ein 7404, 7408, 7427, 7474, 74133,
74138,  74257  und  74832  (sechs  OR-
Gatter,   ersatzweise   2  7432),  ein
33Ohm-Widerstand,   ein  Einschalter -
paßt  mit  MMU  auf  eine  7x6cm große
Platine.

#Pinsel Gadget31:pinsel/7408.lbm

Um  das  Netzteil  zu schonen, sollten
wir  stromsparende Versionen benutzen,
also    mindestens   LS-Typen.     (Am
wenigsten  verbrauchen  die HCTs - hat
aber nichts mit dem Verfasser zu tun.)
Wie  schon  im  vorigen  Heft erwähnt,
brachte  ich  auch  im MMU-Sockel zwei
Chips unter. Bei solcher Packungsdich-
te ist ein gewisses Geschick im Umgang
mit    einem    passenden    Lötkolben
erforderlich.   Beim   Aufspüren   von
Fehlern  leistet  ein Durchgangsprüfer
mit  akustischem  Signal gute Dienste.
(Ein  häufiger  Fehler,  der  auch dem
Autor  noch  unterläuft,  liegt in der
falschen  Lokalisation  der Anschlüsse
auf  der  Lötseite:  dort muß man sich
alles  gespiegelt  denken. )  Man sehe
sich  nach  feinem  Draht  um,  dessen
Isolierung  beim  Löten  nicht zu weit
wegschmilzt,   dann   ist  die  Gefahr
ungewollter Kontakte durch gesplissene
Litze gebannt.
Wenn   man   diesen   auch   noch   in
verschiedenen Farben bekommt, kann man
den Verdrahtungsdschungel übersichtli-
cher  gestalten,  indem  man  für  die
Versorgungsspannung und die Steuersig-
nale  unterschiedliche Farben benutzt.
Bei  2MHz  CPU-Frequenz  kann man sich
sogar noch etwas Schlamperei leisten.


#Pinsel Gadget31:pinsel/7427.lbm
#Pinsel Gadget31:pinsel/banktest.lbm

Test  der  ersten  vier Bänke (256KB).
Die  122365 Bytes der Einschaltmeldung
sind  im  Rom  fixiert.  Auch das MMU-
Versionsregister  zeigt  weiterhin nur
zwei Bänke.
#Pinsel Gadget31:pinsel/1.lbm
#Seitenende
#Pinsel Gadget31:pinsel/2.lbm
#Seitenende
Erklärung der Schaltung

Für    diejenigen,    die    mit   den
Schaltungssymbolen   der   neuen  Norm
nichts   anfangen  können,  hier  eine
Übersetzung:
>= 1 OR, & AND, der Kringel am Ausgang
steht für einen Inverter, das Kästchen
mit  der  1  drin  steht  also für ein
Sechstel eines 7404-Chips.
#Pinsel Gadget31:pinsel/7432.lbm
Von  der  MMU  interessieren  uns  nur
folgende Register: das Konfigurations-
register  (D500  und  FF00),  das Ram-
Konfigurationsregister  (D506) und das
höchstwertige  Nibble  der  Zeiger für
Zeropage  und  Stack  (D508 und D50A).
Die beiden Basisadressen, über die die
MMU   ansprechbar  ist,  unterscheiden
sich nur im Wert der Adreßleitungen 9,
11  und 13. Diese müssen entweder alle
high oder alle low sein.
Mit  AEC  gibt der VIC den Bus für die
CPU  frei,  ist  Phi2 (der Systemtakt)
high,    werden   angelegte   Adressen
gültig.
Schließen  wir  an  DIS einen Schalter
an,  mit  dem  wir  diese  Leitung auf
Masse  legen  können,  läßt  sich  die
Aktivierung  des Zusatzrams verhindern
(bei Kompatibilitätsproblemen).
Bit 7  repräsentiert in den Konfigura-
tionsregistern  0  und  6  die Adresse
A17,  einmal für  den CPU-Zugriff, zum
andern  für  den  VIC.  Diese  Adresse
müssen  wir  über einen Multiplexer an
die neunte Adreßleitung der 256k-Chips
legen.  Auf  U14  oder  U15  löten wir
daher  einen  weiteren  257- Chip auf,
aber so, daß nur die Pins 1, 8, 15 und
16 Kontakt haben.

#Pinsel Gadget31:pinsel/7474.lbm
Die Pins 4, 7, 9 und 12 sind Ausgänge,
links   davon   liegen   jeweils   die
Eingänge  B  und A, die durch das MUX-
Signal  abwechselnd  auf  den  Ausgang
geschaltet  werden.  In  den Ram-Chips
wird  dieser Vorgang wieder umgekehrt,
weshalb sie statt 18 Adreßpins nur die
Hälfte  brauchen,  aber  auch ein RAS-
und   CAS-  Signal  (Row  bzw.  Column
Address Strobe).
Zwischen einen  Ausgang des aufgelöte-
ten  Multiplexers,  nehmen wir Pin 12,
und  Pin 1 der Rams löten wir den 33 -
Widerstand.  Eingang  B  (Pin 13) wird
erst   später   an  eine  Adreßleitung
angeschlossen  und  daher  vorerst auf
Masse   gelegt.  Eingang  A  (Pin  14)
verbinden  wir  mit  dem  Ausgang  des
UNDGatters,  durch  das  die   CPU-A17
läuft.
Am  anderen  Eingang  des  UND-Gatters
liegt  die denkbar simple Common Area-
Schaltung:  Sind die Adreßleitungen 10
bis  15 allesamt low, wird auch dieser
Eingang   low   und   damit  auch  das
Ausgangssignal.
#Pinsel Gadget31:pinsel/74133.lbm

#Y-2
Der  74LS257  ist  ein Tri-State-Chip:
Wenn   das   an   Pin   15  anliegende
invertierte  AEC-Signal high ist, sind
seine  Ausgänge  hochohmig und der VIC
kann  seine Adressen ausgeben. Für die
16KB, die er adressieren kann, erzeugt
er  die  Multiplex-Adresse  intern. Da
A15  und  A14  von  der CIA2 geliefert
werden, müssen diese extern mit A7 und
A6  vom  VIC zusamengefaßt werden. Bei
dem dafür benutzten 257-Chip (U26) ist
ein  Gatter  (Pin 9 bis 11) unbenutzt.
Von  Pin  9  löten wir eine Leitung zu
Pin  12 des CPU-257. Pin 10 lassen wir
auf  Masse, doch Pin 11 hebeln wir mit
einem  kleinen Schraubendreher aus dem
erhitzten Lötzinn und verbinden es mit
dem  VIC-A17-Signal.
#Pinsel Gadget31:pinsel/74138.lbm
#Font Losse 16
#C31
Münchhausen andersrum
#Font topaz 8
#C21
#Y+4
Jenseits  des Tales standen ihre Zelte
...
ach  nee,  das war ja der Nachfahre in
diesem  Jahrhundert.  Also  der Lügen-
baron: Von dem gibt es die Geschichte,
wie  er  sich  am  eigenen Schopfe aus
einem  Sumpf  herauszieht. Daran mußte
ich  bei der Beschreibung der Funktion
von  Bit  0  des   MMU-Konfigurations-
registers  denken.  Dieses entscheidet
nämlich  darüber,  ob  die MMU im I/O-
Bereich  ansprechbar  ist  oder nicht.
Ein  Baustein,  der  so programmierbar
ist,  daß er nicht programmierbar ist.
Ein  Kreter, der sagt, daß alle Kreter
lögen -  nein, der Vergleich hinkt, da
die  MMU stets über die Adressen $FF00
bis $FF04 ansprechbar bleibt, außer im
C64-Modus.
Bei    der    hier    veröffentlichten
Schaltung  hatte  ich all dieses nicht
bedacht:  Sie  ist in allen Bänken und
vom  'C64'  ansprechbar, bei letzterem
mit  letaler  Folge.  (Im  128er-Modus
stellt  der  Interrupt  zumindest  die
richtige   Bank   wieder  ein. )  Doch
glücklicherweise  sind   am 74133-Chip
noch  zwei  Eingänge unbelegt (nc). An
den einen kommt das 64/128-Signal (Pin
47 der MMU),  an  den anderen das mit-
tels  des  freien  7404-Gatters inver-
tierte Signal von Pin 13 (I/O-Select),
dann  funktionieren 64- und 128-Modus.
Und der Z80? Oh je, das wird wohl eine
unendliche Geschichte ...

#C10
Blechdiesel:SIMs
#C21
Man machte mich darauf aufmerksam, daß
im C128D mit Blechgehäuse anstelle von
16 64k-DRAMs vier Nibble-Chips (41464)
installiert  sind.  Dies erschwert die
Aufrüstung  auf  512 Kilobyte oder ein
Megabyte,  da  man  die  256kx4- Chips
nicht  benutzen  kann. Diese benötigen
nämlich    einen    512Reihen-Refresh,
wogegen  der VIC nur bis 256 zählt. Da
den  Besitzern  dieses  Modells  nicht
zuzumuten ist, 16 oder 32 Bit-Chips zu
installieren,  müssen  SIP-  oder SIM-
Module her.
Infrage  kommen  welche mit vier, acht
oder  9  Chips,  die  also  mit  256k-
Bausteinen   bestückt  sind.  Mit  den
Anschlußbelegungen   der   benutzbaren
Module (es gibt welche mit 22, 24 oder
30  Pins)  könnte  ich ein ganzes Heft
füllen,  daher  vertiefe ich das Thema
nur bei Bedarf. (Bitte melden!) Module
mit  solch  geringer  Kapazität findet
man nur noch bei Second-Hand-Anbietern
oder  auf   Computer-Flohmärkten, mehr
als  acht  Mark  pro  Stück sollte man
nicht zahlen.

Die  vier 256KB-Sims montiert man sich
am   besten   in  Fassungen  auf  eine
Lochstreifen-Platine.  Im Conrad-Kata-
log  werden 256KB-SIMs für  39,80 Mark
angeboten.    Diese    sind    erstens
unbrauchbar (3Chip-Modul) und zweitens
überteuert;  ich  bekam  so  etwas für
2DM.
#Font Losse 16
#C31
Perlen vor die Säue
#Font topaz 8
#C21
#Y+2

Im  letzten CF wurden die Hinweise auf
Mumpitz   in  den   Commodore-Fanzine-
Rubriken  unterschlagen. Doch offenbar
habe ich mit dem internen Speicheraus-
bau des C128 mal wieder Perlen vor die
Säue geworfen.
Kennwaja: Meinen Floppy-Kontroller für
den  Spectrum  +2  hat  wohl auch kein
Schwein    nachgebaut,    obwohl   die
Anleitung    mehrfach   veröffentlicht
wurde.
Die  Animationen  auf  der  1764-Demo-
Diskette  habe  ich  für den Mega-C128
umgeschrieben.  Die Präkonfigurations-
Register  erhalten  nun doch Hardware-
Unterstützung  für  Bit 7, sie und die
korrespondierenden Laderegister werden
in    einer    höheren    Ausbaustufe
ansprechbar.  Nur  so  ist  es nämlich
möglich,  den  Variablen- Speicher auf
180 Kilobyte zu erweitern.
#Pinsel Gadget31:pinsel/512kb.lbm
#C10
Variablen-Verwaltung beim C128
#C21

Ich  durchforschte das Romlisting nach
Routinen,  die  die   MMU-Laderegister
($FF01  bis  $FF04) beschreiben. Diese
dienen  BASIC  dazu,  in beiden Bänken
zwischen  ROM  und  RAM zu wechseln (A
und C für Bank 0, B und D für Bank 1).
Leider haben sich die Entwickler nicht
für    ein   einheitliches   Verfahren
entscheiden  können:  Mal  erfolgt die
Umschaltung  über  nach  $39F kopierte
Routinen, mal direkt im Rom.
(Liefen  alle  Umschaltungen  über die
Common-Area-Routinen, könnte man diese
durch  eine  Routine, die ein Megabyte
unterstützt,   ersetzen.)   Beim  C128
werden   die   Variablen   in   Bank 1
abgelegt.   Durch   Manipulation   der
Präkonfigurations-Register   B  und  D
($FD502  und  $FD504)  können wir auch
eine  andere  Bank einstellen, bislang
nur  Bank  0.  Zur  Demonstration  ein
kleiner Test: Schalten Sie den C128 im
80-Zeichen-Modus    ein; wenn Sie auch
noch  einen  40-Zeichen-Monitor  ange-
schlossen   haben,   können   Sie  die
Auswirkungen  auf  den VIC-Bildschirm-
speicher  verfolgen.  (Der liegt dort,
wo in Bank 1 die Variablen beginnen.)

BANK 15:POKE 54530,191:POKE 54532,1
(Variablen nach Bank 0)
A$="AFFE"   (auf dem  VIC-Monitor
erscheint der String-Zeiger)
POKE 54530,127:POKE 54532,65
(Einschaltzustand:  Bank  1)
PRINT A$ (Leer)
A$="ADONIS":? A$ (ADONIS)
POKE 54530,191:POKE 54532,1 PRINT A$
(AFFE)
B$="BIMBO"  (auf  dem  VIC- Bildschrim
taucht  um sieben Spalten versetzt der
Stringzeiger für B$ auf)
Die  Zeropage-Zeiger   müßte  man beim
Wechseln  stets  sichern/zurückschrei-
ben.

#C10
Vier virtuelle Maschinen

Sequentielles Multitasking
mit dem Mega-C128

#C21
Mit  dem Vollausbau der internen C128-
Speichererweiterung  wird  es möglich,
interruptgesteuert    vier   Programme
'gleichzeitig' laufen zu lassen.
Während  z.B.   im  256KB-Block 0 eine
Textverarbeitung   auf   eine  Eingabe
wartet,  kann ein Fraktal-Generator in
Block 1 an einem Apfelmännchen rechnen
oder ein Datenbankprogramm in Basic in
Block   2   eine   Garbage  Collection
durchführen,  während in Block 3 Basic
im Direktmodus läuft.
Durch  HOTKEYS  kann  man zwischen den
Anwendungen  umschalten.  Damit  jeder
Block  mit  eigenem   VIC-Bildspeicher
arbeiten  kann,  wird  dieser  mit den
Blöcken    umgeschaltet    (was    von
Commodore  wohl nicht vorgesehen war).
Wer  das Zusatzram nur zur Datenablage
braucht,  kann diese Parallelschaltung
mit    Schalter   oder   über   $FD505
aufheben.

#C10
Initialisierungsroutine

#C21
Um in den 256KB-Blöcken 1, 2 und 3 mit
Basic  oder  dem  Monitor  arbeiten zu
können,  müssen zunächst die fehlenden
System-Informationen zwischen $800 und
$1C00 eingetragen werden - der normale
gemeinsame  Bereich  reicht ja nur bis
zum  Video-Ram  ($400-$7FF).  Zunächst
versuchte ich es mit einem Basic-Warm-
oder  Kaltstart,  doch bei den wenigen
nutzbaren   Speicherstellen   in   der
Zeropage  müßte man dort ziemlich wild
herumhopsen,  um  alle  dafür  nötigen
Zeiger und Flags zu setzen. Also wurde
ich    radikal    und    nutzte    die
Systemstart-Routine.   An deren Anfang
steht    glücklicherweise   die   MMU-
Initialisierung.  Deren Ram-Konfigura-
tions-Register  soll aber den Wert für
den  angewählten  Block  (Bit 4 und 5)
behalten,   also   springen  wir  erst
dahinter ins Kernal-ROM. Das geht so:

00A3 SEI        ;bitte keine Unterbre-
                 chungen
00A4 LDA #$14   ;Block 1 (2=24, 3=34),
                 1KB CA unten
00A6 STA $D506  ;Ram-Konfigurations-
                 register
00A9 LDA #$00   ;Wert für Interrupt-
                 Flag
00AB JMP $E015  ;alles Weitere macht
                 das Betriebssystem
10 FOR A=163 TO 173:READ B:POKE A,B:
   NEXT
20 BANK 15:SYS 163
30 DATA  120, 169, 20, 141, 6, 213,
   169, 0, 76, 21, 224

Nach  Start dieses Programms erscheint
auf  dem  80-Zeichen-Bildschirm    die
Einschaltmeldung.  Mit  BANK  15: POKE
54534, 4 bzw. POKE 54534,20 können wir
nun  munter  zwischen  beiden  Blöcken
wechseln.  Der  VIC-Bildschirm wäre in
den   Blöcken   1   bis   3   nur  bei
erweitertem   Common   Area  nutzbar -
gäben  wir  uns mit dem zufrieden, was
Commodore offenbar vorsah.

Doch mit ein paar Hardware-Tricks läßt
sich   auch   der   Bildschirmspeicher
hochschalten. Zur Ansteuerung benutzen
wir  die für spätere Porterweiterungen
vorgesehenen  Bits  1 und 2 des Modus-
Konfigurations-Registers,  die darüber
entscheiden, ob der Bildschirmspeicher
parallel   mit   dem   Arbeitsspeicher
wandert  oder in Block 0 bleibt. (Beim
Hochschalten    des   Arbeitsspeichers
landen  die  Eingaben  und Ausgaben im
40-Zeichen-Modus  auch im Bereich $400
bis  $800, doch da der VIC eine eigene
Schnittstelle   zum  Ram  mit  weniger
Adreßleitungen  hat,  kann  er  diesen
Bereich nicht darstellen.
Der  Trick  liegt  nun  darin, ihm die
entsprechenden   Zusatzleitungen   der
MMU-Erweiterung   zur   Verfügung   zu
stellen -   also   im  Prinzip  nichts
anderes   als   die   Erweiterung  des
adressierbaren Bildschrimspeichers von
16  auf  64  KB  durch  die  zwei CIA-
Portbits.)






In  der nächsten Ausgabe wird aber nur
Block  1  zugänglich  gemacht  und die
Common-Area-Schaltung  so modifiziert,
daß   wir   wahlweise   1  oder  4  KB
einstellen  können.   Über  das  Bild-
schirm-Ram  kann  man  dann Daten zwi-
schen den Blöcken kopieren.
#Seitenende
#Font Losse 16
#C31
Kein Schrott mehr?
#Font topaz 8
#C21
#Y+2

Nach   langer  Zeit  erhielt  ich  mal
wieder   ein   Angebot   des   GLOBAL-
Vertriebes (alias DATA 2000 alias Rex-
Datentechnik).  Dort  wurden  nur neue
PC-Produkte   angeboten. Ehrlich währt
am  längsten: Damit sich dieser Spruch
bewahrheitet, müssen die Firmeninhaber
wohl  bis an ihr Lebensende noch ihrem
Gewerbe nachgehen.

#Font Losse 16
#C31
Nichts für
Ernst Jünger
#Font topaz 8
#C21
#Y+4
Zu    einer   ordentlichen   Programm-
Dokumentation    gehört   auch   seine
Geschichte.  Dort wird dann gewöhnlich
aufgezählt, welche Features in welcher
Version  hinzukamen  und  wann  welche
Fehler    ausgemerzt    wurden.    Im
englischen  Programmierer-Slang heißen
die Bugs; angeblich wurde in einem der
ersten  Computer  mal ein echter Käfer
bei der Fehlersuche gefunden.
So  ist  es auch nicht abwegig, daß in
der  Beschreibung  eines  US-Programms
dieser  Abschnitt  Entomology betitelt
war.
