MILC logo

IndexVorigeVolgendeLeeg

Datacartridge HBI-55
Onbekend, 00-00-00


    
                        +-----------------------------+
                      |||  Sony Datacartridge HBI-55  |||
                        +-----------------------------+

Een aantal jaren geleden werd deze cartridge in grote aantallen gedumpt op de
beurs in Tilburg. Thuisgekomen bleek echter dat je een Sony HB-55P of HB-75P/B
computer moest hebben om dat ding te kunnen gebruiken. Ik ben echter een stukje
tegengekomen waarin de bouw en de werking wordt uitgelegd. Hier volgt dat stukje
(in een iets vereenvoudigde vorm).

Het blokschema:

   IRQ en A2-A7     A0-A1 RD/WR  D0-D7
  +-------------+    | |   | |  ||||||||
  |Adresdecoding+-+  | |   | |  ||||||||
  +-------------+ |  | |   | |  ||||||||
  +---------------+--+-+---+-+--++++++++-+
  |8255 Programmable Peripheral Interface|
  +---++++++++----++++++++----++++++++---+
     C||||||||   B||||||||   A||||||||
      ||||||||    |||||||+---+||||||||
      ||||||||    ||||||+---+|||||||||
      ||||||||    ||  |+---+||||||||||
      ||||||||    ||  +---+|||||||||||
    +-++++++++----++------++++++++++++-+
    |  D0-D7   W/R  EN        A0-A11   |
    |      4 Kilobyte statisch RAM     |
    +----------------------------------+

De communicatie vindt plaats via de I/O poorten &HB0-&HB3. De verdeling is als
volgt:

&HB0 : lezen/schrijven poort A van de PPI
&HB1 : lezen/schrijven poort B van de PPI
&HB2 : lezen/schrijven poort C van de PPI
&HB3 : lezen/schrijven controleregister PPI

De PPI (Programmable Perpheral Interface) verzorgt de communicatie tussen het
geheugen in de cartridge en de MSX. Deze is verder niet van belang. Het
controleregeister dient om de poorten A,B en C te selecteren voor lezen of
schrijven en om in te stellen op wat voor manier die poorten precies moeten
werken. Voor ons zijn slecht twee instellingen van belang. nl.:

&H80 - om in het geheugen te schrijven, en
&H89 - om uit het geheugen te lezen.

Lezen en schrijven loopt altijd via poort C. Poort A wordt gebruikt voor de
laagste 8 adreslijnen. Bij poort B moet bit 6 altijd 1 zijn. Bit 7 geeft aan of
er gelezen (1) of geschreven (0) moet worden. Bit 0-3 zijn de hoge adreslijnen.
Nu voor de duidelijkheid even een voorbeeld:

Om op adres &H0AC2 de waarde &HD3 te schrijven moet er het volgende gebeuren:

OUT &HB3,&H80   ' geeft aan dat er geschreven moet worden
OUT &HB0,&HC2   ' lage deel van het adres
OUT &HB1,&H4A   ' = &H40 (schrijven) + &H0A (hoge deel v.h. adres)
OUT &HB2,&HD3   ' de te schrijven waarde

Het hoge deel van het adres volgt uit: adres \ 256 Het lage deel van het adres
volgt uit: adres mod 256 Omdat het maar een 4KB geheugen is lopen de geheugen
adressen van &H000 tot &HFFF. De te schrijven waarde ligt tussen 0 en 255.
Teruglezen van deze waarde kan door middel van:

OUT &HB3,&H89   ' geeft aan dat er gelezen moet worden
OUT &HB0,&HC2   ' lage deel van het adres
OUT &HB1,&HCA   ' = &HC0 (lezen) + &H0A (hoge deel v.h. adres)
PRINT INP(&HB2) ' de inhoud van &H0AC2

U ziet (hopelijk) dat het lezen en schrijven uit en naar de data-cartridge
helemaal niet moeilijk is. U gebruikt gewoon de laatste twee voorbeelden.
Tenslotte nog een laatste voorbeeld.

10 REM lezen & schrijven in de Sony HBI-55
20 REM een 4KB data-cartridge
30 REM
40 SCREEN0: CLS: KEY OFF
50 LINEINPUT"Adres (&H000-&HFFF): &H";A$
60 H=VAL("&H"+A$): IF H<0 OR H>4095 THEN GOTO 50
70 PRINT:PRINT"Op adres &H";A$;" staat nu de waarde";
80 LO=H MOD 256: HI=H\256: GOSUB 180: PRINT WA
90 PRINT: LINEINPUT"Nieuwe waarde (0-255): ";WA$: WA=VAL(WA$)
100 IF WA<0 OR WA>255 THEN GOTO 90
110 GOSUB 120: GOTO 40
120 ' schrijven
130 OUT &HB3,&H80
140 OUT &HB0,LO
150 OUT &HB1,&H40+HI
160 OUT &HB2,WA
170 RETURN
180 ' lezen
190 OUT &HB3,&H89
200 OUT &HB0,LO
210 OUT &HB1,&HC0+HI
220 WA=INP(&HB2)
230 RETURN

    

Index

Vorige

Volgende