Herwig Siebenhofer
 / Home / C64
 
C 64

    Memory Map
    Float Map
    ROM Map
    Basic ROM
    Kernal ROM
    Char ROM
    CPU 6510
    VIC 6569
    SID 6581
    CIA 6526
    PLA
    Keyboard
    Control-Ports
    sonstige Ports

    Bauteile
    Schematik 1
    Schematik 2
    Bus-Schematik
    HF-Modulator
    Datasette
    Reset

C 1541  Floppy

    Blockschaltbild
    Memory Map
    Rom Listing
    Schematik
    VIA 6522
    Service

C 1581  Floppy

    Memory Map
    Rom Listing
    Schematik
    CIA 8520
    WD 1772

Archiv

    Mouse 1531
    Float-Formate
    Screenshots
    Korrekturen
    Chip 74xx
 

C1581-Floppy Memory Map

RAM   0000-07FF
0000nicht verwendet
0001nicht verwendet
0002Jobspeicher für die Puffer 0
0003Jobspeicher für die Puffer 1
0004Jobspeicher für die Puffer 2
0005Jobspeicher für die Puffer 3
0006Jobspeicher für die Puffer 4
0007Jobspeicher für die Puffer 5
0008Jobspeicher für die Puffer 6
0009Jobspeicher für die Puffer 7
000AJobspeicher für die Puffer 8
000B-001CTrack und Sektor für jeden Job
001D-001EID
001FSpurnummer
0020Seitennummer (0: Vorder-/ 1: Rückseite)
0021Sektornummer
0022Sektorengröße
0023-0024CRC-Prüfsumme
0025Flag für Diskettenwechsel
0026Drivemodus 0: Laufwerk inaktiv
0027Aktuelle Kopfposition
0028Zwischenspeicher für Jobcode
0029Länge der Befehlszeile
002A-002BAn- bzw. Nachlaufzähler für Laufwerksmotor
002CStackpointer bei Controllerschleifen-Aufruf
002DInit-Modus
002ESektorversatz
002Ffreie Blocks auf der aktuellen Spur beim BAM-Check
0030Optionen bei Fehlern
0031-0032Zeiger in die BAM
0033-0034Zeiger auf User-Sprungtabelle
0035Flags für BAM-Zustand
0036Zwischenspeicher
0037Modus von JOB $9e: BUFMOV_DV (Programmfehler)
0038Zwischenspeicher bei Burst-Load / 'u9' (Warmstart)
0039Zwischenspeicher
003AZwischenspeicher
003BPosition des '*' in Kommandozeile
003CFlag vom Burst-Load: Datei hat nur einen Block
003DZähler für gefundene Sektoren bei QUERY DISK FORMAT
003E1. gefundene Sektornummer bei QUERY DISK FORMAT
003FZwischenspeicher: aktueller Puffer (bei BAM-Arbeiten)
0040-0044Zwischenspeicher für diverse Zwecke
0045nicht verwendet
0046-0047Sprungvektor für User-Befehle
0048-0049Pufferadresse für Jobs
004A-004BZeiger in Cachepuffer
004CTracknummer der letzten Datei (LOAD"*")
004DAktuelle Tracknummer
004EAktuelle Sektornummer
004FSpeicher für obere Stackgrenze
0050Aktuelle Kanalnummer
00510: EOI vom Bus / Dateiende
0052Aktuelle Sekundäradresse
0053Sekundäradresse vom IEC-Bus
0054Zwischenspeicher für aktuelles Datenbyte
0055Zwischenspeicher
0056Zwischenspeicher
0057Sektornummer des aktuellen Side-Sektors
0058Zeiger auf Track und Sektor eines Datenblocks im Side-Sektor
0059Zeiger in die Side-Sektor-Tabelle des aktuellen Side-Sektors
005ABeim Vergrößern einer REL-Datei
005B-005DRechenregister 1 (z.B. Division)
005E-005Fnicht verwendet
0060-0062Rechenregister 2
0063nicht verwendet
0064-0065temporärer Pufferzeiger
0066Bitzähler für seriellen Bus
0067Zähler (z.B. für Laufwerks-/Kanalsuche)
0068Position im Record
0069Side-Sektor-Nummer des Records
006APosition von gesuchtem Track und Sektor im Side-Sektor
006BPosition des Records im Datenblock
006CZwischenspeicher für Jobnummer
006DPufferbelegung (Bit 0-6: Puffer 0-6, 1=belegt)
006EDrivestatus
006FFormatkennzeichen von Diskette
0070Kanalbelegungstabelle
0071Dir-Block in dem die Datei gefunden wurde
00721. Dir-Block mit einem freien Eintrag
0073Position des freien Eintrags im Dir-Block
0074Zeiger auf aktuelle Puffernummer
0075Anzahl der Sektoren pro Track
0076Bus-Modus
0077LISTEN-Geräteadresse (Adresse +$20)
0078TALK-Geräteadresse (Adresse +$40)
0079LED-Flag
007AZwischenspeicher für die Sekundäradresse
007BBefehlsmodus-Flag
007CBurst-Kommandobyte
007DZwischenspeicher für Jobstatus
007E-007FCache-Pufferzeiger für Burst-Befehle
0080Burst-Status
0081DOS-Fehlerunterdrückung (Burstzugriff)
0082Zwischenspeicher im Controller-Programm
0083Nummer des aktiven Jobs
0084Nummer der aktiven Jobroutine (0-32)
0085-0086Steuer-Bits für Jobbearbeitung (s. $c163)
0087Bit 7 = 1: Cache Puffer verändert
0088Solltrack (bei Kopfbewegung)
0089AND-Maske für Burst-Status
008AOR-Maske für Burst-Status
008B-008CZeiger auf Cachepuffer
008DE/A Byte
008ENummer der ersten physikalischen Spur
008FNummer der letzten physikalischen Spur
0090Starttrack der aktuellen Partition
0091Sektorengröße
0092Anzahl Sektoren auf der Spur
0093letzter Sektor auf der Spur
00941. Sektornummer auf der Spur
0095Aktueller Track (im Cache Puffer)
0096Diskettenseite des aktuellen Jobs
0097Aktuelle Seite (im Cache Puffer)
0098Kopfberuhigungszeit nach Verschiebung
0099Index für 2-Byte Jobspeicher (z.B. Track und Sektor)
009AGröße der Lücke zwischen zwei Sektoren
009BFüllbyte für Datenblock
009CZähler für Cache-Verzögerungszeit
009DCache-Verzögerungszeit
009EBlinkzähler für LED
009F-00A7Bit 0-6: Sektorposition im Cachpuffer, Bit 7 = 1: Track und Sektor umgewandelt
00A8-00BASekundäradressentabelle
00BB-00CCPufferzeiger 0-8
00CD-00CEZeiger in INPUT-Puffer
00CF-00D0Zeiger in ERROR-Puffer
00D1-00D71. Puffer für Kanal
00D8-00DE2. Puffer für Kanal
00DF-00E4Tabelle: Am längsten inaktive Kanäle
00E5-00E9Dir-Block, in dem Dateieintrag ist
00EA-00EEZeiger in den Dir-Block mit dem Eintrag
00EF-00F3Drivenummern der Parameter
00F4-00F8Dateitypen und Flags für Joker
00F9-00FFDateitypentabelle
0100Gruppennummer des aktuellen Records
0101Modus der REL-Datei
0102-0108Aktuelle Gruppennummer
0109-010FSektor des Super-Side Sektors
0110-0116Track des Super-Side Sektors
0117-018FStackbereich
0190-0191.WD b0f0 Haupt-Leerschleife
0192-0193.WD dafd Interrupt-Routine
0194-0195.WD afca Warmstartvector
0196-0197.WD b262 VALIDATE
0198-0199.WD 8ec5 INITIALIZE
019A-019B.WD b781 Partition
019C-019D.WD 892f Memory-Read/Write
019E-019F.WD 8a5d Block-Befehle
01A0-01A1.WD 898f USER
01A2-01A3.WD a1a1 POSITION (RECORD)
01A4-01A5.WD a956 Utility-Loader (&)
01A6-01A7.WD 876e COPY
01A8-01A9.WD 88c5 RENAME
01AA-01AB.WD 8688 SCRATCH
01AC-01AD.WD b348 NEW
01AE-01AF.WD a7ae Error-Routine des Controllers
01B0-01B1.WD abcf ATN-bearbeiten
01B2-01B3.WD ad5c Daten auf ser. Bus
01B4-01B5.WD aeb8 Daten vom ser. Bus
01B6-01B7.WD c0be Controller-Routine
01B8-01B9.WD cedc logisches in physikalisches Format
01BA-01BB.WD a7f1 Error-Routine des DOS
01BC-01CDJobspeicher HDRS2
01CE-01D6Jobspeicher SIDS
01D7-01D8Timer B Wert im Hi/Lo-Format
01D9Anlaufzeit des Motors
01DAController-Befehl: 'Restore'
01DBController-Befehl: 'Seek'
01DCController-Befehl: 'Step'
01DDController-Befehl: 'Step-in'
01DEController-Befehl: 'Step-out'
01DFController-Befehl: 'Read Sector'
01E0Controller-Befehl: 'Write Sector'
01E1Controller-Befehl: 'Read Adress'
01E2Controller-Befehl: 'Read Track'
01E3Controller-Befehl: 'Write Track'
01E4Controller-Befehl: 'Force Interrupt'
01E51. Sektor des Verzeichnisses
01E6-01E7Zwischenspeicher
01E8-01E9Zwischenspeicher
01EAZwischenspeicher: (Burst-) Status/Fehlercode
01EB1581-Formatkennzeichen 'D'
01ECDOS-Versionsnummer '3'
01ED-01EELänge der Partition
01EFkleinste gefundene Sektornummer (BURST)
01F0größte gefundene Sektornummer (BURST)
01F1-01F9Hi-Bytes der Pufferadressen
01FASchreibschutz Status
01FBAutoboot-Flag
01FC-01FEJMP $BA40: Byte auf FSM-Bus ausgeben
01FFnicht verwendet
0200-0229Kommandopuffer
022AAktuelle Befehlsnummer ($80-$89: Block-Befehle)
022BTrack des Direktory
022Cletzter Track der aktuellen Partition + 1
022DAktueller Dateityp
022EAnzahl der Parameter (vor '=') (Zwischenspeicher)
022FAnzahl der Parameter in der Kommandozeile
0230Anzahl der Parameter vor '='
0231Zähler für Suche im Directory
0232Zeiger auf den gefundenen Dir-Eintrag
0233Dateityp aus der Kommandozeile
0234-0239Kanalstatustabelle
023AKanalstatus für Fehlerkanal
023B-0240Ausgabe-Bytes der Kanäle an seriellen Bus
0241Ausgabe-Byte des Fehlerkanals
0242-0248Anzahl der gültigen Bytes im Datenblock
0249-024FAktuelle Recordnummer oder Dateilänge Lo
0250-0256Aktuelle Recordnummer oder Dateilänge Hi
0257-025DPosition des nächsten Records im Block
025E-0264Aktuelle Recordlänge
0265-026BSide-Sektor-Puffer für Kanal
026Caktuelle Parameterlänge
026DNummer des gefundenen Dateinamens
026EDirectory-Modus (für formatierte Ausgabe auf Sekundäradresse 0)
026Faktuelle Recordlänge
0270Track des aktuellen Super-Side-Sektors
0271Sektor des aktuellen Super-Side-Sektors
0272-027AZwischenspeicher für Jobcodes
027B-027Cnicht verwendet
027D-0283Dir-Block mit dem Dateieintrag des Kanals
0284-028APosition des Dateieintrags im Dir-Block
028B1. Sektornummer der letzten Datei ("*")
028CZwischenspeicher (Kanalnummer)
028DDirectory: Basic Zeilennummer Lo
028EDirectory: Basic Zeilennummer Hi
028FZwischenspeicher für Zeichensuche
0290Zeiger hinter aktuellen Parameter
0291-0296Position der Parameter in der Kommandozeile
0297-029BWerte aus Kommandozeile Hi-Bytes
029C-02A0Werte aus Kommandozeile Lo-Bytes
02A1Jokerflag: Aktueller Dateiname enthält '*' oder '?'
02A2Bitmaske bei Kommandozeilen-Test
02A3Anzahl der Laufwerke
02A4Laufwerksnummer (beim Laden von Verzeichnissen)
02A5Such-Ergebnis
02A6Flag für Directory-Ende (0: Ende)
02A7Zugriffsart aus Kommandozeile (R,W,A,M)
02A8Fehlerprüfung ausschalten
02A9-02AAAnzahl freie Blocks
02ABFehlernummer
02AC-02C7Directory-Zeile
02C8-02CFnicht verwendet
02D0-02FFFehlerpuffer für Meldungen im Klartext
0300-03FFPuffer 0
0400-04FFPuffer 1
0500-05FFPuffer 2 (User-Puffer)
0600-06FFPuffer 3
0700-07FFPuffer 4
0800-08FFPuffer 5
0900-09FFPuffer 6
0A00-0AFFPuffer 7 (BAM Teil 1)
0B00-0BFFPuffer 8 (BAM Teil 2)
0C00-1FFFCache-Puffer
  
Controller-Chips
4000-400FCIA 8520A
6000-6003WD1772: Disc-Contoller
  
ROM
8000-8003Checksumme
8004-DBC6DOS, Steuerungsroutinen
DBC7-DC37Patches
DC38-FEFFungenutzt (.DB $FF)
FF00-FF74Sprungadressen
FF75-FFACTabelle der DOS-Funktionen
FFAD-FFE9Vektoren initialisieren
FFEA-FFFFUSER-Vektoren