; letzte Aenderung ; sense$data belegt 5 byte, damit free$sys$2 nur noch 2 byte ; 4.2.89 / Wilfried ; PROF-80 Systempage Adressen : ; ----------------------------- FLOP$0 EQU 0FF00H ; Diskpage, 3 Bytes TEMP EQU 0FF03H ; allgemeiner Zwischenspeicher, 1 Byte BAUD$JUMPERBYTE EQU 0FF04H ; STELLUNG DES JUMPERS J5: 0=KEIN JUMPER ; 1=1-3,2=2-4,3=3-5,4=4-6, 1 Byte CLKFLG EQU 0FF05H ; "0": UHR NICHT OK, "FF": UHR OK, 1 Byte DISKFLG EQU 0FF06H ; "0": UPD 765 NICHT OK, "FF": UPD 765 OK, 1 Byte SYSTEMTAKT EQU 0FF07H ; SYSTEMFREQUENZ * 100 HZ, 1 Wort DISPADR EQU 0FF09H ; LETZTER ZAEHLERSTAND DES D-BEFEHLS, 1 Wort EOTSAVE EQU 0FF0BH ; WIRKLICHES ENDE EINER SPUR, 1 Byte EOTFLG EQU 0FF0CH ; FEHLERFLAG FUER DISK R/W UEBER SPUR ENDE, 1 Byte RWCMD EQU 0FF0DH ; COMMANDO FUER RWCOM, 1 Byte ERMSG EQU 0FF0EH ; MESSAGE FUER RWCOM, 1 Wort FLOP$1 EQU 0FF10H ; Diskpage, 3 Bytes IO$JUMPERBYTE EQU 0FF13H ; STELLUNG DES JUMPERS J4: 0=KEIN JUMPER ; 1=1-3,2=2-4,3=3-5,4=4-6. 1 Byte PHYS$TIME EQU 0FF14H ; ZWISCHENSPEICHER FUER UPD 1990 ZAEHLER INHALT, 5 Bytes SHIFT$CONT EQU 0FF19H ; ZWISCHENSPEICHER FUER UPD 1990 SHIFTREGISTER , 5 Bytes SOFTVERZ EQU 0FF1EH ; VERZOGERUNGSZEIT FUER DUPLEX-SCHNITTSTELLE, 1 Wort FLOP$2 EQU 0FF20H ; Diskpage, 3 Bytes TEST$TYPE EQU 0FF23H ; WIRD BEI TEST GESETZT (FORMATERKENNUNG FLOPPY) ; BIT 7: 0=SS, 1=DS 1 Byte ; BIT 6: 0=SD, 1=DD ; BIT 5: 0=MAXI, 1=MINI ; BIT 4: IMMER 0 ; BIT 0-3: SEKTORGROESSE TEST$MSEK EQU 0FF24H ; ANZAHL DER SEKTOREN/SPUR, DIE TEST ERMITTELTE, 1 Byte TEST$TRACK EQU 0FF25H ; AUF DIESER SPUR WIRD DAS FLOPPY- ; FORMAT GETESTET (DEFAULT=1) , 1 Byte UMLEIT$NMI EQU 0FF26H ; EIN NMI GEHT UEBER DIESEN SPRUNG , 1 Opcode, 1 Adresse BANK$ERR$BYTE EQU 0FF29H ; BELEGUNG DER ZWEI RAM BANKS : ( 1 Byte ) ; 0: BANK 0 UND BANK 1 OK ; 1: BANK 0 FEHLER ; 2: BANK 1 FEHLER DMAADR EQU 0FF2AH ; DMA ADRESSE FUER FLOPPY READ UND WRITE, 1 Wort SECTCNT EQU 0FF2CH ; ANZAHL DER SEKTOREN FUER FLOPPY READ UND WRITE, 1 Byte UMLEIT$GETCM EQU 0FF2DH ; ROUTINEN, DIE VON CP/M BENUTZT WERDEN, MUESSEN ; UEBER DIESEN SPRUNG AUF BEFEHLS-EINGABE-EBENE ; ZURUECKKEHREN. CP/M BIOS SETZT DIESEN SPRUNG ; DANN AUF WBOOT, 1 Opcode, 1 Adresse FLOP$3 EQU 0FF30H ; Diskpage, 3 Bytes CMDTAB EQU 0FF33H ; KOMMANDO-TABELLE FUER FLOPY-CONTROLER, 1 Byte UNIT EQU 0FF34H ; WIRD VON C-BEFEHL GESETZT, 1 Byte TRACK EQU 0FF35H ; WIRD VON A-BEFEHL GESETZT, 1 Byte HEAD EQU 0FF36H ; WIRD VON A-BEFEHL GESETZT, 1 Byte SECTOR EQU 0FF37H ; WIRD VON A-BEFEHL GESETZT, 1 Byte SECSZ EQU 0FF38H ; WIRD VON C-BEFEHL GESETZT, 1 Byte EOT EQU 0FF39H ; WIRD VON C-BEFEHL GESETZT, 1 Byte GAPLL EQU 0FF3AH ; WIRD VON C-BEFEHL GESETZT, 1 Byte DTLL EQU 0FF3BH ; WIRD VON C-BEFEHL GESETZT, 1 Byte UMLEIT$CONST EQU 0FF3CH ; KONSOLEN STATUS GEHT UEBER DIESEN SPRUNG ; 1 Opcode, 1 Adresse SEEKNR EQU 0FF3FH ; EINIGE LAUFWERKE BENOETIGEN ZWEI STEPIMPULSE ; DIE UNTEREN 4 BIT GEBEN FUER JEDES LW ; AN, OB ES EIN ('0') ODER ZWEI ('1') IMPULSE ; PRO SPURWECHSEL BRAUCHT, LAUFWERK 0 IST LSB. ; DIE OBEREN 4 BIT DIESES BYTES GEBEN AN, OB ; TEST DAS TWO-SIDED-BIT IMMER AUF 1 ODER ; ENTSPRECHEND DER TWO-SIDED-LEITUNG SETZTEN ; SOLL. DURCH DIESE ERWEITERUNG SPART MAN SICH ; DEN HARDWARE-ZUSATZ (SIEHE CP/M ANPASSUNS- ; BESCHREIBUNG) FUER GEMISCHTEN BETRIEB MIT ; 80 TRACK LAUFWERKEN. ; DEFAULTMAESSIG WIRD SEEKNR MIT XSEEKNR ; INITIALISIERT. SEEKNR KANN ABER AUCH MIT DEM ; U-BEFEHL GESETZT WERDEN. 1 Byte FLOP$4 EQU 0FF40H ; Diskpage, 3 Bytes REST EQU 0FF43H ; ERGEBNISSTABELLE DES FLOPY-CONTROLERS, 7 Bytes UMLEIT$CONIN EQU 0FF4AH ; KONSOLEN EINGABE GEHT UEBER DIESEN SPRUNG, Opcode, Adresse UMLEIT$CONOUT EQU 0FF4DH ; KONSOLEN AUSGABE GEHT UEBER DIESEN SPRUNG, Opcode, Adresse FLOP$5 EQU 0FF50H ; Diskpage, 3 Bytes IN$BUFF$END EQU 0FF53H ; FIFO ZEICHEN BUFFER FUER DUPLEX EINGABE, 11 Bytes IN$BUFF$ZEIG EQU 0FF5EH ; ZEIGER FUER ZEICHEN BUFFER, 1 Wort FLOP$6 EQU 0FF60H ; Diskpage, 3 Bytes DERMSG EQU 0FF63H ; "0" : AUSGABE VON FLOPPY-FEHLER, 1 Byte ; "FF": AUSGABE VON FLOPPY-FEHLER UNTERDRUECKEN RWRETRY EQU 0FF64H ; ANZAHL DER LESE/SCHREIB-VERSUCHE MIT FLOPPY, 1 Byte WRITE$PRECOM EQU 0FF65H ; WRITE PRECOMPENSATION FUER RWCOM ROUTINE, 1 Byte KENNUNG EQU 0FF66H ; DER MONITOR SCHREIBT HIER PROF-80 KENNUNG EIN, 7 Bytes MON$VERS EQU 0FF6DH ; MONITOR VERSIONSNUMMER, 1 Byte COMMON$PAGE EQU 0FF6EH ; PAGEGRENZE FUER COMMON BEREICH (SETZT BIOS), 1 Byte CURRENT$BANK EQU 0FF6FH ; GEWAEHLTE BANK UNTER COMMON (SETZT BIOS), 1 Byte FLOP$7 EQU 0FF70H ; Diskpage, 3 Bytes SOFTPRNTVERZ EQU 0FF73H ; VERZOEGERUNGSZEIT FUER SIMPLEX SCHNITTSTELLE, 1 Wort READY$BYTE EQU 0FF75H ; DIE UNTEREN 4 BITS GEBEN AN, OB EIN LW , 1 Byte ; EIN READY SIGNAL LIEFERN KANN ('0') ODER OB ; ES KEIN READY LIEFERT ('1'). ; DIE OBEREN 4 BITS GEBEN AN, OB BEI DEM ; BETREFFENDEN LW UEBERHAUPT SCHON GETESTET ; WURDE OB ES READY LIEFERT ; '0'= SCHON GETESTET, '1'= NOCH NICHT GETESTET ; LAUFWERK 0 IST LSB EPROMZ EQU 0FF76H ; WIEVIEL MAL WURDE EPROM EINGESCHALTET?, 1 Byte ; (WIRD VOM BIOS GESETZT) TYPELIST EQU 0FF77H ; ZEIGER AUF DISK$TYPE$LIST (WIRD VOM BIOS ; GESETZT), 1 Wort SPECD$WORD EQU 0FF79H ; DER INHALT DIESER ZWEI BYTE BESTIMMT DIE ; STEP-RATE, DIE HEAD-LOAD-TIME UND DIE HEAD- ; UNLOAD-TIME. SPECD$WORD WIRD NACH EINEM RESET ; VOREINGESTELLT. NACH JEDEM CHECK DRIVE WERDEN ; DIE DRIVE-ZEITEN NEU GESETZT. ; DIE 16 BIT VON SPECD$WORD SIND FOLGENDERMASSEN ; AUFGEBAUT: ; SSSSUUUU LLLLLLLX ; ; SSSS: STEPRATE 0000=16MS ; 0001=15MS ; ......... ; 1111=1MS ; ; UUUU: HEADUNLOADTIME IN 16 MS SCHRITTEN ; 0000=0MS, 0001=16MS, .. ,1111=240MS ; ; LLLLLLL: HEADLOADTIME IN 2 MS SCHRITTEN ; ; X: IMMER 1 ; ; DEFAULTMAESSIG WIRD SPECD$WORD MIT ; XSPECD$WORD INITIALISIERT, ES KANN ABER ; AUCH MIT DEM U-BEFEHL GESETZT WERDEN. TE$TIME EQU 0FF7BH ; WARTEZEIT NACH DISK-WRITE IN 100US (BEI 6MHZ), 1 Byte SIOABAUD EQU 0FF7CH ; JUMPERSTELLUNG UNIO J2-A, 1 Byte SIOBBAUD EQU 0FF7DH ; JUMPERSTELLUNG UNIO J2-B, 1 Byte STEP$WAIT EQU 0FF7EH ; WARTEZEIT VOR SEEK WENN MOTOR VORHER AUS WAR, 1 Byte ; IST BEI EPSON 3,5 ZOLL LAUFWERKEN NOTWENDIG. ; ZEIT: MAL 10 MS (BEI 6 MHZ) HD$FREE EQU 0FF7FH ; fuer HD nicht mehr erforderlich FLOP$8 EQU 0FF80H ; Diskpage, 1 Byte ALT$UNIT EQU 0FF81H ; LAUFWERK UND TRACK BEI LETZTEM , 1 Byte ALT$TRACK EQU 0FF82H ; SEEK AUFRUF , 1 Byte CDB$COM EQU 0FF83H ; HD-Kommando , 1 Byte CDB$HEAD EQU 0FF84H ; HD-Kopf , 1 Byte CDB$SECTOR EQU 0FF85H ; HD-Sektor , 1 Byte CDB$CYLINDER EQU 0FF86H ; HD-Track , 1 Byte CDB$COUNT EQU 0FF87H ; HD-Zaehler , 1 Byte CDB$CONTROL EQU 0FF88H ; HD-Controlbyte SENSE$DATA EQU 0FF89H ; 5 Bytes ;naechste 2 byte belegt seit PROF 1.7 HD$BOOT: EQU 0FF8EH ;FUER CP/M 0FFH => FLOPPY-BOOT, 000H => HARDDISK-BOOT BOOT$FLAG: EQU 0ff8FH ;FUER MONITOR 0 => HARDDISK-BOOT, SONST FLOPPY-BOOT FLOP$9 EQU 0FF90H ; Diskpage, 1 Byte FREE$SYS$3 EQU 0FF91H ; 15 Bytes frei FLOP$A EQU 0FFA0H ; Diskpage, 1 Byte FREE$SYS$4 EQU 0FFA1H ; 15 Bytes frei FLOP$B EQU 0FFB0H ; Diskpage, 7 Bytes FREE$SYS$5 EQU 0FFB7H ; 9 Bytes frei FLOP$C EQU 0FFC0H ; Diskpage, 1 Byte FREE$SYS$6 EQU 0FFC1H ; 15 Bytes frei FLOP$D EQU 0FFD0H ; Diskpage, 1 Byte FREE$SYS$7 EQU 0FFD1H ; 15 Bytes frei FLOP$E EQU 0FFE0H ; Diskpage, 1 Byte FREE$SYS$8 EQU 0FFE1H ; 15 Bytes frei FLOP$F EQU 0FFF0H ; Diskpage, 7 Bytes FREE$SYS$9 EQU 0FFF7H ; 9 Bytes frei