00000h                                                           ;******************************************************************
00000h                                                           ;***                                                            ***
00000h                                                           ;***  PROF-181x Monitor Version: 1.5                            ***
00000h                                                           ;***                                                            ***
00000h                                                           ;***  letzte Aenderung am: 24.08.1985      (c) Joachim Hanst    ***
00000h                                                           ;***  reverse engeneering: 27.10.2014          S. Sader         ***
00000h                                                           ;******************************************************************
00000h                                                           ;
00000h                                                           ;                   TITLE     'PROF-181x MONITOR VERSION 1.5'
00000h                                                           ;
00000h                                                           ;
00000h                                                           ;
00000h                                                           ;                   MACLIB    Z80
00000h                                                           ;                   MACLIB    CDEF      ;BENUTZE CDEF.LIB FUER ALLE C-SYSTEM MODULE
00000h                                                           ;
00000h                                            
00000h                                            
00000h                                                           ; Byte References
00000h                                            
00000h                                            
00000h            JA:                   EQU       -1
00000h            NEIN:                 EQU       NOT JA
00000h                                            
00000h            BELL:                 EQU       07H            ; bell
00000h            LF:                   EQU       0AH            ; linefeed
00000h            FF:                   EQU       0CH            ; formfeed
00000h            CR:                   EQU       0DH            ; carriage return
00000h            ESC:                  EQU       1BH            ; esc
00000h            CNGPRMT:              EQU       '-'            ; AENDERN-PROMPT
00000h            EPROM:                EQU       0
00000h            MASK_INDEX:           EQU       20H            ; MASKE ZUM FILTERN INDEX-PULSE
00000h            MASK_MOT:             EQU       80H            ; MASKE FUER MOTOR EIN/BUSY
00000h                                            
00000h                                            
00000h                                            
00000h                                                           ; *********************************
00000h                                                           ; *** PARALLEL AUSGABE PORT 74LS259
00000h                                                           ; *** -----------------------------
00000h                                            
00000h            P_TIME_OUT:           EQU       0D8H           ; UHR AUSGABE (74LS259)
00000h                                            
00000h            PCF_WRITE_CMD:        EQU       0A2H           ; I2C-BEFEHL FUER SCHREIBEN DER REGISTER
00000h            PCF_READ_CMD:         EQU       0A3H           ; I2C-BEFEHL FUER LESEN DER REGISTER
00000h                                            
00000h            P_LS259:              EQU       0D8H           ; 
00000h                                            
00000h            CONTR:                EQU       0D8H           ; 
00000h            STAT:                 EQU       0D9H           ;  
00000h                                            
00000h                                                           ; MASKEN ZUM SETZEN/RUECKSETZEN
00000h                                                           ; DER PINS BEIM LS259
00000h            PAD_SET:              EQU       01H            ; BIT SETZEN (MIT OR)
00000h            PAD_RESET:            EQU       0FEH           ; BIT ZURÜCKSETZEN (MIT AND)
00000h                                            
00000h                                                           ; ADRESSEN DER EINZELNEN BITS
00000h                                                           ; BEACHTE, DASS IMMER ZWEI BITS
00000h                                                           ; GESETZT WERDEN
00000h            PAD_DATA:             EQU       00H            ; DATA SETZEN/RUECKSETZEN
00000h            PAD_M0:               EQU       02H            ; M0 SETZEN/RUECKSETZEN
00000h            PAD_M1:               EQU       04H            ; M1 SETZEN/RUECKSETZEN
00000h            PAD_MINI:             EQU       06H            ; MINI SETZEN/RUECKSETZEN
00000h            PAD_SEL:              EQU       08H            ; SEL SETZEN/RUECKSETZEN
00000h            PAD_SCL:              EQU       0AH            ; SCL SETZEN/RUECKSETZEN
00000h            PAD_STB:              EQU       0CH            ; STB SETZEN/RUECKSETZEN
00000h            PAD_MM0:              EQU       0EH            ; MM0 SETZEN/RUECKSETZEN
00000h                                            
00000h                                            
00000h                                                           ; *****************************************************************
00000h                                                           ; *** FLOPPY-CONTROLER
00000h                                                           ; *** ----------------
00000h                                            
00000h            FDC:                  EQU       0DCH           ; FLOPPY CONTROLER STATUS
00000h            FDD:                  EQU       0DDH           ; FLOPPY CONTROLER DATEN
00000h                                                           ;
00000h            HLO:                  EQU       240            ; HEADLOADTIME   IN MS
00000h            SRT:                  EQU       6              ; STEPRATE       IN MS
00000h            HUT:                  EQU       240            ; HEADUNLOADTIME IN MS
00000h                                                           ;
00000h            HLOS:                 EQU       ((HLO)/2)*2    ; DIESE DREI EINTRAEGE
00000h            HUTS:                 EQU       (HUT+15)/16    ; NICHT
00000h            SRTS:                 EQU       16-SRT         ; VERAENDERN
00000h                                            
00000h                                                           ; *****************************************************************
00000h                                                           ; *** GRIP-PORTS
00000h                                                           ; *** ----------
00000h                                            
00000h            GRIPC:                EQU       0C0H           ; GRAFIK-KARTE
00000h            GRIPD:                EQU       0C1H           ;
00000h                                                           ;
00000h            GRIPIN_MASK:          EQU       80H            ;
00000h            GRIPOUT_MASK:         EQU       40H            ;
00000h                                            
00000h                                            
00000h                                            
00000h            FFH:                  EQU       0FFH           ;  -1
00000h            B_40:                 EQU       40H            ;  '@'  64
00000h            B_04:                 EQU       04H            ;  4
00000h            B_08:                 EQU       08H            ;  8
00000h            B_02:                 EQU       02H            ;  2
00000h            B_06:                 EQU       06H            ;  6
00000h            B_03:                 EQU       03H            ;  3
00000h            B_0F:                 EQU       0FH            ;  15
00000h            B_2F:                 EQU       2FH            ;  '/'  47
00000h            B_0D:                 EQU       0DH            ;  13
00000h            B_1B:                 EQU       1BH            ;  27
00000h            B_0A:                 EQU       0AH            ;  10
00000h            B_20:                 EQU       20H            ;  ' '  32
00000h            B_F0:                 EQU       0F0H           ;  'p'+128  -16
00000h            B_30:                 EQU       30H            ;  '0'  48
00000h            B_09:                 EQU       09H            ;  9
00000h            B_01:                 EQU       01H            ;  1
00000h            B_60:                 EQU       60H            ;  '`'  96
00000h                                            
00000h            B_3F:                 EQU       3FH            ;  '?'  63
00000h                                            
00000h            B_0E:                 EQU       0EH            ;  14
00000h                                            
00000h                                            
00000h                                            
00000h                                                           ; Displacement References
00000h                                            
00000h            SYSTEMPAGE:           EQU       0FF00H
00000h                                            
00000h                                                           ; Undefined Label References 
00000h                                                           ;   (probably from data as program; or, to OUTsiDE program area)
00000h                                            
00000h                                            
00000h                                            
00000h            L_103B:               EQU       103BH          ; Undefined label
00000h            L_FD80:               EQU       0FD80H         ; Undefined label
00000h            L_FC00:               EQU       0FC00H         ; Undefined label
00000h                                            
00000h                                            
00000h                                            
00000h                                            
00000h                                            
00000h                                            
00000h                                            
00000h                                  DEFSEGMENT "CSEG",0,01FFFFH,"PMON181ROM"
00000h                                  DEFSEGMENT "DSEG",0,0FFFFFH,"PMON181RAM"
00000h                                            
00000h                                  SEGMENT   "CSEG"
00000h                                  ORG       EPROM
00000h                                            
00000h                                            
00000h            MONITOR:                        
00000h                                                           ;
00000h                                                           ; SPRUNGVEKTOR FUER MONITOR SERVICE-ROUTINEN
00000h                                                           ;
00000h                                            
00000h C34923                           JP        INIT           ;MONITOR-EINGANG NACH RESET   
00003h C3890C     CS:                   JP        CONST          ;CONSOLEN STATUS,EIN-UND AUSGABE
00006h C3990C     CI:                   JP        CONIN          ;GEHEN ERST UEBER SPRUNG IM RAM
00009h C3A90C     CO:                   JP        CONOUT         ;AUF IHRE VERTEILER
0000Ch C3960B                           JP        BOOTERR        ;DRUCKE FEHLERMELDUNG
0000Fh C3C101                           JP        SETCMDT        ;SETZE CMDTAB ENTSPRECHEND TEST
00012h C35502                           JP        RECAL          ;SETZE AUSGEWAEHLETES DRIVE AUF TRACK 0
00015h C35C04                           JP        READ           ;LESE DISK
00018h C35404                           JP        WRITE          ;SCHREIBE DISK
0001Bh C31005                           JP        TEST           ;TESTE DISK-FORMAT
0001Eh C3B703                           JP        MOTO           ;WARTE AUF READY UND GEBE DISK-BEFEHL
00021h C32B04                           JP        CMFD           ;SENDE DISK-BEFEHL OHNE READY
00024h C31B03                           JP        RESULT         ;ERGEBNISPHASE DES FDC9268
00027h C39402                           JP        SEEK           ;POSITIONIERE AUF SPUR
0002Ah C34304                           JP        NEXT           ;LESE EIN RESULT-BYTE AUS FDC9268
0002Dh C3AA00     GRAFIN:               JP        GRAF_IN        ;VIDEO KARTE EINGABE
00030h C3B300     GRAFOUT:              JP        GRAF_OUT       ;VIDEO KARTE AUSGABE
00033h C39800     GRAFIST:              JP        GRAF_IST       ;VIDEO KARTE EIN STATUS
00036h E926       SERNR:                DEFW      9961           ;SERIEN NUMMER
00038h C36810     RSTART7:              JP        RST_VERTEILER  ;RST 7 EINSPRUNG (MUSS 38H SEIN)
0003Bh C3A100     GRAFOST:              JP        GRAF_OST       ;VIDEO KARTE AUS STATUS
0003Eh C3BD00     SOFTIN:               JP        SOFT_IN        ;SOFT SCHNITTSTELLE EINGABE
00041h C3C800     SOFTOUT:              JP        SOFT_OUT       ;SOFT SCHNITTSTELLE AUSGABE
00044h C3D400     SOFTIST:              JP        SOFT_IST       ;SOFT SCHNITTSTELLE EIN STATUS
00047h C3DD00     SOFTOST:              JP        SOFT_OST       ;SOFT SCHNITTSTELLE AUS STATUS
0004Ah C3BD00     USER1IN:              JP        USER1_IN
0004Dh C3C800     USER1OUT:             JP        USER1_OUT
00050h C3D400     USER1IST:             JP        USER1_IST
00053h C3DD00     USER1OST:             JP        USER1_OST
00056h C3BD00     USER2IN:              JP        USER2_IN
00059h C3C800     USER2OUT:             JP        USER2_OUT
0005Ch C3D400     USER2IST:             JP        USER2_IST
0005Fh C3DD00     USER2OST:             JP        USER2_OST
00062h 00         USERINIT:             NOP                      ;BENUTZER INITIALISIERUNG
00063h 00                               NOP       
00064h C9                               RET       
00065h 15         VERSIONNR:            DEFB      015H           ;VERSIONS NUMMER
00066h C36810                           JP        RST_VERTEILER
00069h C34E06                           JP        DISKERR
0006Ch 00                               NOP       
0006Dh 00                               NOP       
0006Eh C9                               RET       
0006Fh 3E00                             LD        A,0
00071h C9                               RET       
00072h C3E508                           JP        SET_PHYS_TIME  ;SETZE ZEIT
00075h C3AE08                           JP        READ_PHYS_TIME ;LESE ZEIT
00078h C3E600                           JP        MSER1INIT
0007Bh C3F300                           JP        MSER2INIT
0007Eh C30802                           JP        INIT_FDC
00081h C3A801                           JP        LOG_PHYS
00084h C34309                           JP        USER_BYTES_WRITE
00087h C3DB05                           JP        MAXI_SET
0008Ah C3EE05                           JP        MINI_SET
0008Dh C33506                           JP        SET_PRECOM_1
00090h                                            
00090h                                            
00090h A017       EPR_BOOT:             DEFW      BCMD_8         ; Hier wird die Bootadresse für EPROM eingetragen
00092h                                                           ; als Default steht hier Sprung zur Fehlermeldung
00092h 0000       PATCH:                DEFW      0000H
00094h 9600                             DEFW      W_0096
00096h 246C       W_0096:               DEFW      06C24H
00098h                                            
00098h                                                           ;---------------------------EIN-AUSGABEROUTINEN-----
00098h                                            
00098h                                            
00098h                                            
00098h            GRAF_IST:                       
00098h                                                           ; TERMINAL EINGABE STATUS
00098h                                                           ; AKKU 0 UND Z WENN KEIN ZEICHEN
00098h                                                           ; AKKU FF UN NZ WENN ZEICHEN
00098h DBC0                             IN        A,(GRIPC)
0009Ah E680                             AND       GRIPIN_MASK
0009Ch C8                               RET       Z
0009Dh 3EFF                             LD        A,0FFH
0009Fh B7                               OR        A              ; RESET ZERROFLAG
000A0h C9                               RET       
000A1h                                            
000A1h            GRAF_OST:                       
000A1h                                                           ; TERMINAL AUSGABE STATUS
000A1h DBC0                             IN        A,(GRIPC)
000A3h E640                             AND       GRIPOUT_MASK
000A5h C8                               RET       Z
000A6h 3EFF                             LD        A,0FFH
000A8h B7                               OR        A
000A9h C9                               RET       
000AAh                                            
000AAh                                            
000AAh            GRAF_IN:                        
000AAh                                                           ; TERMINAL EINGABE
000AAh DBC0                             IN        A,(GRIPC)
000ACh E680                             AND       GRIPIN_MASK    ; ZEICHEN DA ?
000AEh 28FA                             JR        Z,GRAF_IN      ; WARTE AUF ZEICHEN
000B0h DBC1                             IN        A,(GRIPD)
000B2h C9                               RET       
000B3h                                            
000B3h                                            
000B3h            GRAF_OUT:                       
000B3h                                                           ; TERMINAL AUSGABE
000B3h DBC0                             IN        A,(GRIPC)
000B5h E640                             AND       GRIPOUT_MASK
000B7h 28FA                             JR        Z,GRAF_OUT     ; WARTE BIS BUFFER LEER
000B9h 79                               LD        A,C            ; AUSGABE ZEICHEN NACH A
000BAh D3C1                             OUT       (GRIPD),A
000BCh C9                               RET       
000BDh                                            
000BDh                                            
000BDh            SOFT_IN:                        
000BDh            USER1_IN:                       
000BDh            USER2_IN:                       
000BDh                                            
000BDh ED3804                           IN0       A,(04H)        ; ASCI Status Register Ch 0
000C0h E680                             AND       80H
000C2h 28F9                             JR        Z,SOFT_IN
000C4h ED3808                           IN0       A,(08H)        ; ASCI Receive Data Register Ch 0
000C7h C9                               RET       
000C8h                                            
000C8h            SOFT_OUT:                       
000C8h            USER1_OUT:                      
000C8h            USER2_OUT:                      
000C8h                                            
000C8h ED3804                           IN0       A,(04H)        ; ASCI Status Register Ch 0
000CBh E602                             AND       02H
000CDh 28F9                             JR        Z,SOFT_OUT
000CFh 79                               LD        A,C
000D0h ED3906                           OUT0      (06H),A        ; ASCI Transmit Data Register Ch 0
000D3h C9                               RET       
000D4h                                            
000D4h            SOFT_IST:                       
000D4h            USER1_IST:                      
000D4h            USER2_IST:                      
000D4h                                            
000D4h ED3804                           IN0       A,(04H)        ; ASCI Status Register Ch 0
000D7h E680                             AND       80H
000D9h C8                               RET       Z
000DAh F6FF                             OR        0FFH
000DCh C9                               RET       
000DDh                                            
000DDh            SOFT_OST:                       
000DDh            USER1_OST:                      
000DDh            USER2_OST:                      
000DDh                                            
000DDh ED3804                           IN0       A,(04H)        ; ASCI Status Register Ch 0
000E0h E602                             AND       02H
000E2h C8                               RET       Z
000E3h F6FF                             OR        0FFH
000E5h C9                               RET       
000E6h                                            
000E6h                                            
000E6h CD0001     MSER1INIT:            CALL      MSERINIT
000E9h ED3802                           IN0       A,(02H)        ; ASCI Control Register B Ch 0
000ECh E6D0                             AND       0D0H
000EEh B1                               OR        C
000EFh ED3902                           OUT0      (02H),A        ; ASCI Control Register B Ch 0
000F2h C9                               RET       
000F3h                                            
000F3h                                            
000F3h CD0001     MSER2INIT:            CALL      MSERINIT
000F6h ED3803                           IN0       A,(03H)        ; ASCI Control Register B Ch 1
000F9h E6D0                             AND       0D0H
000FBh B1                               OR        C
000FCh ED3903                           OUT0      (03H),A        ; ASCI Control Register B Ch 1
000FFh C9                               RET       
00100h                                            
00100h                                            
00100h E60F       MSERINIT:             AND       0FH
00102h 6F                               LD        L,A            ; GERAET 0 .. 15 ?
00103h 2600                             LD        H,0
00105h 110E01                           LD        DE,SER_INIT_TAB
00108h 19                               ADD       HL,DE
00109h 7E                               LD        A,(HL)         ; INIT-PARAMETER
0010Ah E62F                             AND       2FH            ; MASKIEREN
0010Ch 4F                               LD        C,A            ; ZURUECKGEBEN
0010Dh C9                               RET       
0010Eh                                            
0010Eh 0000000000 SER_INIT_TAB:         DEFB      000H,000H,000H,000H,000H,000H,000H,000H
00116h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H,000H
0011Eh                                            
0011Eh                                                           ;-----------------------------------------------
0011Eh                                            
0011Eh            SOUT:                                          ; GEBE STRING AUS
0011Eh                                                           ; ANFANG IN HL, ENDE DURCH 24HEX
0011Eh 7E                               LD        A,(HL)         ; LESE ZEICHEN
0011Fh FE24                             CP        '$'            ; STRING ENDE
00121h C8                               RET       Z              ; RETURN WENN
00122h 4F                               LD        C,A            ; IN C FUER AUSGABE
00123h CD0900                           CALL      CO             ; GEBE ZEICHEN AUF CONSOLE
00126h 23                               INC       HL             ; ZEIGER AUF NAECHSTES ZEICHEN
00127h 18F5                             JR        SOUT           ; WIEDERHOLE
00129h                                            
00129h                                                           ;-----------------------------------------------
00129h                                            
00129h            CROUT:                                         ; GEBE NEUE ZEILE AUS
00129h C5                               PUSH      BC
0012Ah 0E0D                             LD        C,0DH          ; CR
0012Ch CD3101                           CALL      CECHO
0012Fh C1                               POP       BC
00130h C9                               RET       
00131h                                            
00131h                                                           ;-----------------------------------------------
00131h                                            
00131h            CECHO:                                         ; ZEICHEN IN C AUSGEBEN
00131h C5                               PUSH      BC
00132h 41                               LD        B,C
00133h 3E1B                             LD        A,1BH          ; ESC?
00135h B8                               CP        B
00136h 2002                             JR        NZ,ECH05       ; NEIN
00138h 0E24                             LD        C,'$'          ; STATTDESSEN "$" AUSGEBEN
0013Ah CD0900     ECH05:                CALL      CO
0013Dh 3E0D                             LD        A,0DH          ; ENTER?
0013Fh B8                               CP        B
00140h 2005                             JR        NZ,ECH10       ; NEIN
00142h 0E0A                             LD        C,0AH          ; STATTDESSEN LF AUSGEBEN
00144h CD0900                           CALL      CO
00147h C1         ECH10:                POP       BC
00148h 79                               LD        A,C            ; EVTL. ALTERNATIVZEICHEN ZURUECKGEBEN
00149h C9                               RET       
0014Ah                                            
0014Ah                                                           ;-----------------------------------------------
0014Ah                                            
0014Ah            GETCH1:                                        ; LESE EIN ZEICHEN VON KONSOLE, UND WANDLE IN GROSSBUCHSTABEN
0014Ah CD5401                           CALL      GETCH
0014Dh FE61                             CP        'a'
0014Fh D8                               RET       C              ; SCHON GROßBUCHSTABE
00150h D620                             SUB       'a'-'A'        ; IN GROßBUCHSTABEN WANDELN
00152h 4F                               LD        C,A            ; NACH C
00153h C9                               RET       
00154h                                            
00154h                                                           ;-----------------------------------------------
00154h                                            
00154h            GETCH:                          
00154h CD0600                           CALL      CI
00157h E67F                             AND       7FH            ; SONDERZEICHEN > 127 AUSBLENDEN
00159h 4F                               LD        C,A            ; NACH C
0015Ah C9                               RET       
0015Bh                                            
0015Bh                                                           ;-----------------------------------------------
0015Bh                                            
0015Bh            DEZOUT:                                        ; WANDLE AKKU IN DEZIMALZAHL UND GEBE AUS
0015Bh B7                               OR        A              ; AKKU NULL
0015Ch 2806                             JR        Z,DEZOUT2      ; DANN IST SCHON ALLES OK
0015Eh 47                               LD        B,A
0015Fh AF                               XOR       A
00160h            DEZOUT1:                        
00160h 3C                               INC       A
00161h 27                               DAA       
00162h 10FC                             DJNZ      DEZOUT1
00164h            DEZOUT2:                        
00164h CD6D01                           CALL      NMOUT
00167h C9                               RET       
00168h                                            
00168h                                                           ;-----------------------------------------------
00168h                                            
00168h            HLOUT:                                         ; INHALT VON HL (16 BIT) AUSGEBEN
00168h 7C                               LD        A,H
00169h CD6D01                           CALL      NMOUT
0016Ch 7D                               LD        A,L
0016Dh                                            
0016Dh                                                           ;-----------------------------------------------
0016Dh                                            
0016Dh            NMOUT:                                         ; INHALT VON A (8 BIT) AUSGEBEN
0016Dh E5                               PUSH      HL             ; REGISTER RETTEN
0016Eh C5                               PUSH      BC
0016Fh F5                               PUSH      AF
00170h 0F                               RRCA                     ; OBERE 4 BIT 
00171h 0F                               RRCA      
00172h 0F                               RRCA      
00173h 0F                               RRCA      
00174h E60F                             AND       0FH
00176h 4F                               LD        C,A
00177h CD8A01                           CALL      PRVAL          ; WANDELN IN ASCII
0017Ah CD3101                           CALL      CECHO          ; AUSGEBEN
0017Dh F1                               POP       AF
0017Eh E60F                             AND       0FH            ; UNTERE 4 BIT
00180h 4F                               LD        C,A
00181h CD8A01                           CALL      PRVAL          ; WANDELN IN ASCII
00184h CD3101                           CALL      CECHO          ; AUSGEBEN
00187h C1                               POP       BC             ; REGISTER ZURUECK RETTEN
00188h E1                               POP       HL
00189h C9                               RET       
0018Ah                                            
0018Ah                                                           ;-----------------------------------------------
0018Ah                                            
0018Ah            PRVAL:                                         ; WERT IN C ALS ASCII 
0018Ah F5                               PUSH      AF             ; WANDELN
0018Bh 79                               LD        A,C
0018Ch F6F0                             OR        0F0H
0018Eh 27                               DAA       
0018Fh C6A0                             ADD       A,0A0H
00191h CE40                             ADC       A,040H
00193h 4F                               LD        C,A            ; IN C ZURUECKGEBEN
00194h F1                               POP       AF
00195h C9                               RET       
00196h                                            
00196h                                                           ;-----------------------------------------------
00196h                                            
00196h            PRINT_DRIVE:                    
00196h                                                           ; GIBT DEN LAUFWERK BUCHSTABEN UND EIN BLANK AUF DER
00196h                                                           ; KONSOLE AUS
00196h 3A19FF                           LD        A,(UNIT)       ; WELCHES LAUFWERK?
00199h CDA801                           CALL      LOG_PHYS
0019Ch C641                             ADD       A,'A'          ; WANDLE IN ASCII
0019Eh 4F                               LD        C,A
0019Fh CD0900                           CALL      CO
001A2h 0E20                             LD        C,' '
001A4h CD0900                           CALL      CO
001A7h C9                               RET       
001A8h                                            
001A8h                                                           ;-----------------------------------------------
001A8h                                            
001A8h            LOG_PHYS:                                      ; LOGISCHES IN PHYSISCHES LAUFWERK UMRECHNEN
001A8h E603                             AND       03H            ; UNIT MASKIEREN
001AAh 2006                             JR        NZ,LOG_PHYS1   ; KEINE AENDERUNG NOTWENDIG 
001ACh 3A50FF                           LD        A,(TEMP_LOG_DRIVE)
001AFh E603                             AND       03H
001B1h C9                               RET       
001B2h            LOG_PHYS1:                      
001B2h C5                               PUSH      BC
001B3h 4F                               LD        C,A
001B4h 3A50FF                           LD        A,(TEMP_LOG_DRIVE)
001B7h E603                             AND       03H
001B9h B9                               CP        C
001BAh 2002                             JR        NZ,LOG_PHYS2
001BCh 0E00                             LD        C,0            ; KEINE AENDERUNG NOTWENDIG
001BEh            LOG_PHYS2:                      
001BEh 79                               LD        A,C            ; GIB KORRIGIERTES LAUFWERK ZURUECK
001BFh C1                               POP       BC
001C0h C9                               RET       
001C1h                                            
001C1h                                                           ;-----------------------------------------------
001C1h                                            
001C1h            SETCMDT:                        
001C1h                                                           ; NEHME WERTE AUS TEST_TYPE UND TEST_MSEK
001C1h                                                           ; UND TRAGE SIE IN CMDTAB EIN
001C1h                                            
001C1h 3A40FF                           LD        A,(TEST_MSEK)  ; ANZAHL DER SEKTOREN/SPUR
001C4h 321EFF                           LD        (EOT),A
001C7h 3A3FFF                           LD        A,(TEST_TYPE)  ; LADE TEST_TYPE
001CAh 4F                               LD        C,A            ; UND RETTE IN C
001CBh E640                             AND       40H            ; MASKIERE UND
001CDh 3218FF                           LD        (CMDTAB),A     ; SETZE MFM BIT IN CMDTAB
001D0h 79                               LD        A,C
001D1h E603                             AND       03H            ; SETZE SEKTORGROESSE
001D3h 321DFF                           LD        (SECSZ),A
001D6h B7                               OR        A
001D7h 3EFF                             LD        A,0FFH         ; SETZE DTL AUF 80 BEI 128 BYTES/SEKTOR
001D9h 2002                             JR        NZ,CMDS1       ; SONST AUF 0FFH
001DBh 3E80                             LD        A,80H
001DDh 3220FF     CMDS1:                LD        (DTLL),A
001E0h 79                               LD        A,C            ; SETZE GAP-LAENGE IN ABHAENGIGKEIT
001E1h E603                             AND       03H            ; VON DER SEKTORGROESSE
001E3h 4F                               LD        C,A
001E4h 0600                             LD        B,0
001E6h 21EF01                           LD        HL,GAPTAB
001E9h 09                               ADD       HL,BC
001EAh 7E                               LD        A,(HL)
001EBh 321FFF                           LD        (GAPLL),A
001EEh C9                               RET       
001EFh                                            
001EFh            GAPTAB:                                        ; DIESE TABELLE GIBT DIE GAPLAENGE FUER JEDE
001EFh                                                           ; SEKTORGROESE AN
001EFh 07                               DEFB      007H           ; GAPLAENGE FUER  128 BYTES/SEKTOR
001F0h 0E                               DEFB      00EH           ; GAPLAENGE FUER  256 BYTES/SEKTOR
001F1h 1B                               DEFB      01BH           ; GAPLAENGE FUER  512 BYTES/SEKTOR
001F2h 35                               DEFB      035H           ; GAPLAENGE FUER 1024 BYTES/SEKTOR
001F3h                                            
001F3h                                                           ;-----------------------------------------------
001F3h                                            
001F3h 7D         DELAY_HL:             LD        A,L            ; WERT UEBERPRUEFEN
001F4h B4                               OR        H              ; HL=0 ?
001F5h C8                               RET       Z              ; HL=0 -> RÜCKSPRUNG
001F6h                                            
001F6h E5                               PUSH      HL             ; ZAEHLER RETTEN
001F7h 3A4FFF                           LD        A,(SPEED)      ; TAKTKENNUNG
001FAh 6F                               LD        L,A
001FBh 2607                             LD        H,07H
001FDh ED6C                             MLT       HL             ; 7*EINGANGSWERT
001FFh 2B         DELAY_HL1:            DEC       HL
00200h 7D                               LD        A,L
00201h B4                               OR        H              ; HL=0 ?
00202h 20FB                             JR        NZ,DELAY_HL1
00204h E1                               POP       HL             ; ZAEHLER ZURUECK
00205h 2B                               DEC       HL             ; HERUNTERZAEHLEN
00206h 18EB                             JR        DELAY_HL       ; WEITER VERZOEGERN 
00208h                                            
00208h                                                           ;-----------------------------------------------
00208h                                            
00208h 2A19FF     INIT_FDC:             LD        HL,(UNIT)      ; FDC INIT-WERTE SETZEN
0020Bh E5                               PUSH      HL
0020Ch 7D                               LD        A,L
0020Dh E603                             AND       03H            ; LAUFWERK MASKIEREN
0020Fh 6F                               LD        L,A
00210h 2600                             LD        H,0
00212h 29                               ADD       HL,HL          ; * 2
00213h 1100FF                           LD        DE,SPECD_WORD
00216h 19                               ADD       HL,DE          ; LAUFWERKKENNUNG BESTIMMEN
00217h 7E                               LD        A,(HL)
00218h 23                               INC       HL
00219h 66                               LD        H,(HL)
0021Ah 6F                               LD        L,A
0021Bh 3A47FF                           LD        A,(LAST_FDC_SPEED)
0021Eh B7                               OR        A
0021Fh 200C                             JR        NZ,INIT_FDC_1
00221h CB3C                             SRL       H
00223h 24                               INC       H
00224h 37                               SCF       
00225h CB1D                             RR        L
00227h CB9D                             RES       3,L
00229h 3E00                             LD        A,0
0022Bh 8D                               ADC       A,L
0022Ch 6F                               LD        L,A
0022Dh CB84       INIT_FDC_1:           RES       0,H
0022Fh 010303                           LD        BC,W_0303      ; INITIALISIERUNGSWERTE ZUM CONTROLLER 
00232h 2219FF                           LD        (UNIT),HL      ; SENDEN
00235h CD2B04                           CALL      CMFD
00238h E1                               POP       HL
00239h 2219FF                           LD        (UNIT),HL
0023Ch C9                               RET       
0023Dh                                            
0023Dh                                            
0023Dh                                            
0023Dh            INIFDC:                         
0023Dh                                                           ; SOFT RESET DES FDC9268
0023Dh                                                           ; FALLS KEIN FLOPPY CONTROLLER VORHANDEN IST,
0023Dh                                                           ; WIRD DISKFLG AUF 00H GESETZT, SONST AUF FFH
0023Dh                                                           ; Bit:  7  6  5  4  3  2  1  0
0023Dh                                                           ;       ^  ^  ^  ^  ^  ^  ^  ^
0023Dh                                                           ;       |  |  |  |  |  |  |  |
0023Dh                                                           ;       |  |  |  |  |  |  |  `---- FDD 0 busy
0023Dh                                                           ;       |  |  |  |  |  |  `------- FDD 1 busy
0023Dh                                                           ;       |  |  |  |  |  `---------- FDD 2 busy
0023Dh                                                           ;       |  |  |  |  `------------- FDD 3 busy
0023Dh                                                           ;       |  |  |  `---------------- FDC busy
0023Dh                                                           ;       |  |  `------------------- Execution mode
0023Dh                                                           ;       |  `---------------------- Data input/Output 0 => CPU to FDC / 1 => FDC to CPU
0023Dh                                                           ;       `------------------------- Request for Master => Ready
0023Dh                                                           ;
0023Dh 3EFF                             LD        A,0FFH         ; DEFAULT FUER FLOPPY-CONTROLE IST DA
0023Fh 3237FF                           LD        (DISKFLG),A
00242h 210000                           LD        HL,0000H       ; SETZE ZAEHLER
00245h 25         INIFDC1:              DEC       H              ; ERNIEDRIGE ZAEHLER
00246h DBDC                             IN        A,(FDC)
00248h FE80                             CP        80H            ; REQUEST FOR MASTER
0024Ah C8                               RET       Z              ; OK CONTROLLER DA
0024Bh DBDD                             IN        A,(FDD)        ; LESE DATEN
0024Dh 7C                               LD        A,H            ; IST ZAEHLER NULL
0024Eh B5                               OR        L
0024Fh 20F4                             JR        NZ,INIFDC1     ; NEIN, NEUER VERSUCH
00251h 3237FF                           LD        (DISKFLG),A    ; KEIN FLOPPYCONTROLLER DA, DISKFLG=00H
00254h C9                               RET       
00255h                                            
00255h                                            
00255h                                            
00255h                                            
00255h CD4E09     RECAL:                CALL      MOT_ON_TMR     ; SETZE MOTOR_ON PAD
00258h CD0802                           CALL      INIT_FDC       ; INITIALISIERUNGSWERTE AN FDC
0025Bh                                            
0025Bh AF                               XOR       A              ; AKKU = 0
0025Ch 3231FF                           LD        (ALT_TRACK),A  ; VORSICHTSHALBER AUF SPUR 0 SETZEN
0025Fh 3A19FF                           LD        A,(UNIT)       ; ALTE UNIT RETTEN
00262h 3230FF                           LD        (ALT_UNIT),A
00265h                                            
00265h 0604                             LD        B,4            ; VIER VERSUCHE
00267h C5         RECAL2:               PUSH      BC
00268h CD7502                           CALL      RECAL1
0026Bh CD1C06                           CALL      SENSD
0026Eh E610                             AND       10H            ; TRACK NULL ERREICHT?
00270h C1                               POP       BC
00271h C0                               RET       NZ             ; RUECKSPRUNG WENN EREICHT
00272h 10F3                             DJNZ      RECAL2
00274h C9                               RET       
00275h            RECAL1:                         
00275h 010702                           LD        BC,0207H       ; 
00278h CDB703                           CALL      MOTO
0027Bh C3FB02                           JP        SENS
0027Eh                                            
0027Eh                                            
0027Eh                                            
0027Eh            READY_MASK:                     
0027Eh                                                           ; HOLT AUS READY_BYTE DIE WERTE FUER LW
0027Eh                                                           ; SCHON AUF READY GETESTET UND LW KANN READY LIEFERN
0027Eh                                                           ; ODER NICHT
0027Eh CD8602                           CALL      UNIT_MASK      ; HOLE MASKE FUER EINGELOGGTES LW
00281h 3A08FF                           LD        A,(READY_BYTE) ; UND MASKIERE READY_BYTE
00284h A0                               AND       B
00285h C9                               RET       
00286h                                            
00286h                                            
00286h                                            
00286h            UNIT_MASK:                      
00286h                                                           ; ERZEUGE AUS EINGELOGGTEM LW MASKE FUER OBER UND UNTERE 4 BIT
00286h 3A19FF                           LD        A,(UNIT)
00289h            UNIT_MSK_A:                     
00289h                                                           ; UNIT IN A VORGEWAEHLT
00289h E603                             AND       00000011B      ; MASKIEREN LAUFWERK 0..3
0028Bh 3C                               INC       A              ; +1 (1..4)
0028Ch 47                               LD        B,A            ; SCHLEIFENZAEHLER SETZEN
0028Dh 3E88                             LD        A,88H          ; MASKE ENTSPRECHEND
0028Fh 07         UNIMASK:              RLCA                     ; BITPOSITION ROTIEREN
00290h 10FD                             DJNZ      UNIMASK        ; WIEDERHOLE
00292h 47                               LD        B,A            ; MASKE NACH B
00293h C9                               RET       
00294h                                            
00294h                                            
00294h                                            
00294h CD4E09     SEEK:                 CALL      MOT_ON_TMR     ; MOTOR ON SIGNAL
00297h 2A19FF                           LD        HL,(UNIT)      ; LADE NEUES LAUFWERK UND NEUER TRACK
0029Ah ED4B30FF                         LD        BC,(ALT_UNIT)  ; LADE ALTES LAUFWERK UND ALTER TRACK
0029Eh 79                               LD        A,C            ; VERGLEICHE
0029Fh BD                               CP        L
002A0h 2805                             JR        Z,SEEK4
002A2h CD0802                           CALL      INIT_FDC
002A5h 1803                             JR        SEEK6
002A7h                                            
002A7h 78         SEEK4:                LD        A,B
002A8h BC                               CP        H
002A9h C8                               RET       Z              ; RETURN, WENN KEIN SEEK NOTWENDIG
002AAh                                            
002AAh 2A19FF     SEEK6:                LD        HL,(UNIT)
002ADh 2230FF                           LD        (ALT_UNIT),HL  ; ALTES:=NEUES
002B0h AF                               XOR       A              ; I/O-PAGE 0
002B1h DBD9                             IN        A,(STAT)
002B3h E680                             AND       MASK_MOT       ; MOTOR_ON?
002B5h 2815                             JR        Z,SEEK7
002B7h 3A0AFF                           LD        A,(STEP_WAIT)  ; WARTEZEIT
002BAh B7                               OR        A
002BBh 280F                             JR        Z,SEEK7
002BDh F5                               PUSH      AF
002BEh DBDC                             IN        A,(FDC)
002C0h CD4E09                           CALL      MOT_ON_TMR     ; MOTOR ON SIGNAL SETZEN
002C3h F1                               POP       AF
002C4h 6F                               LD        L,A
002C5h 2664                             LD        H,64H
002C7h ED6C                             MLT       HL
002C9h CDF301                           CALL      DELAY_HL
002CCh                                            
002CCh 3A34FF     SEEK7:                LD        A,(RWCMD)
002CFh FE06                             CP        06H
002D1h 280C                             JR        Z,SEEK5
002D3h 3A09FF                           LD        A,(TE_TIME)
002D6h B7                               OR        A
002D7h 2806                             JR        Z,SEEK5
002D9h 6F                               LD        L,A
002DAh 2600                             LD        H,0
002DCh CDF301                           CALL      DELAY_HL
002DFh                                            
002DFh            SEEK5:                          
002DFh CD1103                           CALL      SEEK3
002E2h 2808                             JR        Z,SEEK1
002E4h 3A1AFF                           LD        A,(TRACK)
002E7h F5                               PUSH      AF
002E8h 87                               ADD       A,A            ; DOUBLE STEP
002E9h 321AFF                           LD        (TRACK),A
002ECh            SEEK1:                          
002ECh 010F03                           LD        BC,030FH       ; SEEK TRACK
002EFh CDB703                           CALL      MOTO
002F2h CD1103                           CALL      SEEK3
002F5h 2804                             JR        Z,SEEK2
002F7h F1                               POP       AF
002F8h 321AFF                           LD        (TRACK),A      ; NEUEN TRACK SPEICHERN
002FBh            SEEK2:                          
002FBh                                                           ; SEEK FINISHD ?
002FBh 010801     SENS:                 LD        BC,0108H       ; SENS DRIVE
002FEh CD2B04                           CALL      CMFD
00301h CD4304                           CALL      NEXT
00304h F5                               PUSH      AF             ; SAVE RESULT
00305h FE80                             CP        080H           ; INVALID COMMAND ?
00307h C44304                           CALL      NZ,NEXT        ; NO => NEXT RESULT
0030Ah F1                               POP       AF             ; FIRST RESULT
0030Bh E620                             AND       020H           ; ISOLIERE BIT 5
0030Dh CAFB02                           JP        Z,SENS
00310h C9                               RET       
00311h                                            
00311h            SEEK3:                          
00311h CD8602                           CALL      UNIT_MASK
00314h 3A0BFF                           LD        A,(SEEKNR)
00317h A0                               AND       B
00318h E60F                             AND       0FH
0031Ah C9                               RET       
0031Bh                                            
0031Bh            RESULT:                                        ; FETCH RESULT OF READ WRITE OPERATION
0031Bh                                                           ; AND CHECK THEM FOR R/W ERRORS
0031Bh                                                           ; Z+A=00 IF NO ERRORS
0031Bh                                                           ; NZ,A=? IF ERRORS
0031Bh 0606                             LD        B,006H         ; 7RESULTS
0031Dh CD4304                           CALL      NEXT
00320h 2121FF                           LD        HL,REST        ; RESULT TABLE
00323h 77                               LD        (HL),A         ; STORE RESULT
00324h E6C0                             AND       0C0H           ; ERROR ?
00326h 4F                               LD        C,A            ; SAVE
00327h CD4304     RESLOP:               CALL      NEXT
0032Ah 23                               INC       HL
0032Bh 77                               LD        (HL),A         ; STORE RESULT
0032Ch 10F9                             DJNZ      RESLOP
0032Eh 79                               LD        A,C            ; RESTORE RESULT 0
0032Fh B7                               OR        A              ; IN AKKU
00330h                                            
00330h C9                               RET       
00331h                                            
00331h                                            
00331h            SPEED_CONST:                    
00331h                                                           ; WARTE BIS DREHZAHL KONSTANT, DANN RETURN MIT ZERO-FLAG=0
00331h                                                           ; WENN DREHZAHL NICHT KONSTANT WIRD DANN ZERO-FLAG=1
00331h                                            
00331h            TOLERANZ:             EQU       64             ; TOLERANZ FUER DREHZAHL KONSTANT
00331h                                            
00331h CD4E09                           CALL      MOT_ON_TMR
00334h 010402                           LD        BC,0204H       ; SELEKTIERE LAUFWERK
00337h CD2B04                           CALL      CMFD
0033Ah 110000                           LD        DE,0           ; BESETZE VOR
0033Dh 060A                             LD        B,10           ; ZEHN VERSUCHE
0033Fh EB         SPEEDC1:              EX        DE,HL          ; ADDIERE ZU DE TOLERANZ
00340h 114000                           LD        DE,TOLERANZ
00343h 19                               ADD       HL,DE
00344h EB                               EX        DE,HL
00345h CD6B03                           CALL      CDRIVE_SPEED   ; MESSE DREHZAHL
00348h 281C                             JR        Z,SPEEDC3      ; ZURUECK WENN LAUFWERK STEHT
0034Ah EB                               EX        DE,HL          ; BILDE DIVERENZ ZU VORHER
0034Bh ED52                             SBC       HL,DE
0034Dh 7C                               LD        A,H
0034Eh FE00                             CP        0              ; IM TOLERANZBEREICH?
00350h 2012                             JR        NZ,SPEEDC2     ; SPRUNG WENN NEIN
00352h 7D                               LD        A,L
00353h FE80                             CP        TOLERANZ*2
00355h 300D                             JR        NC,SPEEDC2     ; SPRUNG WENN DREHZAHL NOCH NICHT KONSTANT
00357h CD6B03                           CALL      CDRIVE_SPEED   ; WARTE NOCH ZWEI UMDREHUNGEN
0035Ah CD6B03                           CALL      CDRIVE_SPEED
0035Dh                                            
0035Dh CD4304                           CALL      NEXT           ; DESELEKTIERE LAUFWERK
00360h 3EFF                             LD        A,0FFH         ; ZURUECK MIT ZERO = 0
00362h B7                               OR        A
00363h C9                               RET       
00364h                                            
00364h 10D9       SPEEDC2:              DJNZ      SPEEDC1        ; MAXIMAL 10 VERSUCHE
00366h CD4304     SPEEDC3:              CALL      NEXT           ; DESELEKTIERE LAUFWERK
00369h AF                               XOR       A              ; SONST ZURUECK MIT ZERO=1
0036Ah C9                               RET       
0036Bh                                            
0036Bh                                            
0036Bh                                            
0036Bh            CDRIVE_SPEED:                   
0036Bh                                                           ; MESSE GESCHWINDIGKEIT DES LAUFWERKS
0036Bh                                                           ; WENN SICH DISKETTE NICHT DREHT IST DAS ZERO-FLAG GESETZT
0036Bh                                                           ; SONST ZERO-FLAG=0 UND GESCHWINDIGKEIT IN HL
0036Bh                                            
0036Bh AF                               XOR       A              ; I/O-PAGE 0
0036Ch DBD9                             IN        A,(STAT)       ; LESE INDEX-SIGNAL
0036Eh E620                             AND       MASK_INDEX     ; UND MASKIERE
00370h 280E                             JR        Z,DSPEED1      ; WENN INDEX DA, ERSTE SCHLEIFE
00372h                                                           ; UEBERSPRINGEN
00372h                                            
00372h 210000                           LD        HL,0           ; WARTE BIS INDEX KOMMT
00375h 23         DSPEED2:              INC       HL             ; ERHOEHE HL
00376h 7C                               LD        A,H            ; OUT OF TIME?
00377h B5                               OR        L
00378h C8                               RET       Z              ; DANN RETURN
00379h AF                               XOR       A              ; I/O-PAGE 0
0037Ah DBD9                             IN        A,(STAT)       ; LESE INDEX-SIGNAL
0037Ch E620                             AND       MASK_INDEX     ; UND MASKIERE
0037Eh 20F5                             JR        NZ,DSPEED2     ; WARTE BIS LOW
00380h                                            
00380h 210000     DSPEED1:              LD        HL,0           ; WARTE BIS INDEX WEGGEHT
00383h 23         DSPEED3:              INC       HL             ; ERHOEHE HL
00384h 7C                               LD        A,H            ; OUT OF TIME?
00385h B5                               OR        L
00386h C8                               RET       Z              ; DANN RETURN
00387h AF                               XOR       A              ; I/O-PAGE 0
00388h DBD9                             IN        A,(STAT)       ; LESE INDEX-SIGNAL
0038Ah E620                             AND       MASK_INDEX     ; UND MASKIERE
0038Ch 28F5                             JR        Z,DSPEED3      ; WARTE BIS HIGH
0038Eh                                            
0038Eh 210000                           LD        HL,0           ; EIGENTLICHER ZAEHLER
00391h 23         DSPEED4:              INC       HL             ; ERHOEHE HL
00392h 7C                               LD        A,H            ; OUT OF TIME?
00393h B5                               OR        L
00394h C8                               RET       Z
00395h AF                               XOR       A              ; I/O-PAGE 0
00396h DBD9                             IN        A,(STAT)       ; LESE INDEX UND WARTE
00398h E620                             AND       MASK_INDEX     ; BIS WIEDER LOW
0039Ah 20F5                             JR        NZ,DSPEED4
0039Ch 3EFF                             LD        A,0FFH         ; RESET ZERO-FLAG
0039Eh B7                               OR        A
0039Fh                                            
0039Fh C9                               RET                      ; ZURUECK MIT DRIVE-SPEED
003A0h                                            
003A0h AF         NOREADY_MOTO:         XOR       A              ; I/O-PAGE 0
003A1h DBD9                             IN        A,(STAT)       ; LAEUFT MOTOR SCHON ?
003A3h E680                             AND       MASK_MOT
003A5h 280D                             JR        Z,NREDY1       ; SPRUNG WENN MOTOR SCHON LAEUFT
003A7h CD3103     NREDY2:               CALL      SPEED_CONST    ; WARTE BIS LW AUF TOUREN
003AAh 2008                             JR        NZ,NREDY1      ; SPRUNG WENN DREHZAHL KONSTANT
003ACh CDE803                           CALL      NRDYERR        ; GEBE ERROR-TEXT AUS
003AFh 20F6                             JR        NZ,NREDY2      ; WIEDERHOLUNG
003B1h C32AFF                           JP        UMLEIT_GETCM
003B4h C32A04     NREDY1:               JP        MOTO1
003B7h                                            
003B7h                                            
003B7h                                            
003B7h            MOTO:                                          ; WAITS UNTIL DISK READY AND THEN
003B7h                                                           ; TRANSMITS COMMAND TO FDC
003B7h                                            
003B7h C5                               PUSH      BC             ; SAVE COMMAND
003B8h CD7E02                           CALL      READY_MASK     ; LW SCHON GETESTET?
003BBh E60F                             AND       0FH            ; STEHT IN DEN UNTEREN 4 BITS
003BDh C2A003                           JP        NZ,NOREADY_MOTO; WENN NICHT SPRUNG
003C0h                                                           ; SONST WEITER WIE GEHABT
003C0h 214FFF     MOTO2:                LD        HL,SPEED       ; SET TIMER
003C3h 6E                               LD        L,(HL)
003C4h 2606                             LD        H,06H
003C6h ED6C                             MLT       HL
003C8h 26F0                             LD        H,0F0H
003CAh ED6C                             MLT       HL
003CCh                                            
003CCh E5         MOTO3:                PUSH      HL             ; SAVE TIMER
003CDh 010402                           LD        BC,0204H       ; SENSE DRIVE
003D0h CD2B04                           CALL      CMFD
003D3h CD4304                           CALL      NEXT           ; FETCH RESULT
003D6h E1                               POP       HL             ; GET TIMER VALUE
003D7h E620                             AND       20H            ; DISK READY ?
003D9h 204F                             JR        NZ,MOTO1       ; OK, READY
003DBh 2B                               DEC       HL             ; TIMER=TIMER-1
003DCh 7C                               LD        A,H            ; = ZERO?
003DDh B5                               OR        L
003DEh 20EC                             JR        NZ,MOTO3       ; NO, TRY AGAIN
003E0h CDE803                           CALL      NRDYERR        ; DRIVE NOT READY TEXT
003E3h 20DB                             JR        NZ,MOTO2       ; NO, AGAIN
003E5h C32AFF                           JP        UMLEIT_GETCM   ; ENTWEDER MONITOR ODER WARM-BOOT
003E8h                                            
003E8h                                            
003E8h                                            
003E8h            NRDYERR:                        
003E8h                                                           ; GEBE FEHLERMELDUNG FUER DRIVE NOT READY AUS
003E8h                                                           ; UND VERGLEICHE EINGEGEBENES ZEICHEN MIT N
003E8h                                            
003E8h 210504                           LD        HL,NREADY1     ; PRINT ERROR TEXT
003EBh CD1E01                           CALL      SOUT
003EEh CD9601                           CALL      PRINT_DRIVE    ; GEBE LW BUCHSTABE AUS
003F1h 211004                           LD        HL,NREADY2     ; GEBE REST TEXT AUS
003F4h CD1E01                           CALL      SOUT
003F7h CD4A01                           CALL      GETCH1         ; AGAIN?
003FAh 4F                               LD        C,A            ; ECHO
003FBh CD3101                           CALL      CECHO
003FEh CD2901                           CALL      CROUT          ; LINE FEED
00401h 79                               LD        A,C
00402h FE4E                             CP        'N'
00404h C9                               RET       
00405h                                            
00405h 0D0A072044 NREADY1:              DEFM      0DH,0AH,BELL," Drive $"
00410h 6E6F742072 NREADY2:              DEFM      "not ready, retry (Y/N) ? $"
0042Ah            W_0429:               EQU       $-1
0042Ah                                            
0042Ah C1         MOTO1:                POP       BC
0042Bh                                            
0042Bh                                            
0042Bh            CMFD:                                          ; TRANSMIT COMMAND TO FDC
0042Bh                                                           ; IN B STEHT ANZAHL DER BYTES
0042Bh                                                           ; IN C STEHT BEFEHL
0042Bh                                                           ;                      CALL      PRT_BUF        ; FUER TESTZWECKE
0042Bh                                                           ;                      NOP
0042Bh                                                           ;                      NOP
0042Bh                                                           ;                      NOP
0042Bh 2118FF                           LD        HL,CMDTAB
0042Eh 3E1E       CMFD1:                LD        A,30           ; WAIT FOR MASTER
00430h 3D         CMFD2:                DEC       A              ; DELAY
00431h 20FD                             JR        NZ,CMFD2
00433h DBDC                             IN        A,(FDC)        ; REQUEST FOR MASTER
00435h E6C0                             AND       0C0H
00437h FE80                             CP        080H
00439h 20F3                             JR        NZ,CMFD1       ; NO => WAIT
0043Bh 79                               LD        A,C            ; YES =>
0043Ch D3DD                             OUT       (FDD),A        ; SEND BYTE
0043Eh 23                               INC       HL             ; POINT TO NEXT CMD BYTE
0043Fh 4E                               LD        C,(HL)
00440h 10EC                             DJNZ      CMFD1          ; SEND NEXT BYTE
00442h C9                               RET                      ; ALL BYTES TRANSFERRED
00443h                                            
00443h                                                           ; CMFD_TXT1:            DEFM      0DH,0AH,"Bef-Code: $"
00443h                                                           ; CMFD_TXT2:            DEFM      " Buffer: $"
00443h                                            
00443h                                            
00443h            NEXT:                                          ; READ NEXT RESULT FROM FDC
00443h                                            
00443h 3E06                             LD        A,6            ; WAIT FOR MASTER READY
00445h 3D         NEXT1:                DEC       A              ; DELAY
00446h 20FD                             JR        NZ,NEXT1
00448h DBDC                             IN        A,(FDC)        ; REQUEST FOR MASTER
0044Ah E6C0                             AND       0C0H           ; TRANSFER TO MASTER
0044Ch FEC0                             CP        0C0H
0044Eh C24304                           JP        NZ,NEXT        ; NO =>WAIT
00451h DBDD                             IN        A,(FDD)        ; YES => FETCH RESULT
00453h                                                           ;                      NOP
00453h                                                           ;                      NOP
00453h                                                           ;                      NOP
00453h                                                           ;                      CALL      PRT_RES
00453h                                            
00453h C9                               RET       
00454h                                            
00454h                                            
00454h            WRITE:                          
00454h 3E05                             LD        A,05H          ; WRITE COMMANDO
00456h 21D107                           LD        HL,TXTWR       ; WRITE ERROR TEXT
00459h C36404                           JP        RWCOM
0045Ch                                            
0045Ch                                            
0045Ch                                            
0045Ch            READ:                           
0045Ch 3E06                             LD        A,06H          ; READ COMMANDO
0045Eh 21BE07                           LD        HL,TXTRD       ; READ ERROR TEXT
00461h C36404                           JP        RWCOM
00464h                                            
00464h                                                           ;-----------------------------------------------
00464h                                            
00464h            RWCOM:                          
00464h                                                           ; VOR EINTRITT IN DIESE ROUTINE MUESSEN CMDTAB
00464h                                                           ; SECTCNT UND DMAADR GESETZT SEIN.
00464h                                                           ; IN A MUSS READ ODER WRITE COMMANDO STEHEN,
00464h                                                           ; IN HL MUSS DIE ADRESSE DER ERROR MSSG. STEHEN.
00464h                                                           ; ES WERDEN DIE ANGEGEBENE ANZAHL SECTCNT
00464h                                                           ; VON/NACH DMAADR UEBERTRAGEN.
00464h                                                           ; HD BIT WIRD ENTSPRECHEND DEM H BIT GESETZT.
00464h                                                           ; DAS IN CMDTAB STEHENDE MFM BIT WIRD UEBERNOMMEN.
00464h                                                           ; ES WIRD DIE PRECOMPENSATION ZEIT AUS WRITE_PRECOM
00464h                                                           ; UEBERNOMMEN.
00464h                                            
00464h CD4E09                           CALL      MOT_ON_TMR     ; MOTOR ON
00467h                                            
00467h                                            
00467h 3234FF                           LD        (RWCMD),A      ; LEGE COMMANDO AB
0046Ah 2235FF                           LD        (ERMSG),HL     ; LEGE ADR FUER ERR.TEXT AB
0046Dh 3A46FF                           LD        A,(SECTCNT)    ; WIEVIELE SECTOREN SOLLEN UEBERTRAGEN WERDEN?
00470h B7                               OR        A              ;
00471h C8                               RET       Z              ; RETURN; WENN NULL GEWESEN
00472h                                            
00472h CD9402                           CALL      SEEK           ; TRACK POSITIONIEREN
00475h CDF504                           CALL      SETHEAD        ; KOPF WAEHLEN
00478h CD2606                           CALL      SET_PRECOM     ; PRECOMP. WAEHLEN
0047Bh                                            
0047Bh 3A2EFF                           LD        A,(RWRETRY)    ; ANZAHL SCHREIB-/LESEVERSUCHE FESTLEGEN
0047Eh 47                               LD        B,A
0047Fh                                            
0047Fh C5         RWCOM1:               PUSH      BC
00480h 2A44FF                           LD        HL,(DMAADR)    ; DMA SPEICHER ADRESSE SETZEN
00483h ED2928                           OUT0      (28H),L        ; DMA Memory Address Register Ch 1L
00486h ED2129                           OUT0      (29H),H        ; DMA Memory Address Register Ch 1H
00489h 3A43FF                           LD        A,(DMABANK)
0048Ch ED392A                           OUT0      (2AH),A        ; DMA Memory Address Register Ch 1B
0048Fh                                            
0048Fh 3EDA                             LD        A,0DAH         ; DMA-KANAL SETZEN
00491h ED392B                           OUT0      (2BH),A        ; DMA I/O Address Register Ch 1L
00494h AF                               XOR       A
00495h ED392C                           OUT0      (2CH),A        ; DMA I/O Address Register Ch 1H
00498h                                            
00498h 3A1DFF                           LD        A,(SECSZ)      ; BERECHNUNG DES ZU UEBERTRAGENDEN
0049Bh 47                               LD        B,A            ; BYTES ANHAND SECTORGRÖßE UND
0049Ch 04                               INC       B              ; SECTORANZAHL
0049Dh AF                               XOR       A
0049Eh 37                               SCF       
0049Fh 17         RWCOM2:               RLA       
004A0h 10FD                             DJNZ      RWCOM2
004A2h 6F                               LD        L,A
004A3h 3A46FF                           LD        A,(SECTCNT)
004A6h 67                               LD        H,A
004A7h ED6C                             MLT       HL
004A9h                                            
004A9h 0607                             LD        B,07H          ; ZAEHLER
004ABh 29         RWCOM3:               ADD       HL,HL          ; HL=HL*2
004ACh 10FD                             DJNZ      RWCOM3         ; WEITIER BISD ZAEHLER = 0
004AEh                                            
004AEh ED292E                           OUT0      (2EH),L        ; DMA Byte Count Register Ch 1L
004B1h ED212F                           OUT0      (2FH),H        ; DMA Byte Count Register Ch 1H
004B4h ED3832                           IN0       A,(32H)        ; DMA/WAIT Control Register
004B7h E6F0                             AND       0F0H           ; UNTER 4 BIT AUSBLENDEN
004B9h 4F                               LD        C,A
004BAh 3A34FF                           LD        A,(RWCMD)
004BDh FE06                             CP        06H            ; READ?
004BFh 3E0A                             LD        A,0AH          ; 
004C1h 2802                             JR        Z,RWCOM4
004C3h 3E08                             LD        A,08H          ; 
004C5h B1         RWCOM4:               OR        C              ; UNTERE 4 BIT SETZEN
004C6h ED3932                           OUT0      (32H),A        ; DMA/WAIT Control Register
004C9h                                            
004C9h 3E90                             LD        A,90H          ; DMA FREIGEBEN
004CBh ED3930                           OUT0      (30H),A        ; DMA Status Register
004CEh 0609                             LD        B,09H          ; 9 BYTES ZU UEBERTRAGEN
004D0h 3A34FF                           LD        A,(RWCMD)      ; LADE COMMANDO
004D3h 4F                               LD        C,A            ; NACH C
004D4h 3A18FF                           LD        A,(CMDTAB)     ; TRAGE MFM-BIT EIN
004D7h E640                             AND       40H            ; ISOLIERE MFM-BIT
004D9h B1                               OR        C              ; COMMAND DAZU
004DAh 4F                               LD        C,A            ; ZURUECK INC
004DBh CDB703                           CALL      MOTO           ; SEND COMMAND TO FDC
004DEh CD1B03                           CALL      RESULT         ; LESE ERGEBNIS VON FDC
004E1h 3A22FF                           LD        A,(REST+1)
004E4h 4F                               LD        C,A
004E5h 3A23FF                           LD        A,(REST+2)
004E8h B1                               OR        C              ; ERGEBNISBITS VERODERN
004E9h                                            
004E9h C1                               POP       BC
004EAh 2802                             JR        Z,RWCOM5       ; VERSUCH OK -> WEITER
004ECh 1091                             DJNZ      RWCOM1         ; WIEDERHOLE BIS ANZAHL VERSUCHE ERREICHT
004EEh                                            
004EEh B7         RWCOM5:               OR        A              ; FDC STATUS PRUEFEN
004EFh F5                               PUSH      AF
004F0h C44E06                           CALL      NZ,DISKERR     ; FEHLERMELDUNG AUSGEBEN
004F3h F1                               POP       AF
004F4h C9                               RET       
004F5h                                            
004F5h                                            
004F5h                                            
004F5h            SETHEAD:                        
004F5h                                                           ; SETZE HEAD BYTE AUF 00H ODER 01H
004F5h                                                           ; SETZE HEAD BIT IN UNIT BYTE
004F5h                                            
004F5h                                                           ; FOLGENDE KOMBINATIONEN SIND MOEGLICH:
004F5h                                                           ; X BEDEUTET UNBESTIMMT, - BEDEUTET KEINE AENDERUNG ZU VORHER
004F5h                                            
004F5h                                                           ; HEAD VORHER=>     UNIT NACHHER,       HEAD NACHHER
004F5h                                                           ; XXXXXX00          000000--            00000000
004F5h                                                           ; XXXXXX01          000001--            00000001
004F5h                                                           ; XXXXXX10          000001--            00000000
004F5h                                                           ; XXXXXX11          000000--            00000001
004F5h                                            
004F5h 3A1BFF                           LD        A,(HEAD)       ; LADE HEAD BIT
004F8h 4F                               LD        C,A            ; RETTE IN C
004F9h E601                             AND       1
004FBh 321BFF                           LD        (HEAD),A
004FEh 79                               LD        A,C
004FFh 07                               RLCA                     ; EIN BIT NACH LINKS
00500h 4F                               LD        C,A
00501h 07                               RLCA                     ; ZWEI BIT NACH LINKS
00502h A9                               XOR       C              ; ERZEUGE UNIT BIT
00503h E604                             AND       04H            ; BLENDE ANDERE BITS AUS
00505h 4F                               LD        C,A            ; SAVE
00506h 3A19FF                           LD        A,(UNIT)       ; LADE DRIVE NR.
00509h E603                             AND       03H            ; BLENDE OBERE BITS AUS
0050Bh B1                               OR        C              ; HEAD DAZU
0050Ch 3219FF                           LD        (UNIT),A       ; ZURUECK
0050Fh C9                               RET       
00510h                                            
00510h                                            
00510h                                            
00510h                                            
00510h            TEST:                           
00510h                                                           ;DIESE ROUTINE ERMITTELT DIE DATEN DER PLATTE, DIE SICH IM VON
00510h                                                           ;UNIT SPEZIFIZIERTEN LAUFWERK BEFINDET
00510h                                                           ;GETESTET WIRD DIE SPUR, DIE IN TEST$TRACK STEHT
00510h                                                           ;ALS ERGEBNIS WERDEN TEST$TYPE UND TEST$MSEK GESETZT
00510h                                                           ;KANN DER PLATTEN-TYP NICHT ERMITTELT WERDEN IST DER AKKU AUF FFH
00510h                                                           ;WENN PLATTEN-TYP ERKANNT WURDE IST AKKU=00H
00510h                                                           ;
00510h CD5502                           CALL      RECAL          ; REKALIBRIERE
00513h 3A19FF                           LD        A,(UNIT)       ; SEITE 0 WAEHLEN
00516h E603                             AND       03H            ; MASKIEREN
00518h 3219FF                           LD        (UNIT),A
0051Bh 3A42FF                           LD        A,(TEST_TRACK) ; POSITIONIERE AUF DIE SPUR
0051Eh 321AFF                           LD        (TRACK),A      ; DEREN FORMAT ERKANNT WERDEN SOLL
00521h CD9402                           CALL      SEEK
00524h                                            
00524h 3E60                             LD        A,B_60         ; TESTE OB DD,MINI
00526h 323FFF                           LD        (TEST_TYPE),A
00529h CDEE05                           CALL      MINI_SET
0052Ch CDC905                           CALL      READ_ID        ; VERSUCHE ID-FELD ZU LESEN
0052Fh 282A                             JR        Z,TEST1        ; SPRUNG WENN DD,MINI
00531h                                            
00531h 3E40                             LD        A,B_40         ; TESTE OB DD,MAXI
00533h 323FFF                           LD        (TEST_TYPE),A
00536h CDDB05                           CALL      MAXI_SET
00539h CDC905                           CALL      READ_ID        ; VERSUCHE ID-FELD ZU LESEN
0053Ch 281D                             JR        Z,TEST1        ; SPRUNG WENN DD,MAXI
0053Eh                                            
0053Eh 3E00                             LD        A,0            ; TESTE OB SD,MAXI
00540h 323FFF                           LD        (TEST_TYPE),A
00543h CDDB05                           CALL      MAXI_SET
00546h CDC905                           CALL      READ_ID        ; VERSUCHE ID-FELD ZU LESEN
00549h 2810                             JR        Z,TEST1        ; SPRUNG WENN SD,MAXI
0054Bh                                            
0054Bh 3E20                             LD        A,B_20         ; TESTE OB SD,MINI
0054Dh 323FFF                           LD        (TEST_TYPE),A
00550h CDEE05                           CALL      MINI_SET
00553h CDC905                           CALL      READ_ID        ; VERSUCHE ID-FELD ZU LESEN
00556h 2803                             JR        Z,TEST1
00558h                                            
00558h 3EFF       TEST2:                LD        A,0FFH         ; BLEIBT NICHTS MEHR UEBRIG
0055Ah C9                               RET                      ; RUECKSPRUNG MIT FEHLER
0055Bh                                            
0055Bh                                            
0055Bh            TEST1:                                         ; OK, MINI ODER MAXI, FM ODER MFM
0055Bh                                                           ; ERKANNT
0055Bh                                                           ; ZAEHLE JETZT DIE ANZAHL DER SEKTOREN
0055Bh                                                           ; AUF DER SPUR
0055Bh CD0802                           CALL      INIT_FDC       ; LESE ERSTES ID-FELD
0055Eh 3A26FF                           LD        A,(REST+5)     ; LADE SEKTORNUMMER
00561h 57                               LD        D,A            ; NACH D UM EINE UMDREHUNG ABZUWARTEN
00562h 4F                               LD        C,A            ; NACH C UM GROESSTEN SEKTOR ZU ERMITTELN
00563h 5F                               LD        E,A
00564h 0634                             LD        B,52           ; MAXIMAL 52 LESEVERSUCHE, DANN FEHLER
00566h C5         TEST3:                PUSH      BC             ; RETTE REGISTER
00567h D5                               PUSH      DE
00568h CDC905                           CALL      READ_ID        ; LESE NAECHSTES ID-FELD
0056Bh D1                               POP       DE             ; RESTORE REGISTER
0056Ch C1                               POP       BC
0056Dh 20E9                             JR        NZ,TEST2       ; SPRUNG, WENN FEHLER
0056Fh 3A26FF                           LD        A,(REST+5)     ; LADE SEKTORNUMMER
00572h BA                               CP        D              ; EINE UMDREHUNG?
00573h 280C                             JR        Z,TEST4        ; DANN ENDE (MAX-SEKTOR in C)
00575h B9                               CP        C              ; NEUE SEKTORNUMMER GROESSER ALS ALLE ANDEREN?
00576h 3801                             JR        C,TEST5        ; SPRUNG WENN NEIN
00578h 4F                               LD        C,A            ; SONST NEUER SEKTOR DER GROESSTE
00579h BB         TEST5:                CP        E
0057Ah 3001                             JR        NC,TEST9
0057Ch 5F                               LD        E,A
0057Dh 10E7       TEST9:                DJNZ      TEST3          ; LESE NEUEN SEKTOR EIN
0057Fh 18D7                             JR        TEST2          ; WENN ZAEHLER ABLAEUFT, DANN FEHLER
00581h                                            
00581h 79         TEST4:                LD        A,C            ; LEGE GROESSTE SEKTORNUMMER AB
00582h 3240FF                           LD        (TEST_MSEK),A  ;
00585h 7B                               LD        A,E            ; LEGE KLEINSTE SEKTORNUMMER AB
00586h 3241FF                           LD        (TEST_LSEK),A  ;
00589h 3A27FF                           LD        A,(REST+6)     ; PACKE SEKTORGROESSE ZU TEST_TYPE
0058Ch E607                             AND       07H            ;
0058Eh 4F                               LD        C,A            ;
0058Fh 3A3FFF                           LD        A,(TEST_TYPE)  ;
00592h B1                               OR        C              ;
00593h 4F                               LD        C,A            ;
00594h 3A25FF                           LD        A,(REST+4)     ;
00597h 07                               RLCA                     ;
00598h 07                               RLCA                     ;
00599h 07                               RLCA                     ;
0059Ah 07                               RLCA                     ;
0059Bh E610                             AND       010H           ;
0059Dh B1                               OR        C              ;
0059Eh 323FFF                           LD        (TEST_TYPE),A  ;
005A1h 3A19FF                           LD        A,(UNIT)       ; SOLL TWO-SIDED-BIT IMMER AUF HIGH SEIN?
005A4h 2F                               CPL                      ; (NAEMLICH DANN, WENN ENTSPRECHENDES
005A5h E603                             AND       00000011B      ; BIT IM OBEREN NIPPLE VON SEEKNR AUF HIGH)
005A7h 47                               LD        B,A
005A8h B7                               OR        A
005A9h 3A0BFF                           LD        A,(SEEKNR)
005ACh 2803                             JR        Z,TEST6        ; KEIN SCHIEBEN NOTWENDIG
005AEh 07         TEST7:                RLCA      
005AFh 10FD                             DJNZ      TEST7
005B1h E680       TEST6:                AND       080H           ; WENN OBERSTES BIT 1, DANN TS-BIT AUCH EINS
005B3h 2009                             JR        NZ,TEST8       ; SONST TS-BIT WIE TS-LEITUNG
005B5h CD1C06                           CALL      SENSD          ; LESE TWO-SIDED SIGNAL EIN
005B8h 07                               RLCA                     ; VERSCHIEBE IN ERSTES BIT
005B9h 07                               RLCA      
005BAh 07                               RLCA      
005BBh 07                               RLCA      
005BCh E680                             AND       080H           ; BLENDE REST AUS
005BEh 4F         TEST8:                LD        C,A            ; PACKE ZU TEST_TYPE
005BFh 3A3FFF                           LD        A,(TEST_TYPE)  ; 
005C2h B1                               OR        C              ;
005C3h 323FFF                           LD        (TEST_TYPE),A  ;
005C6h                                                           ; OK, ALLES GEPRUEFT
005C6h 3E00                             LD        A,0            ; FEHLERFREIE RUECKKEHR
005C8h C9                               RET                      ;
005C9h                                            
005C9h            READ_ID:                        
005C9h                                                           ; LESE NAECHSTES ID FELD
005C9h                                                           ; IN TEST_TYPE BIT 6 STEHT OB FM ODER MFM
005C9h                                                           ; KONNTE KEIN ID-FELD GELESEN WERDEN, DANN IST AKKU<>0
005C9h                                                           ; UND ZERO-FLAG NICHT GESETZT
005C9h                                                           ;
005C9h 010A02                           LD        BC,020AH       ; READ ID KOMMANDO
005CCh 3A3FFF                           LD        A,(TEST_TYPE)  ; PACKE MFM BIT DAZU
005CFh E640                             AND       040H
005D1h B1                               OR        C
005D2h 4F                               LD        C,A
005D3h CDB703                           CALL      MOTO           ; LESE ID-FELD
005D6h CD1B03                           CALL      RESULT         ; WAR LESEVERSUCH ERFOLGREICH?
005D9h B7                               OR        A
005DAh C9                               RET       
005DBh                                                           ;
005DBh                                                           ;
005DBh                                                           ;
005DBh            MAXI_SET:                       
005DBh                                                           ; SETZT FLOPPY KONTROLER AUF MAXI-LAUFWERKE
005DBh                                            
005DBh F5                               PUSH      AF
005DCh 3E06                             LD        A,PAD_MINI AND PAD_RESET; LOESCHE SIGNAL MINI
005DEh D3D8                             OUT       (P_LS259),A
005E0h 3A0FFF                           LD        A,(SWITCH_DELAY); UMSCHALTVERZOEGERUNG IN MILLISEKUNDEN
005E3h B7                               OR        A
005E4h 3EFF                             LD        A,0FFH
005E6h C40106                           CALL      NZ,M_M_DEL
005E9h 3247FF                           LD        (LAST_FDC_SPEED),A
005ECh F1                               POP       AF
005EDh C9                               RET       
005EEh                                            
005EEh                                            
005EEh            MINI_SET:                       
005EEh                                                           ; SETZE FLOPPY KONTROLLER AUF MINI-LAUFWERKE
005EEh                                            
005EEh F5                               PUSH      AF
005EFh 3E07                             LD        A,PAD_MINI OR PAD_SET; SETZE SIGNAL MINI
005F1h D3D8                             OUT       (P_LS259),A
005F3h 3A0FFF                           LD        A,(SWITCH_DELAY); UMSCHALTVERZOEGERUNG IN MILLISEKUNDEN
005F6h B7                               OR        A
005F7h 3E00                             LD        A,0
005F9h C40106                           CALL      NZ,M_M_DEL
005FCh 3247FF                           LD        (LAST_FDC_SPEED),A
005FFh F1                               POP       AF
00600h C9                               RET       
00601h                                            
00601h                                            
00601h            M_M_DEL:                        
00601h                                                           ; Verzoegerung bei Umschaltung Mini/Maxi-Laufwerken beachten
00601h                                            
00601h C5                               PUSH      BC             ; Register retten
00602h D5                               PUSH      DE
00603h E5                               PUSH      HL
00604h F5                               PUSH      AF
00605h 4F                               LD        C,A
00606h 3A47FF                           LD        A,(LAST_FDC_SPEED)
00609h B9                               CP        C
0060Ah 280B                             JR        Z,M_M_DEL_1
0060Ch 3A0FFF                           LD        A,(SWITCH_DELAY)
0060Fh 6F                               LD        L,A
00610h 2664                             LD        H,064H
00612h ED6C                             MLT       HL
00614h CDF301                           CALL      DELAY_HL
00617h F1         M_M_DEL_1:            POP       AF             ; Register wieder zurueck
00618h E1                               POP       HL
00619h D1                               POP       DE
0061Ah C1                               POP       BC
0061Bh C9                               RET       
0061Ch                                            
0061Ch            SENSD:                          
0061Ch                                                           ; aktuelle Laufwerksignale einlesen
0061Ch                                            
0061Ch 010402                           LD        BC,0204H
0061Fh CD2B04                           CALL      CMFD
00622h CD4304                           CALL      NEXT
00625h C9                               RET       
00626h                                            
00626h                                                           ;-----------------------------------------------
00626h                                            
00626h 3A55FF     SET_PRECOM:           LD        A,(PRECOM_BEGIN); TRACK, AB DEM PRECOM NOTWENDIG
00629h 4F                               LD        C,A
0062Ah 3A1AFF                           LD        A,(TRACK)
0062Dh B9                               CP        C
0062Eh 3E00                             LD        A,0            ; KEINE PRECOM VORWÄHLEN
00630h 3803                             JR        C,SET_PRECOM_1
00632h 3A2FFF                           LD        A,(WRITE_PRECOM); P0, P1, P2 AM FDC SETZEN (PRECOM EINGAENGE)
00635h 4F         SET_PRECOM_1:         LD        C,A
00636h E601                             AND       01H
00638h F602                             OR        PAD_M0         ; M0 (P0) SETZEN/RUECKSETZEN
0063Ah D3D8                             OUT       (P_LS259),A
0063Ch 79                               LD        A,C
0063Dh 0F                               RRCA      
0063Eh E601                             AND       01H
00640h F604                             OR        PAD_M1         ; M1 (P1) SETZEN/RUECKSETZEN
00642h D3D8                             OUT       (P_LS259),A
00644h 79                               LD        A,C
00645h 0F                               RRCA      
00646h 0F                               RRCA      
00647h E601                             AND       01H
00649h F600                             OR        PAD_DATA       ; DATA (P2) SETZEN/RUECKSETZEN
0064Bh D3D8                             OUT       (P_LS259),A
0064Dh C9                               RET       
0064Eh                                            
0064Eh                                                           ;-----------------------------------------------
0064Eh                                            
0064Eh            DISKERR:                        
0064Eh                                                           ; GIBT DISK FEHLERMELDUNG AUS
0064Eh                                                           ; BENUTZT DAZU DIE RESULT TABELLE
0064Eh                                                           ; UND DIE ERMSG EINTRAGUNG
0064Eh                                            
0064Eh 3A2DFF                           LD        A,(DERMSG)     ; SOLL FEHLERMELDUNG
00651h 3C                               INC       A              ; UNTERDRUECKT WERDEN ?
00652h C8                               RET       Z              ; WENN JA, RUECKSPRUNG
00653h 2A35FF                           LD        HL,(ERMSG)     ; LADE READ BZW WRITE TEXT
00656h CD1E01                           CALL      SOUT           ; UND GEBE IHN AUS
00659h 3A21FF                           LD        A,(REST)       ; LADE LAUFWERK NUMMER
0065Ch CDA801                           CALL      LOG_PHYS       ; Umwandlung log. in phys. Laufwerk
0065Fh C641                             ADD       A,41H          ; WANDLE IN ASCCI
00661h 4F                               LD        C,A            ; GEBE LAUFWERK BUCHSTABE AUS
00662h CD3101                           CALL      CECHO
00665h                                            
00665h 21AB06                           LD        HL,TXT1        ; GEBE TRACK AUS
00668h CD1E01                           CALL      SOUT
0066Bh 3A24FF                           LD        A,(REST+3)
0066Eh CD5B01                           CALL      DEZOUT
00671h                                            
00671h 21B506                           LD        HL,TXT2        ; GEBE HEAD AUS
00674h CD1E01                           CALL      SOUT
00677h 3A25FF                           LD        A,(REST+4)
0067Ah C630                             ADD       A,30H          ; WANDLE IN ASCII
0067Ch 4F                               LD        C,A
0067Dh CD3101                           CALL      CECHO
00680h                                            
00680h 21BE06                           LD        HL,TXT3        ; GEBE SECTOR AUS
00683h CD1E01                           CALL      SOUT
00686h 3A26FF                           LD        A,(REST+5)
00689h CD5B01                           CALL      DEZOUT
0068Ch                                            
0068Ch                                                           ; GEBE FEHLER IM KLARTEXT AUS
0068Ch                                            
0068Ch 11C906                           LD        DE,ERROR_TABLE
0068Fh 3A22FF                           LD        A,(REST+1)     ; LESE STATUS1
00692h 67                               LD        H,A
00693h 3A23FF                           LD        A,(REST+2)     ; LESE STATUS2
00696h 6F                               LD        L,A
00697h            ERRLOP:                         
00697h 29                               ADD       HL,HL          ; TESTE OB FEHLERBIT GESETZT
00698h E5                               PUSH      HL
00699h 1A                               LD        A,(DE)
0069Ah 6F                               LD        L,A
0069Bh 13                               INC       DE
0069Ch 1A                               LD        A,(DE)
0069Dh 67                               LD        H,A
0069Eh DC1E01                           CALL      C,SOUT         ; WENN JA GEBE TEXT AUS
006A1h E1                               POP       HL
006A2h 13                               INC       DE             ; ZEIGE AUF NAECHSTE MELDUNG
006A3h 7C                               LD        A,H            ; KEIN FEHLER MEHR DA?
006A4h B5                               OR        L
006A5h 20F0                             JR        NZ,ERRLOP
006A7h                                            
006A7h CD2901                           CALL      CROUT
006AAh                                            
006AAh C9                               RET                      ; OK, ENDE
006ABh                                            
006ABh                                            
006ABh 2C20747261 TXT1:                 DEFM      ", track #$"
006B5h 2C20       TXT2:                 DEFM      ", "
006B7h 6865616420 TXT2_1:               DEFM      "head #$"
006BEh 2C20736563 TXT3:                 DEFM      ", sector #$"
006C9h                                            
006C9h                                            
006C9h                                            
006C9h            ERROR_TABLE:                    
006C9h EA06                             DEFW      B15MSG         ; FEHLERMELDUNGEN FUER ST1
006CBh E906                             DEFW      NOBMSG
006CDh FD06                             DEFW      B13MSG
006CFh 0B07                             DEFW      B12MSG
006D1h E906                             DEFW      NOBMSG
006D3h 1707                             DEFW      B10MSG
006D5h 2207                             DEFW      B9MSG
006D7h 3207                             DEFW      B8MSG
006D9h                                            
006D9h E906                             DEFW      NOBMSG         ; FEHLERMELDUNGEN FUER ST2
006DBh 4A07                             DEFW      B6MSG
006DDh 5A07                             DEFW      B5MSG
006DFh 7607                             DEFW      B4MSG
006E1h E906                             DEFW      NOBMSG
006E3h E906                             DEFW      NOBMSG
006E5h 8807                             DEFW      B1MSG
006E7h 9807                             DEFW      B0MSG
006E9h                                            
006E9h 24         NOBMSG:               DEFB      24H
006EAh 0A0D20656E B15MSG:               DEFM      10,13,' end of cylinder',24H
006FDh 0A0D206461 B13MSG:               DEFM      10,13,' data error',24H
0070Bh 0A0D206F76 B12MSG:               DEFM      10,13,' over run',24H
00717h 0A0D206E6F B10MSG:               DEFM      10,13,' no data',24H
00722h 0A0D206E6F B9MSG:                DEFM      10,13,' not writable',24H
00732h 0A0D206D69 B8MSG:                DEFM      10,13,' missing address mark',24H
0074Ah 0A0D20636F B6MSG:                DEFM      10,13,' control mark',24H
0075Ah 0A0D206461 B5MSG:                DEFM      10,13,' data error in data field',24H
00776h 0A0D207772 B4MSG:                DEFM      10,13,' wrong cylinder',24H
00788h 0A0D206261 B1MSG:                DEFM      10,13,' bad cylinder',24H
00798h 0A0D206D69 B0MSG:                DEFM      10,13,' missing address mark in data field',24H
007BEh                                            
007BEh 070D0A2052 TXTRD:                DEFM      BELL,0DH,0AH,' Read error on $'
007D1h 070D0A2057 TXTWR:                DEFM      BELL,0DH,0AH,' Write error on $'
007E5h                                            
007E5h                                            
007E5h                                            
007E5h                                            
007E5h                                            
007E5h                                                           ; FLOPPY-CONTROLLER EINGANG P2 / PCF8583 DATENEINGANG (SDA) SETZEN 
007E5h                                            
007E5h 3E01       SET_SDA_P2:           LD        A,PAD_DATA OR PAD_SET
007E7h D3D8                             OUT       (P_LS259),A
007E9h C9                               RET       
007EAh                                            
007EAh                                                           ; FLOPPY-CONTROLLER EINGANG P2 / PCF8583 DATENEINGANG (SDA) ZURUECKSETZEN
007EAh                                            
007EAh 3E00       RESET_SDA_P2:         LD        A,PAD_DATA
007ECh D3D8                             OUT       (P_LS259),A
007EEh C9                               RET       
007EFh                                            
007EFh                                                           ; PCF8583 EINGANG SCL SETZEN / STEIGENDE FLANKE CLOCKEINGANG
007EFh                                            
007EFh 3E0B       SET_SCL:              LD        A,PAD_SCL OR PAD_SET
007F1h D3D8                             OUT       (P_TIME_OUT),A
007F3h C9                               RET       
007F4h                                            
007F4h                                                           ; PCF8583 EINGANG SCL ZURUECKSETZEN / FALLENDE FLANKE CLOCKEINGANG
007F4h                                            
007F4h 3E0A       RESET_SCL:            LD        A,PAD_SCL
007F6h D3D8                             OUT       (P_TIME_OUT),A
007F8h C9                               RET       
007F9h                                            
007F9h                                                           ; KLEINE VERZOEGERUNG
007F9h                                            
007F9h 3E03       DELAY:                LD        A,03H
007FBh 3D         DELAY1:               DEC       A
007FCh C2FB07                           JP        NZ,DELAY1
007FFh C9                               RET       
00800h                                            
00800h                                                           ; LESE EIN BIT VOM PCF8583
00800h                                            
00800h CDEF07     PCF_READ:             CALL      SET_SCL        ; CLOCK PCF8583 STEIGENDE FLANKE
00803h CDF907                           CALL      DELAY
00806h 3E01                             LD        A,1            ; I/O-PAGE 1
00808h DBD9                             IN        A,(STAT)       ; LESE SDA-BIT VON PCF8583
0080Ah 2F                               CPL                      ; INVERTIEREN
0080Bh 07                               RLCA                     ; SCHIEBE NACH BIT0
0080Ch CDF407                           CALL      RESET_SCL      ; CLOCK PCF8583 FALLENDE FLANKE
0080Fh C9                               RET       
00810h                                            
00810h                                                           ; BIT LOGISCH 1 AN PCF8583 AUSGEBEN
00810h                                            
00810h CDE507     PCF_BIT_DATA:         CALL      SET_SDA_P2
00813h CDF907                           CALL      DELAY
00816h CDEA07                           CALL      RESET_SDA_P2
00819h                                            
00819h                                                           ; PCF8583 CLOCKEINGANG FALLENDE FLANKE MIT DELAY
00819h                                            
00819h CDF907     PCF_CLK_1_0:          CALL      DELAY
0081Ch CDF407                           CALL      RESET_SCL
0081Fh C9                               RET       
00820h                                            
00820h                                                           ; STOP-SIGNAL AN PCF8583 SENDEN
00820h                                            
00820h CDEA07     PCF_STOP:             CALL      RESET_SDA_P2   ; STOP TRANSMISSION
00823h CDF907                           CALL      DELAY
00826h CDE507                           CALL      SET_SDA_P2
00829h CDF907                           CALL      DELAY
0082Ch CDEF07                           CALL      SET_SCL
0082Fh C9                               RET       
00830h                                            
00830h                                                           ; 8 DATENBITS AN PCF8583 AUSGEBEN
00830h                                            
00830h C5         PCF_WRITE_BYTE:       PUSH      BC
00831h 4F                               LD        C,A            ; ZWISCHENSPEICHERN 
00832h 0608                             LD        B,8H           ; 8 BITS
00834h 79         PCF_WR_1:             LD        A,C            ; BITMUSTER HOLEN
00835h 07                               RLCA                     ; BIT IN CARRY FLAG
00836h DCE507                           CALL      C,SET_SDA_P2   ; 1 SENDEN
00839h D4EA07                           CALL      NC,RESET_SDA_P2; 0 SENDEN
0083Ch CD0008                           CALL      PCF_READ
0083Fh 79                               LD        A,C
00840h 17                               RLA                      ; NAECHSTES BIT VORBEREITEN
00841h 4F                               LD        C,A            ; ZWISCHENSTAND WEGSPEICHERN
00842h 05                               DEC       B              ; BITZAEHLER
00843h C23408                           JP        NZ,PCF_WR_1    ; NAECHTES BIT AUSGEBEN
00846h 79                               LD        A,C            ; MUSS JETZT 0 SEIN
00847h C1                               POP       BC
00848h C9                               RET       
00849h                                            
00849h                                            
00849h F5         PCF_SET_REGS:         PUSH      AF             ;
0084Ah CD1008                           CALL      PCF_BIT_DATA   ; 
0084Dh 3EA2                             LD        A,PCF_WRITE_CMD; BEFEHL SCHREIBEN IN PCF_REGISTER 
0084Fh                                            
0084Fh CD3008                           CALL      PCF_WRITE_BYTE ; Sende BEFEHLSKENNUNG nach PCF
00852h CDE507                           CALL      SET_SDA_P2
00855h CD0008                           CALL      PCF_READ
00858h                                            
00858h F1                               POP       AF             ; STARTADRESSE PCF-REGISTERSATZ
00859h                                            
00859h CD3008                           CALL      PCF_WRITE_BYTE ; Sende REGISTERNUMMER nach PCF
0085Ch CDE507                           CALL      SET_SDA_P2
0085Fh CD0008                           CALL      PCF_READ
00862h C9                               RET       
00863h                                            
00863h                                            
00863h CD4908     PCF_READ_REGS:        CALL      PCF_SET_REGS   ; BEFEHL
00866h CDEF07                           CALL      SET_SCL
00869h CD1008                           CALL      PCF_BIT_DATA
0086Ch 3EA3                             LD        A,PCF_READ_CMD
0086Eh CD3008                           CALL      PCF_WRITE_BYTE
00871h CDE507                           CALL      SET_SDA_P2
00874h CD0008                           CALL      PCF_READ
00877h 3EFF       PCF_READ_R2:          LD        A,0FFH
00879h CD3008                           CALL      PCF_WRITE_BYTE
0087Ch 77                               LD        (HL),A
0087Dh 23                               INC       HL
0087Eh 05                               DEC       B
0087Fh C28B08                           JP        NZ,PCF_READ_R1
00882h CDE507                           CALL      SET_SDA_P2
00885h CD0008                           CALL      PCF_READ
00888h C39408                           JP        PCF_READ_END
0088Bh                                            
0088Bh CDEA07     PCF_READ_R1:          CALL      RESET_SDA_P2
0088Eh CD0008                           CALL      PCF_READ
00891h C37708                           JP        PCF_READ_R2
00894h                                            
00894h CD2008     PCF_READ_END:         CALL      PCF_STOP
00897h C9                               RET       
00898h                                            
00898h                                            
00898h CD4908     PCF_SND_CMD:          CALL      PCF_SET_REGS   ; Sende (B) Bytes des Puffer (HL) an PCF8583
0089Bh 7E         PCF_SND_CM1:          LD        A,(HL)
0089Ch CD3008                           CALL      PCF_WRITE_BYTE
0089Fh CDE507                           CALL      SET_SDA_P2
008A2h CD0008                           CALL      PCF_READ
008A5h 23                               INC       HL
008A6h 05                               DEC       B
008A7h C29B08                           JP        NZ,PCF_SND_CM1
008AAh CD2008                           CALL      PCF_STOP
008ADh C9                               RET       
008AEh                                            
008AEh                                                           ; DATUM/UHRZEIT AUS PCF8583 AUSLESEN
008AEh                                            
008AEh            READ_PHYS_TIME:                 
008AEh                                            
008AEh F5                               PUSH      AF             ; REGISTER RETTEN
008AFh C5                               PUSH      BC
008B0h D5                               PUSH      DE
008B1h E5                               PUSH      HL
008B2h                                            
008B2h 3E00                             LD        A,0
008B4h 0610                             LD        B,10H          ; BEFEHLSPUFFERGROESSE 16 BYTE
008B6h                                            
008B6h 21D0FE                           LD        HL,PCF_CMD_BUF
008B9h CD6308                           CALL      PCF_READ_REGS
008BCh 21D2FE                           LD        HL,PCF_CMD_BUF+2; ZEIT/DATUM AUS PUFFER UEBERTRAGEN
008BFh 1138FF                           LD        DE,TIME_FIELD
008C2h 010500                           LD        BC,0005H
008C5h EDB0                             LDIR      
008C7h 3ADFFE                           LD        A,(PCF_CMD_BUF+0FH); JAHRESKORREKTUR
008CAh 323EFF                           LD        (TIME_FIELD+6),A
008CDh 3AD0FE                           LD        A,(PCF_CMD_BUF)
008D0h E602                             AND       02H
008D2h CAE008                           JP        Z,READ_PHYS_T1
008D5h 3A3EFF                           LD        A,(TIME_FIELD+6)
008D8h 3C                               INC       A
008D9h 27                               DAA       
008DAh 323EFF                           LD        (TIME_FIELD+6),A
008DDh CDE508                           CALL      SET_PHYS_TIME
008E0h            READ_PHYS_T1:                   
008E0h E1                               POP       HL
008E1h D1                               POP       DE
008E2h C1                               POP       BC
008E3h F1                               POP       AF
008E4h C9                               RET       
008E5h                                            
008E5h                                            
008E5h            SET_PHYS_TIME:                  
008E5h                                            
008E5h F5                               PUSH      AF             ; REGISTER RETTEN
008E6h C5                               PUSH      BC
008E7h D5                               PUSH      DE
008E8h E5                               PUSH      HL
008E9h                                                           ; Befehlspuffer vorbereiten
008E9h 212909                           LD        HL,PCF_CMD_VORL; von hier (Vorlage)
008ECh 11D0FE                           LD        DE,PCF_CMD_BUF ; nach da kopieren
008EFh 010F00                           LD        BC,000FH       ; 15 Bytes
008F2h EDB0                             LDIR      
008F4h 2138FF                           LD        HL,TIME_FIELD  ; von hier
008F7h 11D2FE                           LD        DE,PCF_CMD_BUF+2; nach da kopieren
008FAh 010500                           LD        BC,0005H       ; 5 Bytes (s,m,h,d,mon)
008FDh EDB0                             LDIR      
008FFh 3AD5FE                           LD        A,(PCF_CMD_BUF+5); TAG
00902h E63F                             AND       03FH           ; BIT 6 UND 7 AUSBLENDEN
00904h 4F                               LD        C,A
00905h 3A3EFF                           LD        A,(TIME_FIELD+6); JAHR
00908h 32DFFE                           LD        (PCF_CMD_BUF+0FH),A
0090Bh 0F                               RRCA      
0090Ch 0F                               RRCA      
0090Dh 47                               LD        B,A
0090Eh 0F                               RRCA      
0090Fh 0F                               RRCA      
00910h 0F                               RRCA      
00911h E680                             AND       80H
00913h 80                               ADD       A,B
00914h E6C0                             AND       0C0H
00916h B1                               OR        C
00917h 32D5FE                           LD        (PCF_CMD_BUF+5),A
0091Ah 3E00                             LD        A,0            ; REGISTER-ADRESSE 0 ....
0091Ch 0610                             LD        B,10H          ; ANZAHL BYTES AN PCF8583
0091Eh 21D0FE                           LD        HL,PCF_CMD_BUF ; PUFFERADRESSE
00921h CD9808                           CALL      PCF_SND_CMD    ; I2C-TELEGRAMM AN PCF8583 SENDEN
00924h                                            
00924h E1                               POP       HL             ; REGISTER ZURUECKRETTEN
00925h D1                               POP       DE
00926h C1                               POP       BC
00927h F1                               POP       AF
00928h                                            
00928h C9                               RET       
00929h                                            
00929h                                                           ; BEFEHLS-PUFFER-VORLAGE
00929h            PCF_CMD_VORL:                   
00929h 0C00000000                       DEFB      00CH,000H,000H,000H,000H,000H,000H
00930h            PCF_CMD_VORL1:                  
00930h 903A000000                       DEFB      090H,03AH,000H,000H,000H,000H,001H
00937h 01                               DEFB      001H
00938h                                            
00938h                                            
00938h 3E10       USER_BYTES_READ:      LD        A,10H          ; AB REGISTERADRESSE 10H
0093Ah 0618                             LD        B,18H          ; 18H BYTES LESEN
0093Ch 2100FF                           LD        HL,SYSTEMPAGE  ; AB ADRESSE SYSTEMPAGE ABLEGEN
0093Fh CD6308                           CALL      PCF_READ_REGS  ; PCF8583 REGISTER LESEN
00942h C9                               RET       
00943h                                            
00943h                                            
00943h 3E10       USER_BYTES_WRITE:     LD        A,10H          ; AB REGISTERADRESSE 10H
00945h 0618                             LD        B,18H          ; 18H BYTES SCHREIBEN
00947h 2100FF                           LD        HL,SYSTEMPAGE  ; VON ADRESSE SYSTEMPAGE NEHMEN
0094Ah CD9808                           CALL      PCF_SND_CMD    ; PCF8583 REGISTER SCHREIBEN
0094Dh C9                               RET       
0094Eh                                            
0094Eh                                            
0094Eh F5         MOT_ON_TMR:           PUSH      AF             ; REGISTER RETTEN
0094Fh C5                               PUSH      BC
00950h D5                               PUSH      DE
00951h E5                               PUSH      HL
00952h                                                           ; 10 SEKUNDEN TIMEOUT SETZEN
00952h 3E07                             LD        A,07H          ; AB REGISTERADRESSE 07H
00954h 0602                             LD        B,02H          ; 2 BYTES SCHREIBEN
00956h 213009                           LD        HL,PCF_CMD_VORL1; VON ADRESSE W_0930 NEHMEN
00959h CD9808                           CALL      PCF_SND_CMD    ; PCF8583 REGISTER SCHREIBEN
0095Ch                                            
0095Ch                                                           ; ENABLE ALARM CONTROL REGISTER
0095Ch 3E00                             LD        A,0            ; AB REGISTERADRESSE 00H
0095Eh 0601                             LD        B,01H          ; 1 BYTE SCHREIBEN
00960h 212909                           LD        HL,PCF_CMD_VORL; VON ADRESSE W_0929 NEHMEN
00963h CD9808                           CALL      PCF_SND_CMD    ; PCF8583 REGISTER SCHREIBEN
00966h E1                               POP       HL             ; REGISTER ZURUECKRETTEN
00967h D1                               POP       DE
00968h C1                               POP       BC
00969h F1                               POP       AF
0096Ah C9                               RET       
0096Bh                                            
0096Bh                                            
0096Bh                                                           ;---------------------------------------------
0096Bh                                            
0096Bh                                                           ;
0096Bh                                                           ;
0096Bh                                                           ;
0096Bh                                                           ;**************************************************************************
0096Bh                                                           ;***                                                                    ***
0096Bh                                                           ;***  ES FOLGT NUN DIE ROUTINE ZUM BOOTEN VON DER HARDDISK              ***
0096Bh                                                           ;***                                                                    ***
0096Bh                                                           ;**************************************************************************
0096Bh                                                           ;
0096Bh                                                           ;
0096Bh                                                           ;
0096Bh                                                           ; PORTADRESSEN FUER OMTI-CONTROLLER AUF ECB-BUS (MIT ECPC VON CONITEC)
0096Bh                                            
0096Bh            ODATA:                EQU       0E0H
0096Bh            OSTATUS:              EQU       0E1H
0096Bh            OCONFIG:              EQU       0E2H
0096Bh            OMASK:                EQU       0E3H
0096Bh            ORESET:               EQU       0E1H
0096Bh            OSELECT:              EQU       0E2H
0096Bh                                            
0096Bh            HDADR:                EQU       0FC00H         ; LADEADRESSE FUER BOOTSTRAP-LOADER
0096Bh                                            
0096Bh                                            
0096Bh 3E00       HD_CNTRL_TST:         LD        A,0            ; VORBELEGEN MIT CONTROLLER FEHLT
0096Dh 3278FF                           LD        (OMTI_OK),A
00970h CD9609                           CALL      OMTI_DA
00973h C0                               RET       NZ
00974h 06FF                             LD        B,0FFH
00976h 10FE       L_0976:               DJNZ      L_0976         ; VERZOEGERUNGSSCHLEIFE BIS B=0
00978h 210000                           LD        HL,0           ;
0097Bh                                            
0097Bh D3E2                             OUT       (OSELECT),A
0097Dh DBE1       L_097D:               IN        A,(OSTATUS)    ; CONTROLLER-STATUS LESEN
0097Fh E63F                             AND       3FH            ; MASKIEREN
00981h FE0D                             CP        0DH            ; 
00983h 2807                             JR        Z,L_098C       ;
00985h 23                               INC       HL
00986h 7C                               LD        A,H
00987h FE10                             CP        10H            ; 
00989h 20F2                             JR        NZ,L_097D      ;
0098Bh C9                               RET       
0098Ch                                            
0098Ch                                            
0098Ch CD9609     L_098C:               CALL      OMTI_DA
0098Fh C0                               RET       NZ
00990h 3EFF                             LD        A,JA
00992h 3278FF                           LD        (OMTI_OK),A    ; CONTROLLER VORHANDEN
00995h C9                               RET       
00996h                                            
00996h                                            
00996h 210000     OMTI_DA:              LD        HL,0           ; OMTI-HD-CONTROLLER
00999h D3E1                             OUT       (OSTATUS),A
0099Bh DBE1       OMTI_DA1:             IN        A,(OSTATUS)
0099Dh E63F                             AND       3FH
0099Fh C8                               RET       Z
009A0h 23                               INC       HL
009A1h 7C                               LD        A,H
009A2h FE10                             CP        10H            ; 10 MAL PRÜFEN
009A4h 20F5                             JR        NZ,OMTI_DA1
009A6h B7                               OR        A
009A7h C9                               RET       
009A8h                                            
009A8h                                            
009A8h CDD809     L_09A8:               CALL      SELECT
009ABh 21CA09                           LD        HL,W_09CA
009AEh CDE909                           CALL      SCMD2
009B1h DBE1       L_09B1:               IN        A,(OSTATUS)
009B3h E63F                             AND       B_3F
009B5h FE0F                             CP        B_0F
009B7h 280D                             JR        Z,L_09C6
009B9h FE09                             CP        B_09
009BBh 20F4                             JR        NZ,L_09B1
009BDh 216FFF                           LD        HL,HD_NO_CYL
009C0h 0608                             LD        B,B_08
009C2h 0EE0                             LD        C,ODATA
009C4h EDB3                             OTIR      
009C6h CDFA09     L_09C6:               CALL      READSTATUS
009C9h C9                               RET       
009CAh                                            
009CAh                                            
009CAh 0C00000000 W_09CA:               DEFB      0CH,00,00,00,00,00
009D0h                                            
009D0h                                            
009D0h 01B706                           LD        BC,TXT2_1
009D3h                                            
009D3h 00                               NOP       
009D4h 00                               NOP       
009D5h 010000                           LD        BC,0
009D8h                                            
009D8h                                            
009D8h                                            
009D8h            SELECT:                                        ; SELECT OMTI CONTROLLER
009D8h D3E2                             OUT       (OSELECT),A
009DAh DBE1       SELECT1:              IN        A,(OSTATUS)    ; WAIT FOR CONTROLLER SELECTED
009DCh E63F                             AND       00111111B
009DEh FE0D                             CP        00001101B      ; WAIT UNTIL COMMANDTRANSFER IS READY
009E0h 20F8                             JR        NZ,SELECT1
009E2h C9                               RET       
009E3h                                            
009E3h                                            
009E3h CDD809     L_09E3:               CALL      SELECT
009E6h 21E0FE                           LD        HL,W_FEE0
009E9h                                            
009E9h 0606       SCMD2:                LD        B,6            ; BYTE COUNTER
009EBh 0EE0                             LD        C,ODATA        ; POINTER TO OMTI DATAPORT
009EDh DBE1       SCMD1:                IN        A,(OSTATUS)    ; READ STATUSBYTE
009EFh E63F                             AND       00111111B
009F1h FE0D                             CP        00001101B      ; READY FOR WRITE COMMAND BYTE ?
009F3h 20F8                             JR        NZ,SCMD1       ; NO, WAIT UNTIL READY
009F5h EDA3                             OUTI                     ; WRITE COMMANDBYTE TO OMTI
009F7h 20F4                             JR        NZ,SCMD1       ; UNTIL ALL DONE
009F9h C9                               RET       
009FAh                                            
009FAh                                            
009FAh            READSTATUS:                     
009FAh                                                           ; READ STATUSBYTE AND SET ZEROFLAG AND
009FAh                                                           ; ERRFLAG IF ANY ERROR
009FAh DBE1                             IN        A,(OSTATUS)    ; READ CONTOLLER STATUSBYTE
009FCh E63F                             AND       00111111B
009FEh FE0F                             CP        00001111B      ; READY FOR STATUS READ ?
00A00h 20F8                             JR        NZ,READSTATUS  ; NO, WAIT UNTIL READY
00A02h DBE0                             IN        A,(ODATA)      ; OK, READ STATUSBYTE
00A04h 32E6FE                           LD        (W_FEE6),A
00A07h B7                               OR        A              ; AND SET ZEROFLAG
00A08h C9                               RET       
00A09h                                            
00A09h                                            
00A09h 3AE4FE     L_0A09:               LD        A,(W_FEE4)
00A0Ch 5F                               LD        E,A
00A0Dh                                            
00A0Dh                                            
00A0Dh            READBUFFER:                     
00A0Dh                                                           ; READ OMTI DATABUFFER TO (HL)
00A0Dh DBE1                             IN        A,(OSTATUS)    ; WAIT FOR DATA READ TRANSFER
00A0Fh E63F                             AND       00111111B      ;
00A11h FE0F                             CP        00001111B
00A13h C8                               RET       Z              ; NO TRANSFER IN ERROR CASE
00A14h FE0B                             CP        00001011B
00A16h 20F5                             JR        NZ,READBUFFER
00A18h 01E000                           LD        BC,ODATA       ; CLEAR B AND SET C TO DATAPORT
00A1Bh EDB2                             INIR                     ; READ NEXT 256 BYTE
00A1Dh EDB2                             INIR      
00A1Fh 1D                               DEC       E
00A20h 20EB                             JR        NZ,READBUFFER
00A22h C9                               RET       
00A23h                                            
00A23h                                            
00A23h 3AE4FE     L_0A23:               LD        A,(W_FEE4)
00A26h 5F                               LD        E,A
00A27h DBE1       L_0A27:               IN        A,(OSTATUS)
00A29h E63F                             AND       00111111B
00A2Bh FE0F                             CP        00001111B
00A2Dh C8                               RET       Z
00A2Eh FE09                             CP        00001001B
00A30h 20F5                             JR        NZ,L_0A27
00A32h 01E000                           LD        BC,00E0H
00A35h EDB3                             OTIR      
00A37h EDB3                             OTIR      
00A39h 1D                               DEC       E
00A3Ah 20EB                             JR        NZ,L_0A27
00A3Ch C9                               RET       
00A3Dh                                            
00A3Dh                                            
00A3Dh 2A5AFF     L_0A3D:               LD        HL,(HD_TRACK)
00A40h 7D                               LD        A,L
00A41h 32E3FE                           LD        (W_FEE3),A
00A44h 3A5DFF                           LD        A,(HD_SECTOR)
00A47h E63F                             AND       3FH
00A49h 47                               LD        B,A
00A4Ah 3A5CFF                           LD        A,(HD_HEAD)
00A4Dh E61F                             AND       1FH
00A4Fh 4F                               LD        C,A
00A50h CB0C                             RRC       H
00A52h CB0C                             RRC       H
00A54h 7C                               LD        A,H
00A55h E6C0                             AND       0C0H
00A57h B0                               OR        B
00A58h 32E2FE                           LD        (W_FEE2),A
00A5Bh CB0C                             RRC       H
00A5Dh 7C                               LD        A,H
00A5Eh E680                             AND       80H
00A60h B1                               OR        C
00A61h 32E1FE                           LD        (W_FEE1),A
00A64h C9                               RET       
00A65h                                            
00A65h                                            
00A65h 3E0A       L_0A65:               LD        A,0AH
00A67h 32E0FE                           LD        (W_FEE0),A
00A6Ah 1805                             JR        L_0A71
00A6Ch 3E08       L_0A6C:               LD        A,08H
00A6Eh 32E0FE                           LD        (W_FEE0),A
00A71h CD3D0A     L_0A71:               CALL      L_0A3D
00A74h 3A46FF                           LD        A,(SECTCNT)
00A77h 32E4FE                           LD        (W_FEE4),A
00A7Ah 3A77FF                           LD        A,(HD_CTRL_BYTE)
00A7Dh 32E5FE                           LD        (W_FEE5),A
00A80h CDE309                           CALL      L_09E3
00A83h 2A44FF                           LD        HL,(DMAADR)
00A86h 3AE0FE                           LD        A,(W_FEE0)
00A89h FE08                             CP        08H
00A8Bh F5                               PUSH      AF
00A8Ch CC090A                           CALL      Z,L_0A09
00A8Fh F1                               POP       AF
00A90h C4230A                           CALL      NZ,L_0A23
00A93h CDFA09                           CALL      READSTATUS
00A96h C8                               RET       Z
00A97h 3A2DFF                           LD        A,(DERMSG)
00A9Ah E6FF                             AND       0FFH
00A9Ch C0                               RET       NZ
00A9Dh 21A70A     L_0A9D:               LD        HL,W_0AA7
00AA0h CD1E01                           CALL      SOUT
00AA3h 3EFF                             LD        A,0FFH
00AA5h B7                               OR        A
00AA6h C9                               RET       
00AA7h                                            
00AA7h                                            
00AA7h 0D0A072048 W_0AA7:               DEFM      0DH,0AH,BELL,' Harddisk error',00DH,00AH,'$'
00ABCh                                            
00ABCh                                            
00ABCh CDDF0D     L_0ABC:               CALL      ANZ_TXT_HD     ; Text "Harddisk" ausgeben
00ABFh CD4A0B                           CALL      WAIT_HD_READY
00AC2h 2809                             JR        Z,L_0ACD
00AC4h 21310B                           LD        HL,HD_N_READY  ; "not ready" ausgeben
00AC7h CD1E01                           CALL      SOUT
00ACAh C39210                           JP        GETCOM         ; Neue Eingabe
00ACDh 210000     L_0ACD:               LD        HL,0
00AD0h 225AFF                           LD        (HD_TRACK),HL
00AD3h 225CFF                           LD        (HD_HEAD),HL
00AD6h 2100FC                           LD        HL,HDADR
00AD9h 2244FF                           LD        (DMAADR),HL
00ADCh 3E01                             LD        A,01H          ; einen Sektor einlesen
00ADEh 3246FF                           LD        (SECTCNT),A
00AE1h CD6C0A                           CALL      L_0A6C
00AE4h C29510                           JP        NZ,GETCM
00AE7h 21F5FD                           LD        HL,W_FDF5      ; Text im Bootsektor vorhanden?
00AEAh 113F0B                           LD        DE,HD_BOOT_KENN
00AEDh 060B                             LD        B,0BH          ; 
00AEFh 1A         BOOT_TST:             LD        A,(DE)
00AF0h BE                               CP        (HL)
00AF1h 2015                             JR        NZ,HD_BOOT_ERR ; Fehlermeldung
00AF3h 23                               INC       HL
00AF4h 13                               INC       DE
00AF5h 10F8                             DJNZ      BOOT_TST
00AF7h 21DBFD                           LD        HL,W_FDDB
00AFAh 115EFF                           LD        DE,HD_SCTR_TRK
00AFDh 011A00                           LD        BC,001AH       ; 26 Bytes kopieren
00B00h EDB0                             LDIR      
00B02h CDA809                           CALL      L_09A8
00B05h 2096                             JR        NZ,L_0A9D
00B07h C9                               RET       
00B08h                                            
00B08h                                            
00B08h 21120B     HD_BOOT_ERR:          LD        HL,TXT_HD_BOOT_ERR
00B0Bh CD1E01                           CALL      SOUT
00B0Eh 3EFF                             LD        A,0FFH
00B10h B7                               OR        A
00B11h C9                               RET       
00B12h                                            
00B12h                                            
00B12h 0D0A072065 TXT_HD_BOOT_ERR:      DEFM      0DH,0AH,BELL,' error, no valid bootsector$'
00B31h 203D3E206E HD_N_READY:           DEFM      ' => not ready$'
00B3Fh 2863292043 HD_BOOT_KENN:         DEFM      '(c) Conitec'
00B4Ah                                            
00B4Ah            WAIT_HD_READY:                  
00B4Ah                                                           ; WARTE BIS WINCHESTER READY ODER TIMEOUT
00B4Ah CD830B                           CALL      CHECK_HD_READY
00B4Dh C8                               RET       Z              ; ALLES OK WINCHESTER BEIM ERSTEN MAL READY
00B4Eh 21660B                           LD        HL,WHRTXT      ; GEBE WARTEMELDUNG AUS
00B51h CD2B26                           CALL      SP_OUT
00B54h 21FFFF                           LD        HL,0FFFFH      ; LADE TIMEOUT ZAEHLER
00B57h E5         WHR1:                 PUSH      HL
00B58h CD830B                           CALL      CHECK_HD_READY
00B5Bh E1                               POP       HL
00B5Ch C8                               RET       Z
00B5Dh 2B                               DEC       HL
00B5Eh 7C                               LD        A,H
00B5Fh B5                               OR        L
00B60h 20F5                             JR        NZ,WHR1
00B62h 3EFF                             LD        A,0FFH
00B64h B7                               OR        A
00B65h C9                               RET       
00B66h                                            
00B66h 0177616974 WHRTXT:               DEFM      01H,'waiting for Harddisk ready $'
00B83h                                            
00B83h            CHECK_HD_READY:                 
00B83h                                                           ; PRUEFE OB WINCHESTERLAUFWERK READY
00B83h CDD809                           CALL      SELECT
00B86h 21900B                           LD        HL,READYCMDFIELD
00B89h CDE909                           CALL      SCMD2
00B8Ch CDFA09                           CALL      READSTATUS
00B8Fh C9                               RET       
00B90h                                            
00B90h            READYCMDFIELD:                  
00B90h 0000000000                       DEFB      0,0,0,0,0,0
00B96h                                            
00B96h                                            
00B96h                                            
00B96h            BOOTERR:                        
00B96h                                                           ; GEBE FEHLERMELDUNG BEI BOOT AUS
00B96h                                                           ; UND GEHE ZUM MONITOR ZURUECK
00B96h 219F0B                           LD        HL,BERMSG
00B99h CD1E01                           CALL      SOUT
00B9Ch C39510                           JP        GETCM
00B9Fh                                            
00B9Fh 0D0A072043 BERMSG:               DEFM      0DH,0AH,BELL,' Can not boot',0DH,0AH,'$'
00BB2h                                            
00BB2h                                                           ;-----------------------------------------------
00BB2h                                            
00BB2h                                                           ; ES FOLGEN UNIO TREIBER-ROUTINEN
00BB2h                                            
00BB2h                                                           ;UNIOINIT:
00BB2h                                                           ; DIESE ROUTINE WIRD BEI INITIALISIERUNG DES MONITORS
00BB2h                                                           ; AUFGERUFEN.
00BB2h                                            
00BB2h                                            
00BB2h                                            
00BB2h 21320C     UNIOINIT:             LD        HL,UATAB       ; LESE UNIO BAUD JUMPER
00BB5h 012A0C                           LD        BC,UDTAB       ;
00BB8h 1ED8                             LD        E,CONTR        ; PORT 74LS259
00BBAh 16D9                             LD        D,STAT         ; PORT FLAGS
00BBCh CDD50B                           CALL      JUMPIN         ; WERTE DER JUMPER ABFRAGEN
00BBFh 3233FF                           LD        (BAUD_JUMPERBYTE),A; JUMPER1
00BC2h 7A                               LD        A,D            ; JUMPER2
00BC3h 3232FF                           LD        (IO_JUMPERBYTE),A
00BC6h 3A33FF                           LD        A,(BAUD_JUMPERBYTE)
00BC9h 5F                               LD        E,A
00BCAh 1600                             LD        D,0
00BCCh 21390C                           LD        HL,BDTAB       ; KONVERTIERTABELLE
00BCFh 19                               ADD       HL,DE
00BD0h 7E                               LD        A,(HL)
00BD1h 3233FF                           LD        (BAUD_JUMPERBYTE),A; BAUDKENNUNG ABSPEICHERN
00BD4h C9                               RET       
00BD5h                                            
00BD5h                                                           ;-----------------------------------------------
00BD5h                                            
00BD5h            JUMPIN:                                        ; DIESES PROGRAMM LIEST DIE BEIDEN
00BD5h                                                           ; JUMPER AUF DER UNIO- BZW PROF-KARTE
00BD5h                                                           ; EIN. FOLGENDE REGISTER MUESSEN BELEGT SEIN
00BD5h                                                           ; E=PORTADRESSE DES 74 LS259
00BD5h                                                           ; D=PORTADRESSE DES EINGANGS PORTS
00BD5h                                                           ; BC=ADRESSE DER DECODER TABELLE
00BD5h                                                           ; HL=ADRESSE DER AUSGANGS BITS
00BD5h                                                           ; AUSGABE
00BD5h                                                           ; AKKU=JUMPER1, D=JUMPER2
00BD5h                                            
00BD5h C5                               PUSH      BC             ; RETTE DECODER TABELLE
00BD6h 4B                               LD        C,E
00BD7h 0603                             LD        B,3            ; ERSTES BITMUSTER AUSGEBEN
00BD9h EDB3                             OTIR      
00BDBh 79                               LD        A,C            ; TAUSCHE PORTADRESSE
00BDCh 4A                               LD        C,D
00BDDh 57                               LD        D,A
00BDEh 06FF                             LD        B,0FFH         ; I/O-PAGE (UNGERADE)
00BE0h ED78                             IN        A,(C)          ; LESE ERSTES BITPAAR EIN (BIT 4/5)
00BE2h                                                           ; JUMPER1-BIT und JUMPER2-BIT
00BE2h 1F                               RRA                      ; SCHIEBE BITS NACH RECHTS
00BE3h 1F                               RRA       
00BE4h 1F                               RRA       
00BE5h 1F                               RRA       
00BE6h E603                             AND       00000011B      ; MASKIERE
00BE8h 5F                               LD        E,A            ; UND NACH E
00BE9h                                            
00BE9h 79                               LD        A,C            ; TAUSCHE PORTADRESSE
00BEAh 4A                               LD        C,D
00BEBh 57                               LD        D,A
00BECh 0602                             LD        B,2            ; ZWEITES BITMUSTER AUSGEBEN
00BEEh EDB3                             OTIR      
00BF0h 79                               LD        A,C            ; TAUSCHE PORTADRESE
00BF1h 4A                               LD        C,D            ; I/O-ADRESSE (LOW) FUER IN-BEFEHL
00BF2h 57                               LD        D,A
00BF3h 06FF                             LD        B,0FFH         ; I/O-PAGE (UNGERADE)
00BF5h ED78                             IN        A,(C)          ; LESE ZWEITES BITPAAR EIN EIN
00BF7h 1F                               RRA                      ; EINMAL NACH RECHTS SCHIEBEN
00BF8h 1F                               RRA       
00BF9h E60C                             AND       00001100B      ; MASKIEREN
00BFBh B3                               OR        E              ; UND ZU E PACKEN
00BFCh 5F                               LD        E,A
00BFDh                                            
00BFDh 79                               LD        A,C            ; TAUSCHE PORTADRESSE
00BFEh 4A                               LD        C,D            ; I/O-ADRESSE (LOW) FUER IN-BEFEHL
00BFFh 57                               LD        D,A
00C00h 0602                             LD        B,2            ; DRITTES BITMUSTER AUSGEBEN
00C02h EDB3                             OTIR      
00C04h 79                               LD        A,C            ; TAUSCHE PORTADRESSE
00C05h 4A                               LD        C,D            ; I/O-ADRESSE (LOW) FUER IN-BEFEHL
00C06h 57                               LD        D,A
00C07h 06FF                             LD        B,0FFH         ; I/O-PAGE (UNGERADE)
00C09h ED78                             IN        A,(C)          ; LESE DRITTES BITPAAR EIN
00C0Bh E630                             AND       00110000B      ; MASKIEREN UND ZU E PACKEN
00C0Dh B3                               OR        E
00C0Eh 0603                             LD        B,3            ; TRENNE BEIDE JUMPERFELDER
00C10h 1F         JUMPI1:               RRA       
00C11h CB12                             RL        D
00C13h 1F                               RRA       
00C14h CB13                             RL        E
00C16h 10F8                             DJNZ      JUMPI1
00C18h E1                               POP       HL             ; HOLE DECODER TABELLE
00C19h E5                               PUSH      HL
00C1Ah 0600                             LD        B,0
00C1Ch 7A                               LD        A,D
00C1Dh E607                             AND       00000111B      ; MASKIEREN
00C1Fh 4F                               LD        C,A
00C20h 09                               ADD       HL,BC
00C21h 56                               LD        D,(HL)
00C22h E1                               POP       HL             ; HOLE DECODER TABELLE
00C23h 7B                               LD        A,E
00C24h E607                             AND       00000111B      ; MASKIEREN
00C26h 4F                               LD        C,A
00C27h 09                               ADD       HL,BC
00C28h 7E                               LD        A,(HL)
00C29h C9                               RET       
00C2Ah                                            
00C2Ah                                                           ;--------------------------------------------------------
00C2Ah                                            
00C2Ah 0000000200 UDTAB:                DEFB      00,00,00,02,00,03,04,01
00C32h                                            
00C32h            UATAB:                                         ; SEQUENZEN ZUM EINLESEN DER JUMPERSTELLUNG
00C32h                                            
00C32h 01                               DEFB      PAD_DATA OR PAD_SET; DATA SETZEN
00C33h 02                               DEFB      PAD_M0 AND PAD_RESET; M0 RUECKSETZEN
00C34h 04                               DEFB      PAD_M1 AND PAD_RESET; M1 RUECKSETZEN
00C35h                                            
00C35h 00                               DEFB      PAD_DATA AND PAD_RESET; DATA RUECKSETZEN
00C36h 03                               DEFB      PAD_M0 OR PAD_SET; M0 SETZEN
00C37h                                            
00C37h 02                               DEFB      PAD_M0 AND PAD_RESET; M0 RUECKSETZEN
00C38h 05                               DEFB      PAD_M1 OR PAD_SET; M1 SETZEN
00C39h                                            
00C39h            BDTAB:                                         ; UMRECHNUNGTABELLE JUMPER IN
00C39h                                                           ; BAUDKENNUNG
00C39h 0F                               DEFB      0FH            ; JUMPER OHNE = 0 (19200 BAUD)
00C3Ah 0E                               DEFB      0EH            ; JUMPER 1-3  = 1 ( 9600 BAUD)
00C3Bh 0A                               DEFB      0AH            ; JUMPER 2-4  = 2 ( 2400 BAUD)
00C3Ch 08                               DEFB      08H            ; JUMPER 3-5  = 3 ( 1200 BAUD)
00C3Dh 06                               DEFB      06H            ; JUMPER 4-6  = 4 (  300 BAUD)
00C3Eh                                            
00C3Eh                                                           ;--------------------------------------------------------
00C3Eh                                            
00C3Eh 3E00       SER_INIT:             LD        A,00
00C40h ED3904                           OUT0      (04H),A        ; ASCII Status Register Ch 0
00C43h 3A51FF                           LD        A,(SERBAUD0)
00C46h 0F                               RRCA      
00C47h 0F                               RRCA      
00C48h 0F                               RRCA      
00C49h 47                               LD        B,A
00C4Ah 0F                               RRCA      
00C4Bh E607                             AND       07H
00C4Dh F660                             OR        60H
00C4Fh ED3900                           OUT0      (00H),A        ; ASCII Control Register A Ch 0
00C52h 78                               LD        A,B
00C53h E610                             AND       10H
00C55h ED3902                           OUT0      (02H),A        ; ASCII Control B Ch 0 Register Ch 0
00C58h 3A51FF                           LD        A,(SERBAUD0)
00C5Bh CDE600                           CALL      MSER1INIT
00C5Eh 3A0EFF                           LD        A,(LOG_DRIVE)
00C61h E604                             AND       04H
00C63h ED3905                           OUT0      (05H),A        ; ASCII Status Register Ch 1
00C66h 3A52FF                           LD        A,(SERBAUD1)
00C69h 0F                               RRCA      
00C6Ah 0F                               RRCA      
00C6Bh 0F                               RRCA      
00C6Ch 47                               LD        B,A
00C6Dh 0F                               RRCA      
00C6Eh E607                             AND       07H
00C70h 4F                               LD        C,A
00C71h 3A0EFF                           LD        A,(LOG_DRIVE)
00C74h 07                               RLCA      
00C75h E610                             AND       10H
00C77h F660                             OR        60H
00C79h B1                               OR        C
00C7Ah ED3901                           OUT0      (01H),A        ; ASCII Control Register A Ch 1
00C7Dh 78                               LD        A,B
00C7Eh E610                             AND       10H
00C80h ED3903                           OUT0      (03H),A        ; ASCII Control Register B Ch 1
00C83h 3A52FF                           LD        A,(SERBAUD1)
00C86h CDF300                           CALL      MSER2INIT
00C89h                                            
00C89h                                                           ;-----------------------------------------------
00C89h                                            
00C89h                                                           ; Ansprung über CS
00C89h            CONST:                          
00C89h                                                           ; VERTEILER FUER CONSOLEN STATUS
00C89h                                                           ; DIE ROUTINEN MUESSEN A=FF UND KEIN ZERO-FLAG SETZEN
00C89h                                                           ; FALLS EIN ZEICHEN DA IST SONST AKKU= 0 UND ZERO-FLAG
00C89h                                            
00C89h 3A32FF                           LD        A,(IO_JUMPERBYTE); LESE JUMPERBYTE EIN
00C8Ch CDB90C                           CALL      VERTEILER
00C8Fh 3300                             DEFW      GRAFIST
00C91h 4400                             DEFW      SOFTIST
00C93h 5000                             DEFW      USER1IST
00C95h 5C00                             DEFW      USER2IST
00C97h C80C                             DEFW      DUMMYIST
00C99h                                            
00C99h                                            
00C99h                                            
00C99h                                            
00C99h                                                           ; Ansprung über CI
00C99h            CONIN:                          
00C99h                                                           ; VERTEILER FUER CONSOLEN EINGABE
00C99h                                                           ; DIE ROUTINE MUSSEN AUF EIN ZEICHEN VON DER KONSOLE WARTEN
00C99h                                                           ; UND DIESES IM AKKU UEBERGEBEN
00C99h                                                           ; ALLE ANDEREN REGISTER BLEIBEN UNVERAENDERT
00C99h                                            
00C99h 3A32FF                           LD        A,(IO_JUMPERBYTE)
00C9Ch CDB90C                           CALL      VERTEILER
00C9Fh 2D00                             DEFW      GRAFIN
00CA1h 3E00                             DEFW      SOFTIN
00CA3h 4A00                             DEFW      USER1IN
00CA5h 5600                             DEFW      USER2IN
00CA7h CC0C                             DEFW      DUMMYIN
00CA9h                                            
00CA9h                                            
00CA9h                                            
00CA9h                                                           ; Ansprung über CO
00CA9h            CONOUT:                         
00CA9h                                                           ; VERTEILER FUER CONSOLEN AUSGABE
00CA9h                                                           ; DAS ZEICHEN IN REG C. WIRD VON DEN ROUTINEN AUSGEGEBEN
00CA9h                                                           ; UND IN AKKU KOPIERT, ALLE ANDEREN REGISTER BLEIBEN UNVERAENDERT
00CA9h                                            
00CA9h 3A32FF                           LD        A,(IO_JUMPERBYTE)
00CACh CDB90C                           CALL      VERTEILER
00CAFh 3000                             DEFW      GRAFOUT
00CB1h 4100                             DEFW      SOFTOUT
00CB3h 4D00                             DEFW      USER1OUT
00CB5h 5900                             DEFW      USER2OUT
00CB7h CF0C                             DEFW      DUMMYOUT
00CB9h                                            
00CB9h                                            
00CB9h                                            
00CB9h            VERTEILER:                      
00CB9h                                                           ; VERZEIGT AUF EINE DER ADRESSEN DIE DER RETURNADRESSE FOLGEN
00CB9h                                            
00CB9h E3                               EX        (SP),HL        ; LEGE RETURNADRESSE IN HL
00CBAh            VERTEILER1:                     
00CBAh 3D                               DEC       A              ; WAR AKKU NULL?
00CBBh FAC20C                           JP        M,VERTEILER2   ; DANN ZEIGT HL AUF DIE RICHTIGE RETURN ADR.
00CBEh 23                               INC       HL             ; ANSONSTEN EINE ADRESSE WEITER
00CBFh 23                               INC       HL
00CC0h 18F8                             JR        VERTEILER1
00CC2h            VERTEILER2:                     
00CC2h 7E                               LD        A,(HL)         ; LADE ADRESSE DER ROUTINE IN HL
00CC3h 23                               INC       HL
00CC4h 66                               LD        H,(HL)
00CC5h 6F                               LD        L,A
00CC6h E3                               EX        (SP),HL        ; LADE ALTES HL UND LEGE ADRESSE DER ROUTINE
00CC7h                                                           ; AUF DEN STACK
00CC7h C9                               RET                      ; SPRINGE IN DIE RICHTIGE ROUTINE
00CC8h                                            
00CC8h                                            
00CC8h                                            
00CC8h            DUMMYIST:                       
00CC8h 3EFF                             LD        A,0FFH
00CCAh B7                               OR        A
00CCBh C9                               RET       
00CCCh                                            
00CCCh            DUMMYIN:                        
00CCCh 3E59                             LD        A,'Y'
00CCEh C9                               RET       
00CCFh                                            
00CCFh            DUMMYOUT:                       
00CCFh 79                               LD        A,C
00CD0h C9                               RET       
00CD1h                                            
00CD1h                                            
00CD1h                                            
00CD1h                                            
00CD1h            BREAK:                          
00CD1h                                                           ; PRUEFT OB EIN ZEICHEN EINGELESEN WURDE
00CD1h                                            
00CD1h CD0300                           CALL      CS
00CD4h CADA0E                           JP        Z,FRET
00CD7h CD0600                           CALL      CI             ; LESE ZEICHEN
00CDAh E67F                             AND       7FH
00CDCh FE1B                             CP        1BH            ; GLEICH ESCAPE
00CDEh CADD0E                           JP        Z,SRET         ; JA ENDE
00CE1h CD0300     BREAK1:               CALL      CS             ; WARTE AUF NEUES ZEICHEN
00CE4h 28FB                             JR        Z,BREAK1
00CE6h CD0600                           CALL      CI             ; LESE NEUES ZEICHEN
00CE9h E67F                             AND       7FH
00CEBh FE1B                             CP        1BH
00CEDh CADD0E                           JP        Z,SRET         ; WAR BREAK
00CF0h C3DA0E                           JP        FRET           ; WAR ETWAS ANDERES
00CF3h                                            
00CF3h                                            
00CF3h                                            
00CF3h            CNVBN:                          
00CF3h 79                               LD        A,C            ; WANDLUNG  
00CF4h D630                             SUB       '0'
00CF6h FE0A                             CP        0AH
00CF8h F8                               RET       M
00CF9h D607                             SUB       7
00CFBh C9                               RET       
00CFCh                                            
00CFCh                                            
00CFCh                                            
00CFCh                                            
00CFCh                                            
00CFCh            GETHX:                                         ; HEXZEICHEN LESEN
00CFCh E5                               PUSH      HL
00CFDh 210000                           LD        HL,0
00D00h 1E00                             LD        E,0            ; KENNUNG KEIN NEUER WERT
00D02h            GETHX1:                         
00D02h CD4A01                           CALL      GETCH1         ; LESE ZEICHEN (GROßBUCHSTABEN)
00D05h 4F                               LD        C,A
00D06h CDFA0E                           CALL      VALDL          ; TRENNZEICHEN ERKANNT?
00D09h D21B0D                           JP        NC,GETHX2      ; NEIN, WEITER
00D0Ch CD3101                           CALL      CECHO          ; JA, AUSGEBEN
00D0Fh 51                               LD        D,C
00D10h E5                               PUSH      HL
00D11h C1                               POP       BC             ; HEX-WERT UEBERGABE IN BC
00D12h E1                               POP       HL
00D13h 7B                               LD        A,E
00D14h B7                               OR        A
00D15h C2DD0E                           JP        NZ,SRET        ; CARRY GESETZT -> NEUER WERT IN BC
00D18h CADA0E                           JP        Z,FRET         ; CARRY GELOESCHT -> KEINE NEUER WERT
00D1Bh            GETHX2:                         
00D1Bh CDDF0E                           CALL      VALDG          ; GÜLTIGE HEXZIFFER?
00D1Eh D2020D                           JP        NC,GETHX1      ; NAECHSTES ZEICHEN LESEN
00D21h CD3101                           CALL      CECHO          ; AUSGEBEN
00D24h CDF30C                           CALL      CNVBN          ; BINAER WANDELN
00D27h 1EFF                             LD        E,0FFH         ; KENNUNG NEUER WERT IST DA
00D29h 29                               ADD       HL,HL
00D2Ah 29                               ADD       HL,HL
00D2Bh 29                               ADD       HL,HL
00D2Ch 29                               ADD       HL,HL          ; * 16 (LEFT SHIFT 4 BIT)
00D2Dh 0600                             LD        B,0
00D2Fh 4F                               LD        C,A            ;
00D30h 09                               ADD       HL,BC          ; IN UNTERE 4 BIT EINSCHIEBEN
00D31h C3020D                           JP        GETHX1         ; NAECHSTES ZEICHEN LESEN
00D34h                                            
00D34h            GETDEZ:                         
00D34h                                                           ; LESE DEZIMALZAHLEN NACH HL
00D34h                                                           ; ALS TRENNZEICHEN WERDEN '/',':' UND <CR> ERKANNT
00D34h                                                           ; TRENNZEICHEN WIRD IN AKKU UEBERGEBEN
00D34h                                            
00D34h 0600                             LD        B,0
00D36h 210000                           LD        HL,0           ; LOESCHE AKKU
00D39h CD4A01     GETDEZ1:              CALL      GETCH1         ; LESE ZEICHEN
00D3Ch FE2F                             CP        '/'
00D3Eh 281F                             JR        Z,GETDEZ2
00D40h FE3A                             CP        ':'
00D42h 281B                             JR        Z,GETDEZ2
00D44h FE0D                             CP        0DH
00D46h 2817                             JR        Z,GETDEZ2
00D48h D630                             SUB       '0'            ; ZAHL ?
00D4Ah 38ED                             JR        C,GETDEZ1
00D4Ch FE0A                             CP        0AH
00D4Eh 30E9                             JR        NC,GETDEZ1
00D50h 4F                               LD        C,A
00D51h 29                               ADD       HL,HL
00D52h 29                               ADD       HL,HL
00D53h 29                               ADD       HL,HL
00D54h 29                               ADD       HL,HL
00D55h 09                               ADD       HL,BC
00D56h 3E30                             LD        A,'0'          ; GEBE ZAHL AUS
00D58h 81                               ADD       A,C
00D59h 4F                               LD        C,A
00D5Ah CD3101                           CALL      CECHO
00D5Dh 18DA                             JR        GETDEZ1
00D5Fh 4F         GETDEZ2:              LD        C,A
00D60h CD3101                           CALL      CECHO
00D63h 79                               LD        A,C
00D64h C9                               RET       
00D65h                                            
00D65h                                            
00D65h                                            
00D65h                                                           ; INHALT VON HL ALS HEXWERT AUSGEBEN UND NEUER WERT (ADRESSE)
00D65h                                            
00D65h E5         HL_NEU_WRT:           PUSH      HL
00D66h CD6801                           CALL      HLOUT
00D69h 0E2D                             LD        C,'-'
00D6Bh CD3101                           CALL      CECHO
00D6Eh CDFC0C                           CALL      GETHX
00D71h 3002                             JR        NC,HL_NEU_WR1
00D73h F1                               POP       AF
00D74h C5                               PUSH      BC             ; NEUER WERT VON BC
00D75h E1         HL_NEU_WR1:           POP       HL             ; NACH HL
00D76h 7A                               LD        A,D
00D77h FE0D                             CP        0DH            ; PRUEFE AUF CR
00D79h C9                               RET       
00D7Ah                                            
00D7Ah                                            
00D7Ah                                                           ; INHALT VON A ALS HEXWERT ausgeben und neuen Hex-Wert einlesen (BYTE)
00D7Ah                                            
00D7Ah F5         NEU_WRT:              PUSH      AF
00D7Bh CD6D01                           CALL      NMOUT          ;Hexziffernausgabe
00D7Eh 0E2D                             LD        C,'-'          ;
00D80h CD3101                           CALL      CECHO          ;Minus-Zeichen ausgeben
00D83h CDFC0C                           CALL      GETHX          ;NEUER WERT
00D86h 3003                             JR        NC,NEU_WR1     ;
00D88h F1                               POP       AF
00D89h 79                               LD        A,C
00D8Ah F5                               PUSH      AF
00D8Bh C1         NEU_WR1:              POP       BC
00D8Ch 7A                               LD        A,D
00D8Dh FE0D                             CP        0DH            ; PRUEFE AUF CR
00D8Fh 78                               LD        A,B
00D90h C9                               RET       
00D91h                                            
00D91h                                            
00D91h                                                           ; EINGABE VON JA(Y) ODER NEIN(N) ABFRAGEN
00D91h                                            
00D91h B7         JA_NEIN:              OR        A              ; ALTER WERT NEIN?
00D92h 2802                             JR        Z,JA_NEIN_1
00D94h 3EFF                             LD        A,JA           ; VORBELEGUNG MIT JA
00D96h F5         JA_NEIN_1:            PUSH      AF
00D97h 21D70D                           LD        HL,Y_TXT       ; TEXT Y VORBELEGEN
00D9Ah 2003                             JR        NZ,JA_NEIN_2
00D9Ch 21DB0D                           LD        HL,N_TXT       ; TEXT N VORBELEGEN
00D9Fh CD1E01     JA_NEIN_2:            CALL      SOUT           ; TEXT AUSGEBEN
00DA2h                                            
00DA2h CD4A01     JA_NEIN_3:            CALL      GETCH1         ; NEUEN WERT EINLESEN
00DA5h FE59                             CP        'Y'            ; EINGABE 'Y'?
00DA7h 0EFF                             LD        C,JA
00DA9h 2816                             JR        Z,JA_NEIN_4
00DABh FE4E                             CP        'N'            ; EINGABE 'N'?
00DADh 0E00                             LD        C,NEIN
00DAFh 2810                             JR        Z,JA_NEIN_4
00DB1h 4F                               LD        C,A
00DB2h CDFA0E                           CALL      VALDL          ; GÜLTIGES ENDEZEICHEN?
00DB5h 30EB                             JR        NC,JA_NEIN_3   ; KEIN GÜLTIGES ZEICHEN -> NEUE EINGABE
00DB7h CD3101                           CALL      CECHO          ; ZEICHEN SPIEGELN
00DBAh F1                               POP       AF
00DBBh 47                               LD        B,A            ; ZEICHEN RETTEN
00DBCh 3E0D                             LD        A,0DH          ; 'CR' EINGEGEBEN?
00DBEh B9                               CP        C
00DBFh 78                               LD        A,B            ; ZEICHEN ZURUECKRETTEN
00DC0h C9                               RET       
00DC1h                                            
00DC1h C5         JA_NEIN_4:            PUSH      BC
00DC2h 4F                               LD        C,A
00DC3h CD3101                           CALL      CECHO
00DC6h C1                               POP       BC
00DC7h F1                               POP       AF
00DC8h 79                               LD        A,C
00DC9h F5                               PUSH      AF
00DCAh 18D6                             JR        JA_NEIN_3
00DCCh                                            
00DCCh                                            
00DCCh                                                           ; NEGIERTE EINGABE JA/NEIN
00DCCh                                            
00DCCh B7         NEG_JA_NEIN:          OR        A
00DCDh 2802                             JR        Z,NEG_JN_1
00DCFh 3EFF                             LD        A,JA
00DD1h 2F         NEG_JN_1:             CPL       
00DD2h CD910D                           CALL      JA_NEIN
00DD5h 2F                               CPL       
00DD6h C9                               RET       
00DD7h                                            
00DD7h                                            
00DD7h 20592D24   Y_TXT:                DEFM      ' Y-$'
00DDBh 204E2D24   N_TXT:                DEFM      ' N-$'
00DDFh                                            
00DDFh                                            
00DDFh                                            
00DDFh                                            
00DDFh 3A78FF     ANZ_TXT_HD:           LD        A,(OMTI_OK)
00DE2h 21190E                           LD        HL,TX_HD       ; TEXT "HARDDISK" VORBEREITEN
00DE5h 1806                             JR        DISKDA_1
00DE7h                                            
00DE7h                                            
00DE7h            DISKDA:                         
00DE7h                                                           ; GIBT MELDUNG AUS, WENN DISKZUGRIFF OHNE KONTROLLER VERSUCHT WIRD
00DE7h                                                           ; UND KEHRT AUF DIE EINGABEEBENE ZURUECK
00DE7h 3A37FF                           LD        A,(DISKFLG)    ; LADE FLAG
00DEAh 21FB0D                           LD        HL,TX_FLOPPY   ; TEXT 'FLOPPY' VORBEREITEN
00DEDh B7         DISKDA_1:             OR        A              ; =NULL?
00DEEh C0                               RET       NZ             ; ZURUECK ZUM RUFENDEN PROGRAMM -> CONTROLLER DA
00DEFh CD2B26                           CALL      SP_OUT
00DF2h 21030E                           LD        HL,NODISK      ; GEBE MELDUNG AUS
00DF5h CD1E01                           CALL      SOUT
00DF8h C39210                           JP        GETCOM         ; AUF KOMMANDOEBENE ZURUECK
00DFBh                                            
00DFBh 01466C6F70 TX_FLOPPY:            DEFM      01H,'Floppy$'
00E03h 2061636365 NODISK:               DEFM      ' access not possible',BELL,'$'
00E19h 0148617264 TX_HD:                DEFM      01H,'Harddisk$'
00E23h                                            
00E23h                                            
00E23h                                            
00E23h                                            
00E23h 3A59FF     TST_UNIT:             LD        A,(HD_DISKFLG) ; LAUFWERK EINGELOGGT?
00E26h E606                             AND       06H
00E28h 2009                             JR        NZ,TST_UNIT1   ; OK
00E2Ah 21360E                           LD        HL,NO_DRIVE_TXT; FEHLERMELDUNG
00E2Dh CD1E01                           CALL      SOUT
00E30h C39210                           JP        GETCOM
00E33h FE04       TST_UNIT1:            CP        04H
00E35h C9                               RET       
00E36h                                            
00E36h 0D0A07206E NO_DRIVE_TXT:         DEFM      0DH,0AH,07H,' no drive specified$'
00E4Dh                                            
00E4Dh                                            
00E4Dh                                            
00E4Dh            REGDS:                          
00E4Dh                                                           ;                     CALL      CROUT           ; NEUE ZEILE
00E4Dh 212A2D                           LD        HL,RTAB
00E50h            REGDS3:                         
00E50h 4E                               LD        C,(HL)
00E51h 79                               LD        A,C
00E52h B7                               OR        A
00E53h C25A0E                           JP        NZ,REGDS0
00E56h CD2901                           CALL      CROUT
00E59h C9                               RET       
00E5Ah            REGDS0:                         
00E5Ah FE61                             CP        'a'            ; SOLL NEUE ZEILE ANFANGEN?
00E5Ch 2007                             JR        NZ,REGDS1      ; SPRUNG WENN NEIN
00E5Eh F5                               PUSH      AF
00E5Fh C5                               PUSH      BC
00E60h CD2901                           CALL      CROUT
00E63h C1                               POP       BC
00E64h F1                               POP       AF
00E65h            REGDS1:                         
00E65h CD3101                           CALL      CECHO
00E68h 0E3D                             LD        C,'='
00E6Ah CD3101                           CALL      CECHO
00E6Dh 23                               INC       HL
00E6Eh 5E                               LD        E,(HL)
00E6Fh 16FE                             LD        D,(REGS AND 0FF00H) SHR 8
00E71h 23                               INC       HL
00E72h 1A                               LD        A,(DE)
00E73h CD6D01                           CALL      NMOUT
00E76h 7E                               LD        A,(HL)
00E77h B7                               OR        A
00E78h CA800E                           JP        Z,REGDS2
00E7Bh 1B                               DEC       DE
00E7Ch 1A                               LD        A,(DE)
00E7Dh CD6D01                           CALL      NMOUT
00E80h            REGDS2:                         
00E80h 0E20                             LD        C,' '
00E82h CD3101                           CALL      CECHO
00E85h 23                               INC       HL
00E86h C3500E                           JP        REGDS3
00E89h                                            
00E89h                                            
00E89h                                            
00E89h            RGADR:                          
00E89h 212A2D                           LD        HL,RTAB
00E8Ch 110300                           LD        DE,3           ; LAENGE DER TABELLEN EINTRAEGE
00E8Fh            RGADR1:                         
00E8Fh 7E                               LD        A,(HL)
00E90h B7                               OR        A
00E91h CAC70E                           JP        Z,CERROR
00E94h B9                               CP        C
00E95h CA9C0E                           JP        Z,RGADR2
00E98h 19                               ADD       HL,DE
00E99h C38F0E                           JP        RGADR1
00E9Ch            RGADR2:                         
00E9Ch 23                               INC       HL
00E9Dh 44                               LD        B,H
00E9Eh 4D                               LD        C,L
00E9Fh C9                               RET       
00EA0h                                            
00EA0h                                            
00EA0h                                            
00EA0h                                                           ;--------------------REGISTER ZURUECKLADEN------
00EA0h                                            
00EA0h            RSTTF:                          
00EA0h F3                               DI                       ; INTERRUPTS SPERREN
00EA1h 31B6FE                           LD        SP,MSTAK
00EA4h C1                               POP       BC             ; LADE I UND R REGISTER
00EA5h 79                               LD        A,C
00EA6h ED4F                             LD        R,A
00EA8h 78                               LD        A,B
00EA9h ED47                             LD        I,A
00EABh D9                               EXX       
00EACh 08                               EX        AF,AF'         ; ERST ZWEITREGISTERSATZ LADEN
00EADh E1                               POP       HL
00EAEh D1                               POP       DE
00EAFh C1                               POP       BC
00EB0h F1                               POP       AF
00EB1h 08                               EX        AF,AF'
00EB2h D9                               EXX                      ; JETZT NORMALER REGISTERSATZ
00EB3h FDE1                             POP       IY
00EB5h DDE1                             POP       IX
00EB7h D1                               POP       DE
00EB8h C1                               POP       BC
00EB9h F1                               POP       AF
00EBAh ED7BCEFE                         LD        SP,(SSAVE)     ; STACKPOINTER RESTAURIEREN
00EBEh 2ACCFE                           LD        HL,(PSAVE)     ; HL RESTAURIEREN
00EC1h E5                               PUSH      HL
00EC2h 2ACAFE                           LD        HL,(LSAVE)
00EC5h FB                               EI                       ; INTERRUPTS WIEDER FREIGEBEN
00EC6h                                                           ;------------------ENDE REGISTER ZURUECKLADEN--------
00EC6h C9                               RET       
00EC7h                                            
00EC7h                                            
00EC7h            CERROR:                         
00EC7h 21D00E                           LD        HL,SYNERRTXT
00ECAh CD1E01                           CALL      SOUT
00ECDh C39510                           JP        GETCM
00ED0h                                            
00ED0h            SYNERRTXT:                      
00ED0h 2057686174                       DEFM      " What?",BELL,0DH,0AH,'$'
00EDAh                                            
00EDAh                                            
00EDAh            FRET:                           
00EDAh 37                               SCF                      ; RETURN MIT CARRY
00EDBh 3F                               CCF                      ; GELOESCHT
00EDCh C9                               RET       
00EDDh                                            
00EDDh            SRET:                           
00EDDh 37                               SCF                      ; RETURN MIT CARRY GESETZT
00EDEh C9                               RET       
00EDFh                                            
00EDFh                                            
00EDFh            VALDG:                                         ;GUELTIGE EINGABEN PRUEFEN '0...9','A...F'
00EDFh 79                               LD        A,C
00EE0h FE30                             CP        '0'
00EE2h FADA0E                           JP        M,FRET
00EE5h FE39                             CP        '9'
00EE7h FADD0E                           JP        M,SRET
00EEAh CADD0E                           JP        Z,SRET
00EEDh FE41                             CP        'A'
00EEFh FADA0E                           JP        M,FRET
00EF2h FE47                             CP        'G'
00EF4h F2DA0E                           JP        P,FRET
00EF7h C3DD0E                           JP        SRET
00EFAh                                            
00EFAh                                            
00EFAh                                            
00EFAh            VALDL:                                         ;GUELTIGE EINGABEN PRUEFEN ',' ODER 'CR' ODER ' '
00EFAh 79                               LD        A,C
00EFBh FE2C                             CP        ','
00EFDh CADD0E                           JP        Z,SRET
00F00h FE0D                             CP        0DH
00F02h CADD0E                           JP        Z,SRET
00F05h FE20                             CP        ' '
00F07h CADD0E                           JP        Z,SRET
00F0Ah C3DA0E                           JP        FRET
00F0Dh                                            
00F0Dh            DISP_TIME:                      
00F0Dh                                                           ; GEBE UHRZEIT UND DATUM AUF DEN BILDSCHIRM
00F0Dh CDAE08                           CALL      READ_PHYS_TIME ; LESE ZEIT AUS UHR
00F10h 21820F                           LD        HL,TIMTXT1     ; DATUM TEXT AUS
00F13h CD2B26                           CALL      SP_OUT
00F16h 3A3CFF                           LD        A,(TIME_FIELD+4); MONAT
00F19h CD6D01                           CALL      NMOUT
00F1Ch 0E2F                             LD        C,'/'
00F1Eh CD3101                           CALL      CECHO
00F21h 3A3BFF                           LD        A,(TIME_FIELD+3)
00F24h CD6D01                           CALL      NMOUT
00F27h 0E2F                             LD        C,'/'
00F29h CD3101                           CALL      CECHO
00F2Ch 3A3EFF                           LD        A,(TIME_FIELD+6)
00F2Fh CD6D01                           CALL      NMOUT
00F32h 21930F                           LD        HL,TIMTXT2     ; GEBE TIME AUS
00F35h CD2B26                           CALL      SP_OUT
00F38h 3A3AFF                           LD        A,(TIME_FIELD+2); STUNDE
00F3Bh CD6D01                           CALL      NMOUT
00F3Eh 0E3A                             LD        C,':'
00F40h CD3101                           CALL      CECHO
00F43h 3A39FF                           LD        A,(TIME_FIELD+1); MINUTE
00F46h CD6D01                           CALL      NMOUT
00F49h 0E3A                             LD        C,':'
00F4Bh CD3101                           CALL      CECHO
00F4Eh 3A38FF                           LD        A,(TIME_FIELD) ; SEKUNDE
00F51h CD6D01                           CALL      NMOUT
00F54h CD2901                           CALL      CROUT
00F57h 3A32FF                           LD        A,(IO_JUMPERBYTE); IST GRIP ALS KONSOLE DEFINIERT?
00F5Ah B7                               OR        A
00F5Bh C0                               RET       NZ             ; RETURN WENN NICHT
00F5Ch 217E0F                           LD        HL,SETTT       ; SONST, SETZE GRIP-UHR
00F5Fh CD1E01                           CALL      SOUT
00F62h 3A3AFF                           LD        A,(TIME_FIELD+2)
00F65h C620                             ADD       A,20H
00F67h 4F                               LD        C,A
00F68h CD3101                           CALL      CECHO
00F6Bh 3A39FF                           LD        A,(TIME_FIELD+1)
00F6Eh C620                             ADD       A,20H
00F70h 4F                               LD        C,A
00F71h CD3101                           CALL      CECHO
00F74h 3A38FF                           LD        A,(TIME_FIELD)
00F77h C620                             ADD       A,20H
00F79h 4F                               LD        C,A
00F7Ah CD3101                           CALL      CECHO
00F7Dh C9                               RET       
00F7Eh                                            
00F7Eh 1B1B5524   SETTT:                DEFM      27,27,'U$'
00F82h 1650434638 TIMTXT1:              DEFM      16H,'PCF8583 Date : $'
00F93h 1E54696D65 TIMTXT2:              DEFM      1EH,'Time : $'
00F9Ch                                            
00F9Ch                                            
00F9Ch                                                           ; ------------ Ich weiß nicht, was das soll -------------
00F9Ch C5                               PUSH      BC
00F9Dh FE00                             CP        0
00F9Fh 2809                             JR        Z,L_0FAA
00FA1h 0600                             LD        B,0
00FA3h 04         L_0FA3:               INC       B
00FA4h 3D                               DEC       A
00FA5h 27                               DAA       
00FA6h C2A30F                           JP        NZ,L_0FA3
00FA9h 78                               LD        A,B
00FAAh C1         L_0FAA:               POP       BC
00FABh C9                               RET       
00FACh                                                           ; ------------ Ich weiß nicht, was das soll -------------
00FACh                                            
00FACh                                            
00FACh                                            
00FACh                                                           ; LESE HEX-ADRESSEN EIN
00FACh                                            
00FACh 2E03       GETNM:                LD        L,3            ; MAXIMAL 3 ADRESSEN EINLESEN
00FAEh 79                               LD        A,C            ; GEWUENSCHTE ANZAHL IN C-REG
00FAFh E603                             AND       03H            ; 0..3
00FB1h C8                               RET       Z              ; 0=KEINE EINGABE ERFORDERLICH
00FB2h                                            
00FB2h 67                               LD        H,A            ; SCHLEIFE FÜR ANZAHL ADRESSEN
00FB3h            GETNM1:                         
00FB3h CDFC0C                           CALL      GETHX
00FB6h D2C70E                           JP        NC,CERROR      ; FEHLERHAFTE EINGABE?
00FB9h C5                               PUSH      BC             ; WERT AUF DEM STACK ABLEGEN
00FBAh 2D                               DEC       L
00FBBh 25                               DEC       H              ; EIN WERT WENIGER EINZUGEBEN
00FBCh CAC80F                           JP        Z,GETNM3       ; ALLE ADRESSEN SIND EINGELESEN
00FBFh 7A                               LD        A,D            ; LETZTES EINGEGEBENES ZEICHEN
00FC0h            GETNM2:                         
00FC0h FE0D                             CP        0DH            ; 'CR' ?
00FC2h CAC70E                           JP        Z,CERROR
00FC5h C3B30F                           JP        GETNM1         ; NAECHSTEN WERT EINLESEN
00FC8h                                            
00FC8h 7A         GETNM3:               LD        A,D
00FC9h FE0D                             CP        0DH            ; LETZTES ZEICHEN 'CR'?
00FCBh C2C70E     GETNM4:               JP        NZ,CERROR
00FCEh 01FFFF                           LD        BC,0FFFFH
00FD1h 7D                               LD        A,L
00FD2h B7                               OR        A
00FD3h CADB0F                           JP        Z,GETNM6
00FD6h                                            
00FD6h C5         GETNM5:               PUSH      BC
00FD7h 2D                               DEC       L
00FD8h C2D60F                           JP        NZ,GETNM5
00FDBh C1         GETNM6:               POP       BC
00FDCh D1                               POP       DE
00FDDh E1                               POP       HL
00FDEh CDF10F                           CALL      HILO           ; RANGECHECK
00FE1h D2E60F                           JP        NC,GETNM7
00FE4h 54                               LD        D,H
00FE5h 5D                               LD        E,L
00FE6h E3         GETNM7:               EX        (SP),HL
00FE7h D5                               PUSH      DE
00FE8h C5                               PUSH      BC
00FE9h E5                               PUSH      HL
00FEAh 3D         GETNM8:               DEC       A
00FEBh F8                               RET       M
00FECh E1                               POP       HL
00FEDh E3                               EX        (SP),HL
00FEEh C3EA0F                           JP        GETNM8
00FF1h                                            
00FF1h                                            
00FF1h C5         HILO:                 PUSH      BC             ; BC RETTEN
00FF2h 47                               LD        B,A
00FF3h E5                               PUSH      HL             ; HL RETTEN
00FF4h 7A                               LD        A,D
00FF5h B3                               OR        E
00FF6h CA1210                           JP        Z,HILO_1       ; DE=0?
00FF9h 23                               INC       HL
00FFAh 7C                               LD        A,H
00FFBh B5                               OR        L              ; 
00FFCh CA1210                           JP        Z,HILO_1       ; HL=FFFFH?
00FFFh E1                               POP       HL             ; HL ZURUECK
01000h D5                               PUSH      DE             ; DE RETTEN
01001h 3EFF                             LD        A,0FFH
01003h AA                               XOR       D
01004h 57                               LD        D,A
01005h 3EFF                             LD        A,0FFH
01007h AB                               XOR       E
01008h 5F                               LD        E,A
01009h 13                               INC       DE
0100Ah 7D                               LD        A,L
0100Bh 83                               ADD       A,E
0100Ch 7C                               LD        A,H
0100Dh 8A                               ADC       A,D
0100Eh D1                               POP       DE             ; DE ZURUECK
0100Fh 78                               LD        A,B
01010h C1                               POP       BC             ; BC ZURUECK
01011h C9                               RET       
01012h                                            
01012h                                            
01012h E1         HILO_1:               POP       HL             ; HL ZURUECK
01013h 78                               LD        A,B
01014h C1                               POP       BC             ; BC ZURUECK
01015h C3DD0E                           JP        SRET           ; MIT FEHLER ZURUECK
01018h                                            
01018h                                            
01018h                                                           ; ------------ Ich weiß nicht, was das soll -------------
01018h                                            
01018h 013D10                           LD        BC,W_103D
0101Bh 11F0D8                           LD        DE,W_D8F0
0101Eh 3E2F       L_101E:               LD        A,B_2F
01020h E5         L_1020:               PUSH      HL
01021h 3C                               INC       A
01022h 19                               ADD       HL,DE
01023h 3004                             JR        NC,L_1029
01025h 33                               INC       SP
01026h 33                               INC       SP
01027h 18F7                             JR        L_1020
01029h D5         L_1029:               PUSH      DE
0102Ah C5                               PUSH      BC
0102Bh 4F                               LD        C,A
0102Ch CD3101                           CALL      CECHO
0102Fh C1                               POP       BC
01030h D1                               POP       DE
01031h E1                               POP       HL
01032h 0A                               LD        A,(BC)
01033h 5F                               LD        E,A
01034h 03                               INC       BC
01035h 0A                               LD        A,(BC)
01036h 57                               LD        D,A
01037h 03                               INC       BC
01038h 7B                               LD        A,E
01039h B2                               OR        D
0103Ah 20E2                             JR        NZ,L_101E
0103Ch C9                               RET       
0103Dh                                            
0103Dh                                            
0103Dh 18FC       W_103D:               JR        L_103B         ; TABELLE ??
0103Fh 9C                               SBC       A,H
01040h FF                               RST       38H
01041h F6FF                             OR        0FFH
01043h FF                               RST       38H
01044h FF                               RST       38H
01045h 00                               NOP       
01046h 00                               NOP       
01047h                                            
01047h                                                           ; ------------ Ich weiß nicht, was das soll Ende -------------
01047h                                            
01047h                                            
01047h            RWINP:                          
01047h                                                           ; LIEST DMA ADRESSE UND ANZAHL DER SEKTOREN EIN
01047h CDFC0C                           CALL      GETHX          ; LESE DMA ADRESSE
0104Ah D2C70E                           JP        NC,CERROR
0104Dh 7A                               LD        A,D            ; KEIN CR
0104Eh FE0D                             CP        0DH
01050h CAC70E                           JP        Z,CERROR       ; SPRUNG WENN DOCH
01053h ED4344FF                         LD        (DMAADR),BC    ; ABSPEICHERN
01057h CDFC0C                           CALL      GETHX          ; LESE ANZAHL DER SEKTOREN
0105Ah D2C70E                           JP        NC,CERROR
0105Dh 7A                               LD        A,D
0105Eh FE0D                             CP        0DH            ; MUSS CR SEIN
01060h C2C70E                           JP        NZ,CERROR
01063h 79                               LD        A,C
01064h 3246FF                           LD        (SECTCNT),A    ; ABSPEICHERN
01067h C9                               RET       
01068h                                            
01068h                                            
01068h            RST_VERTEILER:                  
01068h                                            
01068h                                                           ;---------------------------ANFANG REGISTER RETTEN-----
01068h 22CAFE                           LD        (LSAVE),HL
0106Bh E1                               POP       HL
0106Ch 22CCFE                           LD        (PSAVE),HL
0106Fh ED73CEFE                         LD        (SSAVE),SP     ; RETTE STACKPOINTER
01073h 31CAFE                           LD        SP,LSAVE       ; JETZT RETTEN DURCH PUSHBEFEHLE MOEGLICH
01076h F5                               PUSH      AF
01077h C5                               PUSH      BC
01078h D5                               PUSH      DE
01079h DDE5                             PUSH      IX             ; ZUSAETZLICH Z80 REGISTER
0107Bh FDE5                             PUSH      IY
0107Dh 08                               EX        AF,AF'
0107Eh D9                               EXX                      ; SCHALTE REGISTER  UM
0107Fh F5                               PUSH      AF
01080h C5                               PUSH      BC
01081h D5                               PUSH      DE
01082h E5                               PUSH      HL
01083h D9                               EXX                      ; REGISTER ZURUECK SCHALTEN
01084h 08                               EX        AF,AF'
01085h ED57                             LD        A,I            ; SAVE I UND R REGISTER
01087h 47                               LD        B,A
01088h ED5F                             LD        A,R
0108Ah 4F                               LD        C,A
0108Bh C5                               PUSH      BC
0108Ch                                                           ;                      PUSH      IX
0108Ch                                                           ;                      LD        IX,(PSAVE)     ; BREAKPOINT GESETZT?
0108Ch                                                           ;                      DEC       IX             ; IP -1
0108Ch                                                           ;                      LD        A,(IX)
0108Ch                                                           ;                      CP        0FFH           ; RST 38H?
0108Ch                                                           ;                      JR        NZ,RST_V1
0108Ch                                                           ;                      LD        (PSAVE),IX     ; ALTEN OPCODE WIEDERHERSTELLEN
0108Ch                                                           ;                      PUSH      HL
0108Ch                                                           ;                      PUSH      IX
0108Ch                                                           ;                      POP       HL             ; IP UMSPEICHERN
0108Ch                                                           ;                      PUSH      AF
0108Ch                                                           ;                      PUSH      BC             ; UND BREAKPOINT LOESCHEN
0108Ch                                                           ;                      PUSH      IY
0108Ch                                                           ;                      LD        B,5            ; 5 BREAKPOINT MÖGLICH
0108Ch                                                           ;                      LD        IY,BRTAB
0108Ch                                                           ;RST_V0:               LD        A,(IY)
0108Ch                                                           ;                      CP        L
0108Ch                                                           ;                      JR        NZ,RST_V01     ; KEINE UEBEREINSTIMMUNG
0108Ch                                                           ;                      LD        A,(IY+1)
0108Ch                                                           ;                      CP        H
0108Ch                                                           ;                      JR        NZ,RST_V01     ; KEINE UEBEREINSTIMMUNG
0108Ch                                            
0108Ch                                                           ;                      LD        A,(IY+2)       ; ALTEN OPCODE
0108Ch                                                           ;                      LD        (HL),A         ; WIEDER HERSTELLEN
0108Ch                                                           ;                      XOR       A              ; BREAKPOINT IN TABELLE LOESCHEN
0108Ch                                                           ;                      LD        (IY),A
0108Ch                                                           ;                      LD        (IY+1),A
0108Ch                                                           ;                      LD        (IY+2),A
0108Ch                                                           ;                      JR        RST_V02        ; GEFUNDEN -> FERTIG
0108Ch                                            
0108Ch                                                           ;RST_V01:              INC       IY             ; NAECHSTEN BREAKPOINT PRUEFEN
0108Ch                                                           ;                      INC       IY
0108Ch                                                           ;                      INC       IY
0108Ch                                                           ;                      DJNZ      RST_V0         ; BIS ALLE GEPRUEFT
0108Ch                                            
0108Ch                                                           ;RST_V02:              POP       IY
0108Ch                                                           ;                      POP       BC
0108Ch                                                           ;                      POP       IX
0108Ch                                                           ;                      POP       AF
0108Ch                                                           ;                      POP       HL
0108Ch                                                           ;                      CALL      REGDS          ; REGISTERSATZ ANZEIGEN
0108Ch                                                           ;---------------------------ENDE REGISTER RETTEN----
0108Ch                                            
0108Ch            RST_V1:                         
0108Ch                                            
0108Ch 21A12B                           LD        HL,SGNON       ; GEBE MONITOR-MELDUNG AUS
0108Fh CD1E01                           CALL      SOUT
01092h                                            
01092h                                            
01092h                                            
01092h CD2901     GETCOM:               CALL      CROUT
01095h                                            
01095h            GETCM:                          
01095h 21B6FE                           LD        HL,MSTAK
01098h F9                               LD        SP,HL
01099h 0E3A                             LD        C,':'
0109Bh CD3101                           CALL      CECHO
0109Eh CD4A01                           CALL      GETCH1
010A1h CD3101                           CALL      CECHO
010A4h 51                               LD        D,C            ; SAVE COMMAND
010A5h 21AB2B                           LD        HL,CMDMSG      ; ZEIGE AUF TEXT
010A8h 7A         GTC01:                LD        A,D
010A9h BE                               CP        (HL)           ; GLEICH
010AAh 280E                             JR        Z,GTC04
010ACh 23         GTC02:                INC       HL
010ADh 7E                               LD        A,(HL)         ; GLEICH 00H
010AEh FE00                             CP        0
010B0h CAC70E                           JP        Z,CERROR       ; DANN FEHLER
010B3h FE24                             CP        '$'
010B5h 20F5                             JR        NZ,GTC02       ; SUCHE
010B7h 23                               INC       HL             ; VERGLEICHE NAECHSTES KOMMANDO
010B8h 18EE                             JR        GTC01
010BAh 23         GTC04:                INC       HL             ; GEFUNDEN GEBE AUS
010BBh CD1E01                           CALL      SOUT
010BEh 7A                               LD        A,D
010BFh 4A                               LD        C,D
010C0h 011600                           LD        BC,NCMDS       ; C ENTHAELT SCHL.U.INDEXZAEHLER
010C3h 21142D                           LD        HL,CTAB
010C6h            GTC05:                          
010C6h BE                               CP        (HL)
010C7h CAD210                           JP        Z,GTC10
010CAh 23                               INC       HL
010CBh 0D                               DEC       C
010CCh C2C610                           JP        NZ,GTC05
010CFh C3C70E                           JP        CERROR
010D2h            GTC10:                          
010D2h 21E62C                           LD        HL,CADR
010D5h 09                               ADD       HL,BC
010D6h 09                               ADD       HL,BC
010D7h 7E                               LD        A,(HL)
010D8h 23                               INC       HL
010D9h 66                               LD        H,(HL)
010DAh 6F                               LD        L,A
010DBh E9                               JP        (HL)
010DCh                                            
010DCh                                                           ;-----------------------------------------------
010DCh                                                           ;(D)ump
010DCh                                            
010DCh            DCMD:                           
010DCh CDFC0C                           CALL      GETHX          ; LESE STARTADRESSE
010DFh 60                               LD        H,B
010E0h 69                               LD        L,C
010E1h 7A                               LD        A,D
010E2h 3810                             JR        C,DCM30
010E4h FE0D                             CP        CR             ; carriage return?
010E6h 2A28FF                           LD        HL,(DISPADR)
010E9h 200D                             JR        NZ,DCM33       ; SPRUNG WENN NOCH ENDADRESSE KOMMT
010EBh 11FF00     DCM31:                LD        DE,00FFH       ; KEINE ENDADRESSE, 100H WEITER
010EEh E5                               PUSH      HL             ; SAVE ANFAANG
010EFh 19                               ADD       HL,DE
010F0h EB                               EX        DE,HL
010F1h E1                               POP       HL
010F2h 1816                             JR        DCM05          ; AUSGABE KANN BEGINNEN
010F4h FE0D       DCM30:                CP        0DH
010F6h 28F3                             JR        Z,DCM31        ; KEINE ENDADRESSE
010F8h CDFC0C     DCM33:                CALL      GETHX          ; LESE ZWEITE ADRESSE
010FBh 7A                               LD        A,D
010FCh FE0D                             CP        0DH
010FEh C2C70E                           JP        NZ,CERROR
01101h 50                               LD        D,B
01102h 59                               LD        E,C
01103h CDF10F                           CALL      HILO
01106h 3002                             JR        NC,DCM05       ; HL>DE
01108h 54                               LD        D,H
01109h 5D                               LD        E,L
0110Ah            DCM05:                          
0110Ah CD2901                           CALL      CROUT
0110Dh CD6801                           CALL      HLOUT
01110h 0600                             LD        B,000H         ; ZAEHLER FUER ASCII AUSGABE
01112h            DCM10:                          
01112h 04                               INC       B              ; EIN ZEICHEN WEITER
01113h 0E20                             LD        C,' '
01115h CD3101                           CALL      CECHO
01118h 7E                               LD        A,(HL)
01119h CD6D01                           CALL      NMOUT
0111Ch CDD10C                           CALL      BREAK
0111Fh DA2811                           JP        C,DCM12
01122h CDF10F                           CALL      HILO
01125h D23511                           JP        NC,DCM15
01128h            DCM12:                          
01128h 23                               INC       HL
01129h CD4111                           CALL      DCM20
0112Ch CD2901                           CALL      CROUT
0112Fh 2228FF                           LD        (DISPADR),HL
01132h C39510                           JP        GETCM
01135h            DCM15:                          
01135h 23                               INC       HL
01136h 7D                               LD        A,L
01137h E60F                             AND       0FH
01139h C21211                           JP        NZ,DCM10
0113Ch CD4111                           CALL      DCM20
0113Fh 18C9                             JR        DCM05
01141h                                            
01141h D5         DCM20:                PUSH      DE             ; SAVE D
01142h E5                               PUSH      HL             ; SAVE H
01143h 0E20                             LD        C,' '
01145h CD0900                           CALL      CO
01148h 0E3E                             LD        C,'>'
0114Ah CD0900                           CALL      CO
0114Dh 48                               LD        C,B
0114Eh 2B         DCM23:                DEC       HL
0114Fh 10FD                             DJNZ      DCM23
01151h 41                               LD        B,C
01152h 7E         DCM21:                LD        A,(HL)
01153h FE20                             CP        20H
01155h 3806                             JR        C,DCM22
01157h FE7F                             CP        07FH
01159h 3002                             JR        NC,DCM22
0115Bh 1802                             JR        DCM24
0115Dh 3E2E       DCM22:                LD        A,'.'          ; DEFAULT FOR NON ASCII
0115Fh 4F         DCM24:                LD        C,A
01160h CD0900                           CALL      CO
01163h 23                               INC       HL
01164h 10EC                             DJNZ      DCM21
01166h E1                               POP       HL
01167h D1                               POP       DE
01168h C9                               RET       
01169h                                            
01169h                                                           ;----------------------------------------------
01169h                                            
01169h            GCMD:                                          ; PROGRAMMCOUNTER NEU LADEN UND ABLEGEN
01169h CDFC0C                           CALL      GETHX          ; STARTADRESSE EINLESEN
0116Ch D27E11                           JP        NC,GCM05       ; KEIN NEUER WERT
0116Fh 7A                               LD        A,D            ; LETZTES ZEICHEN
01170h FE0D                             CP        0DH            ; CR?
01172h C2C70E                           JP        NZ,CERROR      ; FEHLER
01175h 21CCFE                           LD        HL,PSAVE       ; STARTADRESSE LADEN
01178h 71                               LD        (HL),C         ; NEUE STARTADRESSE SPEICHERN
01179h 23                               INC       HL
0117Ah 70                               LD        (HL),B
0117Bh C38411                           JP        GCM10          ; WEITER
0117Eh            GCM05:                          
0117Eh 7A                               LD        A,D            ; LETZTES ZEICHEN
0117Fh FE0D                             CP        0DH            ; CR?
01181h C2C70E                           JP        NZ,CERROR      ; FEHLER
01184h            GCM10:                          
01184h C3A00E                           JP        RSTTF          ; REGISTER ZURUECKLADEN UND LOS
01187h                                            
01187h                                                           ;----------------------------------------------
01187h                                                           ;(M)ove
01187h                                            
01187h            MCMD:                           
01187h 0E03                             LD        C,3            ; 3 HEX-ADRESSEN EINLESEN
01189h CDAC0F                           CALL      GETNM
0118Ch C1                               POP       BC             ; 1. ADRESSE
0118Dh E1                               POP       HL             ; 2. ADRESSE
0118Eh D1                               POP       DE             ; 3. ADRESSE
0118Fh            MCM05:                          
0118Fh E5                               PUSH      HL
01190h 62                               LD        H,D
01191h 6B                               LD        L,E
01192h 7E                               LD        A,(HL)
01193h 60                               LD        H,B
01194h 69                               LD        L,C
01195h 77                               LD        (HL),A
01196h 03                               INC       BC
01197h 78                               LD        A,B
01198h B1                               OR        C
01199h CA9510                           JP        Z,GETCM
0119Ch 13                               INC       DE
0119Dh E1                               POP       HL
0119Eh CDF10F                           CALL      HILO
011A1h D29510                           JP        NC,GETCM
011A4h C38F11                           JP        MCM05
011A7h                                            
011A7h                                                           ;---------------------------------------------------
011A7h                                                           ; (S)ubstitute memory
011A7h                                            
011A7h            SCMD:                           
011A7h CDFC0C                           CALL      GETHX          ; Adresse lesen
011AAh C5                               PUSH      BC             ; nach HL kopieren
011ABh E1                               POP       HL
011ACh            SCM05:                          
011ACh 7A                               LD        A,D            ; bei Leerzeichen oder Komma weiter
011ADh FE20                             CP        ' '
011AFh CAB711                           JP        Z,SCM10
011B2h FE2C                             CP        ','
011B4h C29510                           JP        NZ,GETCM       ; Ende der Eingabe
011B7h            SCM10:                          
011B7h 7E                               LD        A,(HL)         ; alten Wert
011B8h CD6D01                           CALL      NMOUT          ; anzeigen
011BBh 0E2D                             LD        C,CNGPRMT      ; neuen Wert
011BDh CD3101                           CALL      CECHO          ; anfordern
011C0h CDFC0C                           CALL      GETHX          ; neuen Wert einlesen
011C3h D2C711                           JP        NC,SCM15
011C6h 71                               LD        (HL),C
011C7h            SCM15:                          
011C7h 23                               INC       HL
011C8h C3AC11                           JP        SCM05
011CBh                                            
011CBh                                                           ;---------------------------------------------------
011CBh                                            
011CBh            XCMD:                           
011CBh CD5401                           CALL      GETCH
011CEh 4F                               LD        C,A
011CFh CD3101                           CALL      CECHO
011D2h 79                               LD        A,C
011D3h FE0D                             CP        0DH            ; REGISTERSATZ KOMPLETT AUSGEBEN?
011D5h C2DE11                           JP        NZ,XCM05
011D8h CD4D0E                           CALL      REGDS
011DBh C39510                           JP        GETCM
011DEh            XCM05:                          
011DEh 4F                               LD        C,A
011DFh CD890E                           CALL      RGADR
011E2h C5                               PUSH      BC
011E3h E1                               POP       HL
011E4h 0E20                             LD        C,' '
011E6h CD3101                           CALL      CECHO
011E9h 79                               LD        A,C
011EAh 3249FF                           LD        (TEMP),A
011EDh            XCM10:                          
011EDh 3A49FF                           LD        A,(TEMP)
011F0h FE20                             CP        ' '
011F2h CAFA11                           JP        Z,XCM15
011F5h FE2C                             CP        ','
011F7h C29510                           JP        NZ,GETCM
011FAh            XCM15:                          
011FAh 7E                               LD        A,(HL)
011FBh B7                               OR        A
011FCh C20212                           JP        NZ,XCM18
011FFh C39210                           JP        GETCOM
01202h            XCM18:                          
01202h E5                               PUSH      HL
01203h 5E                               LD        E,(HL)
01204h 16FE                             LD        D,(REGS AND 0FF00H) SHR 8; SAVE ADRESSE
01206h 23                               INC       HL
01207h 46                               LD        B,(HL)
01208h D5                               PUSH      DE
01209h D5                               PUSH      DE
0120Ah E1                               POP       HL
0120Bh C5                               PUSH      BC
0120Ch 7E                               LD        A,(HL)
0120Dh CD6D01                           CALL      NMOUT
01210h F1                               POP       AF
01211h F5                               PUSH      AF
01212h B7                               OR        A
01213h CA1B12                           JP        Z,XCM20
01216h 2B                               DEC       HL
01217h 7E                               LD        A,(HL)
01218h CD6D01                           CALL      NMOUT
0121Bh            XCM20:                          
0121Bh 0E2D                             LD        C,CNGPRMT
0121Dh CD3101                           CALL      CECHO
01220h CDFC0C                           CALL      GETHX
01223h D23B12                           JP        NC,XCM30
01226h 7A                               LD        A,D
01227h 3249FF                           LD        (TEMP),A
0122Ah F1                               POP       AF
0122Bh E1                               POP       HL
0122Ch B7                               OR        A
0122Dh CA3212                           JP        Z,XCM25
01230h 70                               LD        (HL),B
01231h 2B                               DEC       HL
01232h            XCM25:                          
01232h 71                               LD        (HL),C
01233h            XCM27:                          
01233h 110300                           LD        DE,3
01236h E1                               POP       HL
01237h 19                               ADD       HL,DE
01238h C3ED11                           JP        XCM10
0123Bh            XCM30:                          
0123Bh 7A                               LD        A,D
0123Ch 3249FF                           LD        (TEMP),A
0123Fh D1                               POP       DE
01240h D1                               POP       DE
01241h C33312                           JP        XCM27
01244h                                            
01244h                                                           ;-----------------------------------------------
01244h                                            
01244h            CCMD:                           
01244h                                                           ; TESTET PLATTE IM ANGEGEBENEN LAUFWERK
01244h                                                           ; UND GIBT ERGEBNISSE AUF DEM BILDSCHIRM AUS
01244h                                            
01244h CD5401                           CALL      GETCH          ; WELCHES LAUFWERK?
01247h CD3101                           CALL      CECHO          ; GEBE ZEICHEN AUF CONSOLE
0124Ah 79                               LD        A,C            ; ZEICHEN IN AKKU
0124Bh FE48                             CP        'H'
0124Dh CA5C13                           JP        Z,CCMD_HD      ; -> HARDDISK
01250h FE68                             CP        'h'
01252h CA5C13                           JP        Z,CCMD_HD      ; -> HARDDISK
01255h F5                               PUSH      AF
01256h CDE70D                           CALL      DISKDA         ; BEFEHL ERLAUBT?
01259h F1                               POP       AF
0125Ah D641                             SUB       'A'            ; WANDLE LW. CHR. IN NUMMER
0125Ch DAC70E                           JP        C,CERROR       ; WENN KLEINER, FEHLER
0125Fh 0600                             LD        B,0
01261h FE04                             CP        4              ; GROESSER 'D'
01263h 380C                             JR        C,CCMD0
01265h D620                             SUB       B_20
01267h DAC70E                           JP        C,CERROR
0126Ah 0604                             LD        B,B_04
0126Ch FE04                             CP        B_04
0126Eh D2C70E                           JP        NC,CERROR      ; SPRUNG WENN JA
01271h                                            
01271h 4F         CCMD0:                LD        C,A            ; RETTE ALTE UNIT
01272h 3A19FF                           LD        A,(UNIT)
01275h F5                               PUSH      AF
01276h 79                               LD        A,C
01277h CDA801                           CALL      LOG_PHYS
0127Ah B0                               OR        B
0127Bh 3219FF                           LD        (UNIT),A       ; ZU TESTENDES LAUFWERK
0127Eh 0605                             LD        B,5            ; ANZAHL DER VERSUCHE
01280h                                            
01280h                                            
01280h C5         CCMD1:                PUSH      BC
01281h 2A19FF                           LD        HL,(UNIT)      ; RETTE UNIT UND TRACK
01284h E5                               PUSH      HL
01285h CD1005                           CALL      TEST
01288h E1                               POP       HL
01289h 2219FF                           LD        (UNIT),HL
0128Ch C1                               POP       BC             ; GET ZAEHLER
0128Dh B7                               OR        A              ; FEHLER AUFGETRETEN?
0128Eh 2826                             JR        Z,CCMD2        ; SPRUNG, WENN OK
01290h 10EE                             DJNZ      CCMD1          ; NOCH EIN VERSUCH?
01292h                                            
01292h F1                               POP       AF             ; HOLE ALTE UNIT
01293h 3219FF                           LD        (UNIT),A
01296h            CCMD5:                                         ; HIER AUCH EINSPRUNG FUER BOOT ERROR
01296h 219F12                           LD        HL,CHKERR      ; DRUCKE FEHLERMELDUNG
01299h CD1E01                           CALL      SOUT
0129Ch C39510                           JP        GETCM          ; NEUE EINGABE
0129Fh                                            
0129Fh 0D0A07     CHKERR:               DEFB      0DH,0AH,BELL
012A2h 204469736B                       DEFM      " Disk not correct"
012B3h 0D0A24                           DEFB      0DH,0AH,24H
012B6h                                            
012B6h                                            
012B6h                                            
012B6h F1         CCMD2:                POP       AF
012B7h 218C14                           LD        HL,CTXT1       ; DISK FORMAT AUSGEBEN
012BAh CD2B26                           CALL      SP_OUT
012BDh 3A3FFF                           LD        A,(TEST_TYPE)
012C0h E620                             AND       20H
012C2h 215615                           LD        HL,CTXT11      ; MAXI VORBELEGEN
012C5h 2803                             JR        Z,CCMD3
012C7h 215B15                           LD        HL,CTXT12      ; DOCH MINI
012CAh                                            
012CAh CD1E01     CCMD3:                CALL      SOUT
012CDh 219E14                           LD        HL,CTXT2       ; TWO SIDED BIT AUSGEBEN
012D0h CD2B26                           CALL      SP_OUT
012D3h 3A3FFF                           LD        A,(TEST_TYPE)
012D6h 07                               RLCA      
012D7h E601                             AND       01H
012D9h 212F15                           LD        HL,CTXT32      ; DOUBLE VORBELEGEN (=1)
012DCh 2803                             JR        Z,CCMD4        ; =0?
012DEh 212815                           LD        HL,CTXT31      ; DOCH SINGLE
012E1h                                            
012E1h CD1E01     CCMD4:                CALL      SOUT
012E4h 21B014                           LD        HL,CTXT3       ; DENSITY AUSGEBEN
012E7h CD2B26                           CALL      SP_OUT
012EAh 3A3FFF                           LD        A,(TEST_TYPE)
012EDh 212315                           LD        HL,CTXT22      ; HIGH VORBELEGEN (=1)
012F0h E640                             AND       40H
012F2h 2803                             JR        Z,CCMD6        ; =0?
012F4h 211F15                           LD        HL,CTXT21      ; DOCH LOW
012F7h                                            
012F7h CD1E01     CCMD6:                CALL      SOUT
012FAh 21C214                           LD        HL,CTXT4       ; SECTOR SIZE AUSGEBEN
012FDh CD2B26                           CALL      SP_OUT
01300h 3A3FFF                           LD        A,(TEST_TYPE)
01303h E603                             AND       03H            ; BIT 0 UND 1 AUSWERTEN
01305h 2600                             LD        H,0
01307h 6F                               LD        L,A            ; 0 - 3
01308h 29                               ADD       HL,HL          ; * 2
01309h 29                               ADD       HL,HL          ; * 4
0130Ah 29                               ADD       HL,HL          ; * 8 (8 CHAR./EINTRAG)
0130Bh 113615                           LD        DE,SEKTXT      ; TEXTTABELLE
0130Eh 19                               ADD       HL,DE          ; + OFFSET
0130Fh CD1E01                           CALL      SOUT
01312h                                            
01312h 21D514                           LD        HL,CTXT7       ; FIRST SECTOR AUSGEBEN
01315h CD2B26                           CALL      SP_OUT
01318h 3A41FF                           LD        A,(TEST_LSEK)
0131Bh CD5B01                           CALL      DEZOUT
0131Eh 21E814                           LD        HL,CTXT8       ; LAST SECTOR AUSGEBEN
01321h CD2B26                           CALL      SP_OUT
01324h 3A40FF                           LD        A,(TEST_MSEK)
01327h CD5B01                           CALL      DEZOUT
0132Ah 21FB14                           LD        HL,CTXT9       ; HEAD BYTE ID AUSGEBEN
0132Dh CD2B26                           CALL      SP_OUT
01330h 3A25FF                           LD        A,(REST+4)     ; AUS ERGEBNIS NEHMEN
01333h CD6D01                           CALL      NMOUT
01336h 210D15                           LD        HL,CTXT6       ; READY SIGNAL AUSGEBEN
01339h CD2B26                           CALL      SP_OUT
0133Ch CD7E02                           CALL      READY_MASK
0133Fh E60F                             AND       0FH            ; 
01341h 216415                           LD        HL,CTXT62      ; SIMULATED VORBELEGEN
01344h 2003                             JR        NZ,CCMD7
01346h 216015                           LD        HL,CTXT61      ; DOCH YES
01349h                                            
01349h CD1E01     CCMD7:                CALL      SOUT
0134Ch 3A59FF                           LD        A,(HD_DISKFLG)
0134Fh E6F9                             AND       0F9H
01351h F602                             OR        02H
01353h 3259FF                           LD        (HD_DISKFLG),A
01356h CDC101                           CALL      SETCMDT        ; CMD TABELLE VORBEREITEN
01359h C39210                           JP        GETCOM
0135Ch                                            
0135Ch                                            
0135Ch                                                           ; HARDDISK AUSGEWAEHLT
0135Ch                                            
0135Ch CDBC0A     CCMD_HD:              CALL      L_0ABC
0135Fh 205C                             JR        NZ,CCMD_HD1
01361h 21D013                           LD        HL,CTXT40      ; NO OF CYLINDERS
01364h CD2B26                           CALL      SP_OUT
01367h 2A6FFF                           LD        HL,(HD_NO_CYL)
0136Ah CDCA13                           CALL      CCMD_HD2       ; BYTE SWAP HL UND AUSGEBEN
0136Dh 21EA13                           LD        HL,CTXT41      ; NO OF HEADS
01370h CD2B26                           CALL      SP_OUT
01373h 3A71FF                           LD        A,(HD_NO_HEADS)
01376h CD6D01                           CALL      NMOUT
01379h 210614                           LD        HL,CTXT42      ; START RWC CYLINDER
0137Ch CD2B26                           CALL      SP_OUT
0137Fh 2A72FF                           LD        HL,(HD_RWC_CYL)
01382h CDCA13                           CALL      CCMD_HD2       ; BYTE SWAP HL UND AUSGEBEN
01385h 212014                           LD        HL,CTXT43      ; START PRECOM CYLINDER
01388h CD2B26                           CALL      SP_OUT
0138Bh 2A74FF                           LD        HL,(HD_PRE_CYL)
0138Eh CDCA13                           CALL      CCMD_HD2       ; BYTE SWAP HL UND AUSGEBEN
01391h 213A14                           LD        HL,CTXT44      ; ECC BYTE
01394h CD2B26                           CALL      SP_OUT
01397h 3A76FF                           LD        A,(HD_ECC_BYTE)
0139Ah CD6D01                           CALL      NMOUT
0139Dh 215614                           LD        HL,CTXT45      ; CONTROL BYTE
013A0h CD2B26                           CALL      SP_OUT
013A3h 3A77FF                           LD        A,(HD_CTRL_BYTE)
013A6h CD6D01                           CALL      NMOUT
013A9h 217214                           LD        HL,CTXT46      ; SECTROS PER TRACK
013ACh CD2B26                           CALL      SP_OUT
013AFh 2A5EFF                           LD        HL,(HD_SCTR_TRK)
013B2h CB3C                             SRL       H              ; DIVIDIERE DURCH 4
013B4h CB1D                             RR        L
013B6h CB3C                             SRL       H
013B8h CB1D                             RR        L
013BAh CD6801                           CALL      HLOUT
013BDh                                            
013BDh 3A59FF     CCMD_HD1:             LD        A,(HD_DISKFLG)
013C0h E6F9                             AND       0F9H
013C2h F604                             OR        04H
013C4h 3259FF                           LD        (HD_DISKFLG),A
013C7h C39210                           JP        GETCOM
013CAh                                            
013CAh 7D         CCMD_HD2:             LD        A,L            ; BYTE SWAP HL
013CBh 6C                               LD        L,H
013CCh 67                               LD        H,A
013CDh C36801                           JP        HLOUT          ; AUSGEBEN UND ZURÜCK
013D0h                                            
013D0h 016E6F2E20 CTXT40:               DEFM      01H,'no. of cylinders......: $'
013EAh 016E6F2E20 CTXT41:               DEFM      01H,'no. of heads..........:   $'
01406h 0173746172 CTXT42:               DEFM      01H,'start RWC cylinder....: $'
01420h 0173746172 CTXT43:               DEFM      01H,'start precom. cylinder: $'
0143Ah 0145434320 CTXT44:               DEFM      01H,'ECC byte .............:   $'
01456h 01636F6E74 CTXT45:               DEFM      01H,'control byte .........:   $'
01472h 0173656374 CTXT46:               DEFM      01H,'sectors per track ....: $'
0148Ch                                            
0148Ch 016469736B CTXT1:                DEFM      01H,'disk format...: $'
0149Eh 0174776F20 CTXT2:                DEFM      01H,'two sided bit.: $'
014B0h 0164656E73 CTXT3:                DEFM      01H,'density.......: $'
014C2h 0173656374 CTXT4:                DEFM      01H,'sector size...: #$'
014D5h 0166697273 CTXT7:                DEFM      01H,'first sector..: #$'
014E8h 016C617374 CTXT8:                DEFM      01H,'last sector...: #$'
014FBh 0168656164 CTXT9:                DEFM      01H,'head byte ID..: $'
0150Dh 0172656164 CTXT6:                DEFM      01H,'ready signal..: $'
0151Fh 6C6F7724   CTXT21:               DEFM      'low$'
01523h 6869676824 CTXT22:               DEFM      'high$'
01528h 73696E676C CTXT31:               DEFM      'single$'
0152Fh 646F75626C CTXT32:               DEFM      'double$'
01536h 3132382020 SEKTXT:               DEFM      '128    $'
0153Eh 3235362020                       DEFM      '256    $'
01546h 3531322020                       DEFM      '512    $'
0154Eh 3130323420                       DEFM      '1024   $'
01556h 6D61786924 CTXT11:               DEFM      'maxi$'
0155Bh 6D696E6924 CTXT12:               DEFM      'mini$'
01560h 79657324   CTXT61:               DEFM      'yes$'
01564h 73696D756C CTXT62:               DEFM      'simulated by index$'
01577h                                            
01577h                                            
01577h                                                           ;-----------------------------------------------
01577h                                            
01577h            OCMD:                           
01577h CDFC0C                           CALL      GETHX          ; LESE PORTADRESSE
0157Ah 7A                               LD        A,D            ; WAR TRENNZEICHEN CR?
0157Bh FE0D                             CP        0DH
0157Dh CAC70E                           JP        Z,CERROR       ; FEHLER WENN JA
01580h C5                               PUSH      BC             ; SAVE INTEGER
01581h CDFC0C                           CALL      GETHX          ; LESE DATA BYTE
01584h 7A                               LD        A,D            ; WAR TRENNZEICHEN CR?
01585h FE0D                             CP        0DH
01587h C2C70E                           JP        NZ,CERROR      ; FEHLER WENN NEIN
0158Ah 69                               LD        L,C
0158Bh C1                               POP       BC             ; RESTORE PORTADR.
0158Ch ED69                             OUT       (C),L          ; GEBE AUS
0158Eh C39510                           JP        GETCM
01591h                                            
01591h                                                           ;-----------------------------------------------
01591h                                            
01591h 0E48       H_BLANK:              LD        C,'H'          ; Gibt 'H' und Leerzeichen aus
01593h CD0900                           CALL      CO
01596h 0E20                             LD        C,' '
01598h CD0900                           CALL      CO
0159Bh C9                               RET       
0159Ch                                            
0159Ch                                                           ;-----------------------------------------------
0159Ch                                            
0159Ch            RCMD:                                          ; LESE SEKTOR IN SPEICHERBEREICH
0159Ch CD230E                           CALL      TST_UNIT       ; LAUFWERK VORGEWAEHLT?
0159Fh 280C                             JR        Z,RCMD1
015A1h CD9601                           CALL      PRINT_DRIVE    ; LAUFWERKNUMMER AUSGEBEN
015A4h CD4710                           CALL      RWINP          ; SPEICHERADRESSE UND SEKTORNUMMER EINLESEN
015A7h CD5C04                           CALL      READ           ; SEKTOR EINLESEN
015AAh C39510                           JP        GETCM
015ADh                                            
015ADh CD9115     RCMD1:                CALL      H_BLANK        ; GIB 'H ' AUS
015B0h CD4710                           CALL      RWINP          ; SPEICHERADRESSE UND SEKTORNUMMER EINLESEN
015B3h CD6C0A                           CALL      L_0A6C
015B6h C39510                           JP        GETCM
015B9h                                            
015B9h                                                           ;-----------------------------------------------
015B9h                                            
015B9h            WCMD:                                          ; SCHREIBE SPEICHERINHALT AUF SEKTOR
015B9h CD230E                           CALL      TST_UNIT       ; LAUFWERK VORGEWAEHLT?
015BCh 280C                             JR        Z,WCMD1
015BEh CD9601                           CALL      PRINT_DRIVE    ; LAUFWERKSNUMMER AUSGEBEN
015C1h CD4710                           CALL      RWINP          ; SPEICHERADRESSE UND SEKTORNUMMER EINLESEN
015C4h CD5404                           CALL      WRITE
015C7h C39510                           JP        GETCM
015CAh                                            
015CAh CD9115     WCMD1:                CALL      H_BLANK        ; GIB 'H ' AUS
015CDh CD4710                           CALL      RWINP          ; SPEICHERADRESSE UND SEKTORNUMMER EINLESEN
015D0h CD650A                           CALL      L_0A65
015D3h C39510                           JP        GETCM
015D6h                                            
015D6h                                                           ;-----------------------------------------------
015D6h                                            
015D6h            ICMD:                           
015D6h 0E01                             LD        C,1            ; 1 HEX-ADRESSE EINLESEN
015D8h CDAC0F                           CALL      GETNM
015DBh C1                               POP       BC             ; IN C STEHT PORT
015DCh ED78                             IN        A,(C)          ; LESE NACH A
015DEh 0E20                             LD        C,' '          ; GEBE BLANK AUS
015E0h F5                               PUSH      AF
015E1h CD0900                           CALL      CO
015E4h F1                               POP       AF
015E5h F5                               PUSH      AF
015E6h CD6D01                           CALL      NMOUT          ; GEBE HEX AUS
015E9h 0E20                             LD        C,' '          ; GEBE BLANK AUS
015EBh CD0900                           CALL      CO
015EEh F1                               POP       AF
015EFh 57                               LD        D,A            ; IN D FUER BITOUT
015F0h CD5619                           CALL      BITOUT
015F3h C39210                           JP        GETCOM
015F6h                                            
015F6h                                                           ;-----------------------------------------------
015F6h                                            
015F6h            ACMD:                                          ; SETZEN VON UNIT, TRACK, SIDE UND SECTOR
015F6h                                            
015F6h CD230E                           CALL      TST_UNIT       ; DISKETTE EINGELOGGT?
015F9h 283C                             JR        Z,ACMD_1       ; HD
015FBh CD9601                           CALL      PRINT_DRIVE    ; LAUFWERKNAME AUSGEBEN
015FEh 218116                           LD        HL,ATXT1       ; DISPLAY TRACK
01601h CD2B26                           CALL      SP_OUT
01604h 3A1AFF                           LD        A,(TRACK)      ; AKTUELLER TRACK
01607h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
0160Ah 321AFF                           LD        (TRACK),A      ; WERT SPEICEHRN
0160Dh CA9510                           JP        Z,GETCM        ; ENDE DER EINGABEN
01610h 218C16                           LD        HL,ATXT2       ; DISPLAY HEAD
01613h CD2B26                           CALL      SP_OUT
01616h 3A1BFF                           LD        A,(HEAD)       ; AKTUELLER HEAD
01619h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
0161Ch 321BFF                           LD        (HEAD),A       ; WERT SPEICHERN
0161Fh CA9510                           JP        Z,GETCM        ; ENDE DER EINGABEN
01622h 219716                           LD        HL,ATXT3       ; DISPLAY SECTOR
01625h CD2B26                           CALL      SP_OUT
01628h 3A1CFF                           LD        A,(SECTOR)     ; AKTUELLER SECTOR
0162Bh CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
0162Eh 321CFF                           LD        (SECTOR),A     ; WERT SPEICHERN
01631h CA9510                           JP        Z,GETCM        ; ENDE DER EINGABEN
01634h C39210                           JP        GETCOM         ; NEUER BEFEHL
01637h                                            
01637h 0E48       ACMD_1:               LD        C,'H'          ; LAUFWERKNAME 'H'
01639h CD0900                           CALL      CO
0163Ch 218116                           LD        HL,ATXT1       ; DISPLAY TRACK
0163Fh CD2B26                           CALL      SP_OUT
01642h 2A5AFF                           LD        HL,(HD_TRACK)  ; AKTUELLER TRACK HD
01645h CD650D                           CALL      HL_NEU_WRT     ; NEUEN WERT EINLESEN
01648h 225AFF                           LD        (HD_TRACK),HL  ; WERT SPEICHERN
0164Bh CA9510                           JP        Z,GETCM        ; ENDE DER EINGABE
0164Eh 218C16                           LD        HL,ATXT2       ; DISPLAY HEAD
01651h CD2B26                           CALL      SP_OUT
01654h 21A216                           LD        HL,ATXT4       ; LEERZEICHEN
01657h CD1E01                           CALL      SOUT
0165Ah 3A5CFF                           LD        A,(HD_HEAD)    ; AKTUELLER HEAD HD
0165Dh CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
01660h 325CFF                           LD        (HD_HEAD),A    ; WERT SPEICHERN
01663h CA9510                           JP        Z,GETCM        ; ENDE DER EINGABE
01666h 219716                           LD        HL,ATXT3       ; DISPLAY SECTOR
01669h CD2B26                           CALL      SP_OUT
0166Ch 21A216                           LD        HL,ATXT4       ; LEERZEICHEN
0166Fh CD1E01                           CALL      SOUT
01672h 3A5DFF                           LD        A,(HD_SECTOR)  ; AKTUELLER SECTOR HD
01675h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
01678h 325DFF                           LD        (HD_SECTOR),A  ; WERT SPEICHERN
0167Bh CA9510                           JP        Z,GETCM        ; ENDE DER EINGABE
0167Eh C39210                           JP        GETCOM         ; NEUER BEFEHL
01681h                                            
01681h 0154726163 ATXT1:                DEFM      01H,'Track..: $'
0168Ch 0148656164 ATXT2:                DEFM      01H,'Head...: $'
01697h 0153656374 ATXT3:                DEFM      01H,'Sector.: $'
016A2h 202024     ATXT4:                DEFM      '  $'
016A5h                                            
016A5h                                                           ;-----------------------------------------------
016A5h                                            
016A5h            BCMD:                           
016A5h CD4A01                           CALL      GETCH1         ; LAUFWERKNUMMER EINLESEN                                 
016A8h CD3101                           CALL      CECHO
016ABh FE0D                             CP        0DH            ; CR?
016ADh 2826                             JR        Z,BCMD_2       ; JA, DEFAULT
016AFh 0E10                             LD        C,10H          ; KENNUNG EPROM
016B1h FE45                             CP        'E'            ; EPROM-BOOT?
016B3h 2817                             JR        Z,BCMD_1       ; JA
016B5h 0E20                             LD        C,20H          ; KENNUNG HD
016B7h FE48                             CP        'H'            ; HD-BOOT?
016B9h 2811                             JR        Z,BCMD_1
016BBh FE30                             CP        '0'            ; KENNUNG '0'
016BDh DAC70E                           JP        C,CERROR
016C0h FE34                             CP        '4'            ; KENNUNG '4'
016C2h D2C70E                           JP        NC,CERROR
016C5h E603                             AND       03H            ; MASKIERE FLOPPY NR
016C7h 3250FF                           LD        (TEMP_LOG_DRIVE),A; FLOPPYLAUFWERK SPEICHERN
016CAh 1809                             JR        BCMD_2
016CCh                                            
016CCh 3A50FF     BCMD_1:               LD        A,(TEMP_LOG_DRIVE); 
016CFh E603                             AND       03H            ; MASKIEREN
016D1h B1                               OR        C              ; KENNUNG EINSPEICHERN
016D2h 3250FF                           LD        (TEMP_LOG_DRIVE),A; ABSPEICHERN
016D5h                                            
016D5h 3A50FF     BCMD_2:               LD        A,(TEMP_LOG_DRIVE)
016D8h 4F                               LD        C,A
016D9h E610                             AND       10H
016DBh C26C17                           JP        NZ,BCMD_7      ; EPROM-BOOT
016DEh 79                               LD        A,C
016DFh E620                             AND       20H
016E1h C2C117                           JP        NZ,BCMD_9      ; HD-BOOT
016E4h                                            
016E4h                                                           ; ----------------- FLOPPY-BOOT -----------------------------------
016E4h                                            
016E4h CDE70D                           CALL      DISKDA         ; FDC DA?
016E7h AF                               XOR       A
016E8h 3242FF                           LD        (TEST_TRACK),A ; ERSTE TESTSPUR IST 0
016EBh CDA801                           CALL      LOG_PHYS       ; UMRECHNUNG LOG -> PHYS LAUFWERK
016EEh 3219FF                           LD        (UNIT),A
016F1h 0602                             LD        B,02           ; 2 MAL VERSUCHEN
016F3h C5         BCMD_3:               PUSH      BC
016F4h CD1005                           CALL      TEST           ; SETZE CONTROLLER AUF MINI ODER MAXI
016F7h C1                               POP       BC
016F8h B7                               OR        A              ; FEHLER AUFGETRETEN?
016F9h 2805                             JR        Z,BCMD_4       ; SPRUNG, WENN NEIN
016FBh 10F6                             DJNZ      BCMD_3         ; NOCH EIN VERSUCH?
016FDh C39612                           JP        CCMD5          ; GEBE FEHLERMELDUNG AUS
01700h                                            
01700h CDC101     BCMD_4:               CALL      SETCMDT        ; SETZE CMDTABELLE
01703h AF                               XOR       A              ; SETZE SPUR NULL
01704h 321AFF                           LD        (TRACK),A
01707h 321BFF                           LD        (HEAD),A       ; HEAD NULL
0170Ah 3A41FF                           LD        A,(TEST_LSEK)
0170Dh 321CFF                           LD        (SECTOR),A     ; NIEDRIGSTE SEKTORNUMMER IN SEKTOR
01710h 2100FA                           LD        HL,BOOTADR
01713h 2244FF                           LD        (DMAADR),HL
01716h 3E01                             LD        A,01H          ; UEBERTRAGE EINEN SEKTOR
01718h 3246FF                           LD        (SECTCNT),A
0171Bh                                                           ; OK, ALLE WERTE SIND GESETZT
0171Bh CD5C04                           CALL      READ           ; LESE
0171Eh B7                               OR        A              ; FEHLER AUFGETRETEN?
0171Fh C2960B                           JP        NZ,BOOTERR
01722h 2100FA                           LD        HL,BOOTADR     ; KOPIERE DIE ERSTEN 128 BYTE
01725h 1180FD                           LD        DE,BOOTADR+380H; NACH HINTEN
01728h 018000                           LD        BC,128
0172Bh EDB0                             LDIR      
0172Dh 2106FA                           LD        HL,BOOTADR+6   ; PRUEFE, OB "PROF-180X" BOOTDISK IM LAUFWERK
01730h 115617                           LD        DE,PROF_STRING
01733h 0609                             LD        B,09H          ; 9 ZEICHEN PRUEFEN
01735h 1A         BCMD_5:               LD        A,(DE)
01736h BE                               CP        (HL)
01737h 200D                             JR        NZ,BCMD_6      ; Bei Fehler Meldung ausgeben
01739h 23                               INC       HL
0173Ah 13                               INC       DE
0173Bh 10F8                             DJNZ      BCMD_5
0173Dh 210000                           LD        HL,0
01740h 2257FF                           LD        (BOOT_NAME),HL
01743h C380FD                           JP        BOOTADR+380H   ; OK Sprung in Bootcode
01746h 214F17     BCMD_6:               LD        HL,FD_BOOT_ERR
01749h CD1E01                           CALL      SOUT
0174Ch C39210                           JP        GETCOM
0174Fh                                            
0174Fh 0D0A07204E FD_BOOT_ERR:          DEFM      0DH,0AH,07H,' No '
01756h 50524F462D PROF_STRING:          DEFM      'PROF-180X boot disk',0DH,0AH,'$'
0176Ch                                            
0176Ch                                            
0176Ch                                                           ; ------------------------------------------------------------------------------------
0176Ch                                            
0176Ch            BCMD_7:                                        ; EPROM-BOOT
0176Ch 2A9200                           LD        HL,(PATCH)     ; KENNUNG EPROM-BOOT 
0176Fh 7C                               LD        A,H
01770h B5                               OR        L
01771h 282D                             JR        Z,BCMD_8       ; FEHLER
01773h 3A56FF                           LD        A,(RAMCHIPS)   ; GENUEGEND RAM FUER RAM-DISK?
01776h B7                               OR        A
01777h 2827                             JR        Z,BCMD_8       ; NEIN -> FEHLER
01779h 2257FF                           LD        (BOOT_NAME),HL
0177Ch 3EF0                             LD        A,0F0H         ; WAIT-STATES MEMORY FUER EPROM SETZEN
0177Eh ED3932                           OUT0      (32H),A        ; DMA/WAIT Control Register
01781h 3E0E                             LD        A,B_0E
01783h D3D8                             OUT       (P_LS259),A
01785h 21E826                           LD        HL,DISKPAGE-1
01788h 11E826                           LD        DE,DISKPAGE-1
0178Bh 018DD1                           LD        BC,53645
0178Eh EDB0                             LDIR      
01790h 3E0F                             LD        A,0FH
01792h D3D8                             OUT       (P_LS259),A
01794h 3A08FF                           LD        A,(READY_BYTE)
01797h E6F0                             AND       0F0H           ; WAIT-STATES MEMORY MASKIEREN
01799h ED3932                           OUT0      (32H),A        ; DMA/WAIT Control Register
0179Ch                                            
0179Ch 2A9000                           LD        HL,(EPR_BOOT)  ; Lade EPROM-Boot Adresse
0179Fh E9                               JP        (HL)           ; Sprung zur Bootroutine
017A0h                                            
017A0h 21A917     BCMD_8:               LD        HL,EP_BOOT_ERR_TXT
017A3h CD1E01                           CALL      SOUT
017A6h C39210                           JP        GETCOM
017A9h                                            
017A9h 0D0A074550 EP_BOOT_ERR_TXT:      DEFM      0DH,0AH,07H,'EPROM boot failure',0DH,0AH,'$'
017C1h                                            
017C1h                                                           ; --------------------------------------------------------------------------------------
017C1h                                            
017C1h            BCMD_9:                                        ; HD-BOOT
017C1h CDBC0A                           CALL      L_0ABC
017C4h C29210                           JP        NZ,GETCOM
017C7h 21FFFF                           LD        HL,0FFFFH
017CAh 2257FF                           LD        (BOOT_NAME),HL
017CDh 218001                           LD        HL,0180H
017D0h 2228FF                           LD        (DISPADR),HL
017D3h C300FC                           JP        L_FC00
017D6h                                            
017D6h                                            
017D6h                                            
017D6h                                                           ;---------------------------------------------------------------------------------------
017D6h                                            
017D6h            LCMD:                           
017D6h                                                           ; ZEIGE DATUM UND ZEIT AN
017D6h CD0D0F                           CALL      DISP_TIME
017D9h C39510                           JP        GETCM
017DCh                                            
017DCh                                            
017DCh                                            
017DCh            NCMD:                           
017DCh                                                           ; SETZE UHRZEIT UND DATUM
017DCh 216818                           LD        HL,CITXT1      ; LESE DATUM EIN
017DFh CD1E01                           CALL      SOUT
017E2h CD340D                           CALL      GETDEZ         ; MONAT
017E5h FE2F                             CP        '/'
017E7h C2C70E                           JP        NZ,CERROR      ; FALSCHES TRENNZEICHEN
017EAh                                            
017EAh 7D                               LD        A,L
017EBh FE00                             CP        0              ; MONAT ZWISCHEN 1 UND 12
017EDh CAC70E                           JP        Z,CERROR
017F0h FE13                             CP        13H
017F2h D2C70E                           JP        NC,CERROR
017F5h 323CFF                           LD        (TIME_FIELD+4),A; MONAT WEG
017F8h                                            
017F8h CD340D                           CALL      GETDEZ         ; TAG
017FBh FE2F                             CP        '/'
017FDh C2C70E                           JP        NZ,CERROR
01800h 7D                               LD        A,L
01801h FE00                             CP        0              ; TAG ZWISCHEN 1 UND 31
01803h CAC70E                           JP        Z,CERROR
01806h FE32                             CP        32H
01808h D2C70E                           JP        NC,CERROR
0180Bh 323BFF                           LD        (TIME_FIELD+3),A; TAG WEG
0180Eh                                            
0180Eh CD340D                           CALL      GETDEZ         ; JAHR
01811h FE0D                             CP        0DH
01813h C2C70E                           JP        NZ,CERROR
01816h 7D                               LD        A,L
01817h 323EFF                           LD        (TIME_FIELD+6),A; JAHR WEG
0181Ah                                            
0181Ah                                                           ; UHRZEIT EINLESEN
0181Ah 218C18                           LD        HL,CITXT2
0181Dh CD1E01                           CALL      SOUT
01820h CD340D                           CALL      GETDEZ         ; STUNDE
01823h FE3A                             CP        ':'
01825h C2C70E                           JP        NZ,CERROR
01828h 7D                               LD        A,L
01829h FE24                             CP        24H            ; STUNDE MAX. 24
0182Bh D2C70E                           JP        NC,CERROR
0182Eh 323AFF                           LD        (TIME_FIELD+2),A; STUNDE WEG
01831h                                            
01831h CD340D                           CALL      GETDEZ         ; MINUTE
01834h FE3A                             CP        ':'
01836h C2C70E                           JP        NZ,CERROR
01839h 7D                               LD        A,L
0183Ah FE60                             CP        60H            ; MINUTE MAX. 60
0183Ch D2C70E                           JP        NC,CERROR
0183Fh 3239FF                           LD        (TIME_FIELD+1),A; MINUTE WEG
01842h                                            
01842h CD340D                           CALL      GETDEZ         ; SEKUNDE
01845h FE0D                             CP        0DH
01847h C2C70E                           JP        NZ,CERROR
0184Ah 7D                               LD        A,L
0184Bh FE60                             CP        60H            ; SEKUNDE MAX: 60
0184Dh D2C70E                           JP        NC,CERROR
01850h 3238FF                           LD        (TIME_FIELD),A ; SEKUNDE WEG
01853h                                            
01853h                                                           ; SETZE DIE ZEIT
01853h 21AD18                           LD        HL,CITXT3
01856h CD1E01                           CALL      SOUT
01859h CD5401                           CALL      GETCH          ; WARTE AUF IRGEND EIN ZEICHEN
0185Ch CDE508                           CALL      SET_PHYS_TIME  ; DATUM/UHRZEIT AN PCF8583 SENDEN
0185Fh CD2901                           CALL      CROUT
01862h CD0D0F                           CALL      DISP_TIME
01865h C39210                           JP        GETCOM
01868h                                            
01868h                                            
01868h 0D0A0A2045 CITXT1:               DEFM      0DH,0AH,0AH," Enter today's date (MM/DD/YY): $"
0188Ch 20456E7465 CITXT2:               DEFM      " Enter the time (HH:MM:SS):     $"
018ADh 2050726573 CITXT3:               DEFM      " Press any key to set time$"
018C8h                                            
018C8h                                                           ;---------------------------------------------------------------------------------------
018C8h                                            
018C8h            FCMD:                           
018C8h 0E03                             LD        C,3            ; HOLE 3 WERTE VON DER CONSOLE
018CAh CDAC0F                           CALL      GETNM
018CDh C1                               POP       BC             ; FUELL BYTE
018CEh D1                               POP       DE             ; END WERT
018CFh E1                               POP       HL             ; ANFANGSWERT
018D0h 71         FCMD1:                LD        (HL),C         ; FUELLE BYTE
018D1h CDF10F                           CALL      HILO           ; ENDE ERREICHT?
018D4h DA9510                           JP        C,GETCM
018D7h 23                               INC       HL
018D8h C3D018                           JP        FCMD1
018DBh                                            
018DBh                                                           ;---------------------------------------------------------------------------------------
018DBh                                            
018DBh            VCMD:                           
018DBh                                                           ; VERGLEICHT ZWEI SPEICHERBEREICHE MITEINANDER
018DBh 0E03                             LD        C,3            ; LESE DREI ADRESSEN EIN
018DDh CDAC0F                           CALL      GETNM
018E0h C1                               POP       BC             ; ZWEITER BLOCKANFANG
018E1h D1                               POP       DE             ; ERSTES BLOCKENDE
018E2h E1                               POP       HL             ; ERSTER BLOCKANFANG
018E3h 0A         VCMD1:                LD        A,(BC)         ; LESE BYTE AUS BLOCK 2
018E4h BE                               CP        (HL)           ; VERGLEICHE MIT ERSTEM BLOCK
018E5h C41219                           CALL      NZ,VCMD2       ; GEBE UNGLEICHE ADDRESSEN AUS
018E8h CDF10F                           CALL      HILO           ; ENDE ERREICHT ?
018EBh DA9510                           JP        C,GETCM        ; OK, ENDE
018EEh 23                               INC       HL
018EFh 03                               INC       BC
018F0h C3E318                           JP        VCMD1          ; VERGL. NAECHSTES BYTE
018F3h                                            
018F3h                                                           ;---------------------------------------------------------------------------------------
018F3h                                            
018F3h                                            
018F3h 0E02       TCMD:                 LD        C,2            ; LESE ANFANG UND ENDADDRESSE
018F5h CDAC0F                           CALL      GETNM
018F8h D1                               POP       DE
018F9h E1                               POP       HL
018FAh 4E         TCMD1:                LD        C,(HL)
018FBh 79                               LD        A,C            ; LESE SPEICHERSTELLE
018FCh 2F                               CPL                      ; NEGIERE
018FDh 77                               LD        (HL),A         ; SCHREIBE IN ZELLE
018FEh 060F                             LD        B,15           ; WARTE ETWAS
01900h 10FE       TCMD2:                DJNZ      TCMD2
01902h 7E                               LD        A,(HL)         ; LESE WIEDER
01903h 71                               LD        (HL),C         ; ORGINAL BYTE ZURUECK
01904h 2F                               CPL                      ; A SOLL GLEICH C SEIN
01905h A9                               XOR       C              ; SETZE ALL UNGLEICHEN BITS
01906h C43C19                           CALL      NZ,FBYTOUT     ; GEBE FEHLERHAFTES BYTE AUS
01909h CDF10F                           CALL      HILO           ; ENDE?
0190Ch DA9510                           JP        C,GETCM        ; SPRUNG WENN JA
0190Fh 23                               INC       HL             ; TESTE NAECHSTES BYTE
01910h 18E8                             JR        TCMD1          ; LOOP
01912h                                            
01912h                                                           ;---------------------------------------------------------------------------------------
01912h                                            
01912h E5         VCMD2:                PUSH      HL
01913h D5                               PUSH      DE
01914h C5                               PUSH      BC             ; RETTE ALLE ADRESSEN
01915h CD2F19                           CALL      DISPMEM
01918h 0E20                             LD        C,' '
0191Ah CD3101                           CALL      CECHO
0191Dh E1                               POP       HL
0191Eh E5                               PUSH      HL
0191Fh CD2F19                           CALL      DISPMEM
01922h CD2901                           CALL      CROUT
01925h CDD10C                           CALL      BREAK
01928h DA9510                           JP        C,GETCM
0192Bh C1                               POP       BC
0192Ch D1                               POP       DE
0192Dh E1                               POP       HL
0192Eh C9                               RET       
0192Fh                                            
0192Fh                                            
0192Fh            DISPMEM:                        
0192Fh                                                           ; INPUT: HL
0192Fh                                                           ; ZEIGT HL UND (HL) AUF DEM BILDSCHIRM AN
0192Fh                                                           ; ZERSROERT A,B,C,FF'S
0192Fh CD6801                           CALL      HLOUT
01932h 0E3D                             LD        C,'='
01934h CD3101                           CALL      CECHO
01937h 7E                               LD        A,(HL)
01938h CD6D01                           CALL      NMOUT
0193Bh C9                               RET       
0193Ch                                            
0193Ch                                            
0193Ch E5         FBYTOUT:              PUSH      HL
0193Dh D5                               PUSH      DE
0193Eh 57                               LD        D,A            ; RETTE AKKU
0193Fh CD6801                           CALL      HLOUT
01942h 0E20                             LD        C,' '          ; GEBE NACH ADRRESE TRENNZEICHEN AUS
01944h CD0900                           CALL      CO
01947h CD5619                           CALL      BITOUT         ; GEBE BITFOLGE AUS
0194Ah CD2901                           CALL      CROUT
0194Dh CDD10C                           CALL      BREAK          ; ABBRUCH
01950h DA9510                           JP        C,GETCM        ; SPRUNG ZUM MONITOR WENN JA
01953h D1                               POP       DE
01954h E1                               POP       HL
01955h C9                               RET       
01956h                                            
01956h                                            
01956h            BITOUT:                         
01956h                                                           ; GIBT 8 BIT IN REG.D AUS
01956h                                                           ; ZERSTOERT A,B,C,D,E
01956h 0608                             LD        B,8            ; GEBE 8 BIT AUS
01958h CB02       BITOUT1:              RLC       D              ; SCHIEBE IN CARRY
0195Ah 3E30                             LD        A,'0'          ; ASCII 0
0195Ch 1E00                             LD        E,0
0195Eh 8B                               ADC       A,E            ; CARRY ALS ASCII AUSGEBEN
0195Fh 4F                               LD        C,A
01960h CD0900                           CALL      CO
01963h 10F3                             DJNZ      BITOUT1
01965h C9                               RET       
01966h                                                           ;---------------------------------------------------------------------------------------
01966h                                            
01966h            HCMD:                           
01966h 218619                           LD        HL,HCMTXT      ; VORHANDENE BEFEHLE ANZEIGEN
01969h CD1E01                           CALL      SOUT
0196Ch 21AA2B                           LD        HL,CMDMSG-1    ; BEFEHLSBESCHREIBUNGSTEXTE
0196Fh                                            
0196Fh 23         HCMD1:                INC       HL
01970h CD2901                           CALL      CROUT
01973h 7E                               LD        A,(HL)
01974h B7                               OR        A              ; ENDE ERREICHT?
01975h CA9510                           JP        Z,GETCM
01978h                                            
01978h 0605                             LD        B,5
0197Ah 0E20                             LD        C,' '
0197Ch CD3101     HCMD2:                CALL      CECHO
0197Fh 10FB                             DJNZ      HCMD2
01981h CD1E01                           CALL      SOUT
01984h 28E9                             JR        Z,HCMD1
01986h                                            
01986h 0D0A0A666F HCMTXT:               DEFM      00DH,00AH,00AH,"following commands are available:",00H,0AH,"$"
019ADh                                            
019ADh                                                           ;---------------------------------------------------------------------------------------
019ADh                                            
019ADh            ECMD:                           
019ADh 21DB19                           LD        HL,ETXT1       ; EPROM TEST DATEN AUSGEBEN
019B0h CD2B26                           CALL      SP_OUT
019B3h 3E2D                             LD        A,2DH          ; FESTE WERTE AUSGEBEN
019B5h CD6D01                           CALL      NMOUT
019B8h 3E73                             LD        A,73H
019BAh CD6D01                           CALL      NMOUT
019BDh 210F1A                           LD        HL,ETXT3
019C0h CD2B26                           CALL      SP_OUT
019C3h 3E0A                             LD        A,0AH
019C5h CD6D01                           CALL      NMOUT
019C8h AF                               XOR       A
019C9h CD6D01                           CALL      NMOUT
019CCh 21F519                           LD        HL,ETXT2
019CFh CD2B26                           CALL      SP_OUT
019D2h 2A4DFF                           LD        HL,(TYPELIST)
019D5h CD6801                           CALL      HLOUT
019D8h C39210                           JP        GETCOM
019DBh                                            
019DBh                                            
019DBh 08656E6420 ETXT1:                DEFM      08H,"end location..........: $"
019F5h 0863686563 ETXT2:                DEFM      08H,"checksum..............: $"
01A0Fh 0866697273 ETXT3:                DEFM      08H,"first bank 0 location.: $"
01A29h                                            
01A29h                                                           ;---------------------------------------------------------------------------------------
01A29h                                            
01A29h            KCMD:                           
01A29h                                                           ; GIBT ALLE KONSOLENEINGABEN UNVERAENDERT AUS
01A29h                                                           ; ESCAPE MIT CONTROL-C
01A29h 213F1A                           LD        HL,KCMDTXT
01A2Ch CD1E01                           CALL      SOUT
01A2Fh CD0600     KCMD1:                CALL      CI             ; LESE ZEICHEN
01A32h FE03                             CP        3              ; CONTROL-C?
01A34h 2806                             JR        Z,KCMD2        ; DANN ENDE
01A36h 4F                               LD        C,A
01A37h CD0900                           CALL      CO             ; SONST GEBE ZEICHEN AUS
01A3Ah 18F3                             JR        KCMD1
01A3Ch C39210     KCMD2:                JP        GETCOM
01A3Fh                                            
01A3Fh                                            
01A3Fh                                            
01A3Fh 2028657363 KCMDTXT:              DEFM      " (escape with ",5EH,43H,")",0DH,0AH,0DH,0AH,'$'
01A55h                                                           ; ASiDE uebersetzt ^C !!!
01A55h                                            
01A55h                                                           ;---------------------------------------------------------------------------------------
01A55h                                            
01A55h            UCMD:                           
01A55h                                            
01A55h                                                           ; Auswahlmöglichkeiten zeigen
01A55h                                            
01A55h 21E61D                           LD        HL,UCMTX1
01A58h CD1E01                           CALL      SOUT
01A5Bh CD4A01                           CALL      GETCH1         ; BEFEHL EINLESEN
01A5Eh CDDF1D                           CALL      UCMD90         ; ZEICHEN SPIEGELN
01A61h                                            
01A61h                                                           ; Befehl auswerten
01A61h                                            
01A61h FE30                             CP        '0'
01A63h DA9210                           JP        C,GETCOM       ; ungültige Eingabe
01A66h FE34                             CP        '4'
01A68h DA911A                           JP        C,UCM_0_3      ; Unterbefehl 0-3
01A6Bh FE41                             CP        'A'
01A6Dh DA9210                           JP        C,GETCOM       ; ungültige Eingabe
01A70h FE43                             CP        'C'
01A72h DA6A1B                           JP        C,UCM_B        ; Unterbefehl B
01A75h FE43                             CP        'C'
01A77h CAF61B                           JP        Z,UCM_C        ; Unterbefehl C
01A7Ah FE4D                             CP        'M'
01A7Ch CAAF1C                           JP        Z,UCM_M        ; Unterbefehl M
01A7Fh FE57                             CP        'W'
01A81h CADB1C                           JP        Z,UCM_W        ; Unterbefehl W
01A84h FE55                             CP        'U'
01A86h CA2B1D                           JP        Z,UCM_U        ; Unterbefehl U
01A89h FE49                             CP        'I'
01A8Bh CA791D                           JP        Z,UCM_I        ; Unterbefehl I
01A8Eh C39210                           JP        GETCOM
01A91h                                            
01A91h                                            
01A91h            UCM_0_3:                        
01A91h F5                               PUSH      AF
01A92h 210C1E                           LD        HL,UCMTX2      ; Data for Drive?
01A95h CD1E01                           CALL      SOUT
01A98h F1                               POP       AF
01A99h CDDF1D                           CALL      UCMD90         ; Zeichen Spiegeln
01A9Ch D630                             SUB       '0'            ; Umrechnung Laufwerksnummer
01A9Eh 3249FF                           LD        (TEMP),A       ; Rette Laufwerksnummer
01AA1h 6F                               LD        L,A
01AA2h 2600                             LD        H,0
01AA4h 29                               ADD       HL,HL          ; 2 BYTE JE LAUFWERK
01AA5h 1100FF                           LD        DE,SPECD_WORD  ; ANFANG TABELLE 4 LAUFWERKE
01AA8h 19                               ADD       HL,DE          ; + 0FF00H
01AA9h 2235FF                           LD        (ERMSG),HL     ; LAUFWERKSZEIGER SPEICHERN
01AACh                                            
01AACh 21211E                           LD        HL,UCMTX3      ; STEPRATE?
01AAFh CD2B26                           CALL      SP_OUT
01AB2h 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER WIEDER LADEN
01AB5h 7E                               LD        A,(HL)         ; 
01AB6h 07                               RLCA                     ; OBERE 4 BIT IN UNTERE 4 BIT VERSCHIEBEN
01AB7h 07                               RLCA      
01AB8h 07                               RLCA      
01AB9h 07                               RLCA      
01ABAh 2F                               CPL                      ; BILDE COMPLEMENT
01ABBh E60F                             AND       0FH            ; MASKIEREN
01ABDh 3C                               INC       A
01ABEh CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01AC1h F5                               PUSH      AF
01AC2h 3D                               DEC       A
01AC3h 2F                               CPL                      ; BILDE WIEDER COMPLEMENT
01AC4h 0F                               RRCA                     ; SCHIEBE UNTERE 4 BIT WIEDER IN OBERE 4 BIT
01AC5h 0F                               RRCA      
01AC6h 0F                               RRCA      
01AC7h 0F                               RRCA      
01AC8h E6F0                             AND       0F0H           ; MASKIERE
01ACAh 47                               LD        B,A            ; RETTEN
01ACBh 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER WIEDER LADEN
01ACEh 7E                               LD        A,(HL)         ; LAUFWERKSKENNUNG LADEN
01ACFh E60F                             AND       0FH            ; MASKIERE HEADUNLOADTIME
01AD1h B0                               OR        B              ; MIT STEPRATE VERODERN
01AD2h 77                               LD        (HL),A         ; LAUFWERKSKENNUNG SPEICHERN
01AD3h F1                               POP       AF
01AD4h CAB81D                           JP        Z,UCM_END      ; ???????
01AD7h                                            
01AD7h 21371E                           LD        HL,UCMTX4      ; HEADUNLOADTIME
01ADAh CD2B26                           CALL      SP_OUT
01ADDh 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER WIEDER LADEN
01AE0h 7E                               LD        A,(HL)         ; LAUFWERKSKENNUNG LADEN
01AE1h 0F                               RRCA                     ; SCHIEBE UNTERE 4 BIT IN OBERE 4 BIT
01AE2h 0F                               RRCA      
01AE3h 0F                               RRCA      
01AE4h 0F                               RRCA      
01AE5h E6F0                             AND       0F0H           ; MASKIEREN HEADUNLOADTIME
01AE7h CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01AEAh F5                               PUSH      AF
01AEBh 07                               RLCA                     ; SCHIEBE OBERE 4 BIT WIEDER IN UNTERE 4 BIT
01AECh 07                               RLCA      
01AEDh 07                               RLCA      
01AEEh 07                               RLCA      
01AEFh E60F                             AND       0FH            ; MASKIERE HEADUNLOADTIME
01AF1h 47                               LD        B,A            ; RETTEN
01AF2h 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER WIEDER LADEN
01AF5h 7E                               LD        A,(HL)         ; LAUFWERKSKENNUNG LADEN
01AF6h E6F0                             AND       0F0H           ; MASKIERE STEPRATE
01AF8h B0                               OR        B              ; MIT HEADUNLOADTIME VERODERN
01AF9h 77                               LD        (HL),A         ; LAUFWERKSKENNUNG SPEICHERN
01AFAh F1                               POP       AF
01AFBh CAB81D                           JP        Z,UCM_END      ; ???????
01AFEh                                            
01AFEh 23                               INC       HL             ; LAUFWERKSZEIGER AUF NAECHSTES BYTE SETZEN
01AFFh 2235FF                           LD        (ERMSG),HL     ; ZEIGER RETTEN
01B02h                                            
01B02h 214D1E                           LD        HL,UCMTX5      ; HEADLOADTIME
01B05h CD2B26                           CALL      SP_OUT
01B08h 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER LADEN
01B0Bh 7E                               LD        A,(HL)         ; LAUFWERKSKENNUNG LADEN
01B0Ch E6FE                             AND       0FEH           ; HEADLOADTIME MASKIEREN
01B0Eh CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01B11h F5                               PUSH      AF
01B12h E6FE                             AND       0FEH           ; WIEDER MASKIEREN
01B14h 2A35FF                           LD        HL,(ERMSG)     ; LAUFWERKSZEIGER WIEDER LADEN
01B17h 77                               LD        (HL),A         ; LAUFWERKSKENNUNG LADEN
01B18h F1                               POP       AF
01B19h CAB81D                           JP        Z,UCM_END      ; ???????
01B1Ch                                            
01B1Ch 21631E                           LD        HL,UCMTX6      ; READY SIGNAL
01B1Fh CD2B26                           CALL      SP_OUT
01B22h 3A49FF                           LD        A,(TEMP)       ; LAUFWERKSUMMER
01B25h CD8902                           CALL      UNIT_MSK_A     ; MASKE FÜR LAUFWERK 1..4 BESTIMMEN
01B28h E60F                             AND       0FH            ; KANN LAUFWERK READY SIGNAL LIEFERN?
01B2Ah 5F                               LD        E,A
01B2Bh 16FF                             LD        D,0FFH
01B2Dh 2108FF                           LD        HL,READY_BYTE  ; 
01B30h CDBE1D                           CALL      UCM_I_3        ; ???????
01B33h CAB81D                           JP        Z,UCM_END      ; ???????
01B36h                                            
01B36h 21791E                           LD        HL,UCMTX7      ; 80 TRACK
01B39h CD2B26                           CALL      SP_OUT
01B3Ch 3A49FF                           LD        A,(TEMP)       ; LAUFWERKSNUMMER WIEDER HERSTELLEN
01B3Fh CD8902                           CALL      UNIT_MSK_A     ; LAUFWERKSMASKE ERZEUGEN
01B42h E6F0                             AND       B_F0
01B44h 5F                               LD        E,A
01B45h 1600                             LD        D,0
01B47h 210BFF                           LD        HL,SEEKNR
01B4Ah CDBE1D                           CALL      UCM_I_3
01B4Dh CAB81D                           JP        Z,UCM_END
01B50h 218F1E                           LD        HL,UCMTX8      ; DOUBLE STEP
01B53h CD2B26                           CALL      SP_OUT
01B56h 3A49FF                           LD        A,(TEMP)
01B59h CD8902                           CALL      UNIT_MSK_A     ; LAUFWERKSMASKE ERZEUGEN
01B5Ch E60F                             AND       B_0F
01B5Eh 5F                               LD        E,A
01B5Fh 1600                             LD        D,0
01B61h 210BFF                           LD        HL,SEEKNR
01B64h CDBE1D                           CALL      UCM_I_3
01B67h C3B81D                           JP        UCM_END
01B6Ah                                            
01B6Ah            UCM_B:                          
01B6Ah 210CFF                           LD        HL,SIO_A_PAR   ; VORBELGEN SCHNITTSTELLE A
01B6Dh FE41                             CP        'A'            ; SCHNITTSTELLE A?
01B6Fh 2803                             JR        Z,UCM_B_1      ; JA
01B71h 210DFF                           LD        HL,SIO_B_PAR   ; SCHNITTSTELLE IST B
01B74h                                            
01B74h                                                           ;      Schnittstellenkonfiguration (Befehl A oder B)
01B74h                                            
01B74h 2235FF     UCM_B_1:              LD        (ERMSG),HL     ; ZEIGER ZWISCHENSPEICHERN
01B77h F5                               PUSH      AF             ; SCHNITTSTELLE RETTEN
01B78h 21A51E                           LD        HL,UCMT10      ; GEWAEHLTE SCHNITTSTELLE ANZEIGEN
01B7Bh CD1E01                           CALL      SOUT
01B7Eh F1                               POP       AF             ; WIEDERHERSTELLEN
01B7Fh CDDF1D                           CALL      UCMD90         ; ZEICHEN SPIEGELN
01B82h 21B91E                           LD        HL,UCMT11      ; BAUDRATE
01B85h CD2B26                           CALL      SP_OUT
01B88h 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01B8Bh 7E                               LD        A,(HL)         ; ALTEN WERT LADEN
01B8Ch E60F                             AND       0FH            ; BAURATE MASKIEREN
01B8Eh CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
01B91h F5                               PUSH      AF             ; SCHNITTSTELLE RETTEN
01B92h 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01B95h E60F                             AND       0FH            ; BAUDRATE MASKIEREN
01B97h 4F                               LD        C,A            ; 
01B98h 7E                               LD        A,(HL)         ; ALTEN WEERT LADEN
01B99h E6F0                             AND       0F0H           ; ALTE BAUDRATE AUSBLENDEN
01B9Bh B1                               OR        C              ; NEUE BAUDRATE EINBLENDEN
01B9Ch 77                               LD        (HL),A         ; WERT ABLEGEN
01B9Dh F1                               POP       AF             ; WIEDER HERSTELLEN
01B9Eh CAB81D                           JP        Z,UCM_END      ; 0 => KEINE WEITERE EINGABEN, DA JUMPER
01BA1h                                                           ; VORRANG HABEN
01BA1h 21CB1E                           LD        HL,UCMT12      ; 8 DATENBITS?
01BA4h CD2B26                           CALL      SP_OUT
01BA7h 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01BAAh 1E40                             LD        E,40H
01BACh 1600                             LD        D,0
01BAEh CDBE1D                           CALL      UCM_I_3
01BB1h CAB81D                           JP        Z,UCM_END
01BB4h 21DD1E                           LD        HL,UCMT13      ; 2 STOPBITS?
01BB7h CD2B26                           CALL      SP_OUT
01BBAh 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01BBDh 1E10                             LD        E,10H
01BBFh 1600                             LD        D,0
01BC1h CDBE1D                           CALL      UCM_I_3
01BC4h CAB81D                           JP        Z,UCM_END
01BC7h 21EF1E                           LD        HL,UCMT14      ; PARITY ENABLE?
01BCAh CD2B26                           CALL      SP_OUT
01BCDh 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01BD0h 1E20                             LD        E,20H
01BD2h 1600                             LD        D,0
01BD4h CDBE1D                           CALL      UCM_I_3
01BD7h CAB81D                           JP        Z,UCM_END
01BDAh 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01BDDh 7E                               LD        A,(HL)
01BDEh E620                             AND       20H
01BE0h CAB81D                           JP        Z,UCM_END
01BE3h 21011F                           LD        HL,UCMT15      ; PAITY EVEN?
01BE6h CD2B26                           CALL      SP_OUT
01BE9h 2A35FF                           LD        HL,(ERMSG)     ; ZEIGER LADEN
01BECh 1E80                             LD        E,80H
01BEEh 16FF                             LD        D,0FFH
01BF0h CDBE1D                           CALL      UCM_I_3
01BF3h C3B81D                           JP        UCM_END
01BF6h                                            
01BF6h            UCM_C:                          
01BF6h 21131F                           LD        HL,UCMT20      ; ALLGEMEINE DISK-EINSTELLUNGEN
01BF9h CD1E01                           CALL      SOUT
01BFCh 21241F                           LD        HL,UCMT21      ; DRIVE A
01BFFh CD2B26                           CALL      SP_OUT
01C02h 3A0EFF                           LD        A,(LOG_DRIVE)
01C05h E603                             AND       03H            ; LAUFWERK MASKIEREN
01C07h CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01C0Ah F5                               PUSH      AF             ; SICHERN
01C0Bh E603                             AND       03H
01C0Dh 4F                               LD        C,A
01C0Eh 3A0EFF                           LD        A,(LOG_DRIVE)  ; ALTER WERTE
01C11h E6FC                             AND       0FCH           ; MASKIEREN
01C13h B1                               OR        C              ; KENNUNG EINBLENDEN
01C14h 320EFF                           LD        (LOG_DRIVE),A  ; WERT UEBERSCHREIBEN
01C17h 3250FF                           LD        (TEMP_LOG_DRIVE),A; WERT ABSPEICHERN
01C1Ah F1                               POP       AF             ; WIEDERHERSTELLEN
01C1Bh CAB81D                           JP        Z,UCM_END
01C1Eh 21351F                           LD        HL,UCMT22      ; TUNNEL EREASE
01C21h CD2B26                           CALL      SP_OUT
01C24h 3A09FF                           LD        A,(TE_TIME)
01C27h CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01C2Ah 3209FF                           LD        (TE_TIME),A
01C2Dh CAB81D                           JP        Z,UCM_END
01C30h 21461F                           LD        HL,UCMT23      ; MOTOR DELAY
01C33h CD2B26                           CALL      SP_OUT
01C36h 3A0AFF                           LD        A,(STEP_WAIT)
01C39h CD7A0D                           CALL      NEU_WRT
01C3Ch 320AFF                           LD        (STEP_WAIT),A
01C3Fh CAB81D                           JP        Z,UCM_END
01C42h 21571F                           LD        HL,UCMT24      ; SWITCH DELAY
01C45h CD2B26                           CALL      SP_OUT
01C48h 3A0FFF                           LD        A,(SWITCH_DELAY)
01C4Bh CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01C4Eh 320FFF                           LD        (SWITCH_DELAY),A
01C51h CAB81D                           JP        Z,UCM_END
01C54h 21681F                           LD        HL,UCMT25      ; START DELAY
01C57h CD2B26                           CALL      SP_OUT
01C5Ah 3A11FF                           LD        A,(START_DELAY)
01C5Dh CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01C60h 3211FF                           LD        (START_DELAY),A
01C63h CAB81D                           JP        Z,UCM_END
01C66h 21791F                           LD        HL,UCMT26      ; EPROM BOOT
01C69h CD2B26                           CALL      SP_OUT
01C6Ch 210EFF                           LD        HL,LOG_DRIVE
01C6Fh 1E10                             LD        E,10H
01C71h 1600                             LD        D,0
01C73h CDBE1D                           CALL      UCM_I_3
01C76h 3A0EFF                           LD        A,(LOG_DRIVE)
01C79h 3250FF                           LD        (TEMP_LOG_DRIVE),A
01C7Ch CAB81D                           JP        Z,UCM_END
01C7Fh 3A0EFF                           LD        A,(LOG_DRIVE)
01C82h 4F                               LD        C,A
01C83h E610                             AND       10H
01C85h 280F                             JR        Z,UCM_C_1
01C87h 79                               LD        A,C
01C88h E6DF                             AND       0DFH
01C8Ah 320EFF                           LD        (LOG_DRIVE),A
01C8Dh 3250FF                           LD        (TEMP_LOG_DRIVE),A
01C90h CD2901                           CALL      CROUT
01C93h C3B81D                           JP        UCM_END
01C96h                                            
01C96h 218A1F     UCM_C_1:              LD        HL,UCMT27      ; HARDDISK BOOT
01C99h CD2B26                           CALL      SP_OUT
01C9Ch 210EFF                           LD        HL,LOG_DRIVE
01C9Fh 1E20                             LD        E,' '
01CA1h 1600                             LD        D,0
01CA3h CDBE1D                           CALL      UCM_I_3
01CA6h 3A0EFF                           LD        A,(LOG_DRIVE)
01CA9h 3250FF                           LD        (TEMP_LOG_DRIVE),A
01CACh C3B81D                           JP        UCM_END
01CAFh                                            
01CAFh            UCM_M:                          
01CAFh 219B1F                           LD        HL,UCMT30      ; MULTIPLEX PINS     
01CB2h CD1E01                           CALL      SOUT
01CB5h 21B11F                           LD        HL,UCMT31
01CB8h CD2B26                           CALL      SP_OUT
01CBBh 210EFF                           LD        HL,LOG_DRIVE
01CBEh 1E04                             LD        E,B_04
01CC0h 1600                             LD        D,0
01CC2h CDBE1D                           CALL      UCM_I_3
01CC5h CAB81D                           JP        Z,UCM_END
01CC8h 21BC1F                           LD        HL,UCMT32
01CCBh CD2B26                           CALL      SP_OUT
01CCEh 210EFF                           LD        HL,LOG_DRIVE
01CD1h 1E08                             LD        E,08H
01CD3h 1600                             LD        D,0
01CD5h CDBE1D                           CALL      UCM_I_3
01CD8h C3B81D                           JP        UCM_END
01CDBh                                            
01CDBh            UCM_W:                          
01CDBh 21C71F                           LD        HL,UCMT40
01CDEh CD1E01                           CALL      SOUT
01CE1h 21DC1F                           LD        HL,UCMT41
01CE4h CD2B26                           CALL      SP_OUT
01CE7h 3A08FF                           LD        A,(READY_BYTE)
01CEAh 0F                               RRCA      
01CEBh 0F                               RRCA      
01CECh 0F                               RRCA      
01CEDh 0F                               RRCA      
01CEEh E603                             AND       03H
01CF0h CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01CF3h F5                               PUSH      AF
01CF4h 07                               RLCA      
01CF5h 07                               RLCA      
01CF6h 07                               RLCA      
01CF7h 07                               RLCA      
01CF8h E620                             AND       ' '
01CFAh 4F                               LD        C,A
01CFBh 3A08FF                           LD        A,(READY_BYTE)
01CFEh E6CF                             AND       0CFH
01D00h B1                               OR        C
01D01h 3208FF                           LD        (READY_BYTE),A
01D04h F1                               POP       AF
01D05h CAB81D                           JP        Z,UCM_END
01D08h 21E71F                           LD        HL,UCMT42
01D0Bh CD2B26                           CALL      SP_OUT
01D0Eh 3A08FF                           LD        A,(READY_BYTE)
01D11h 07                               RLCA      
01D12h 07                               RLCA      
01D13h E603                             AND       03H
01D15h CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01D18h F5                               PUSH      AF
01D19h 0F                               RRCA      
01D1Ah 0F                               RRCA      
01D1Bh E6C0                             AND       0C0H
01D1Dh 4F                               LD        C,A
01D1Eh 3A08FF                           LD        A,(READY_BYTE)
01D21h E63F                             AND       03FH
01D23h B1                               OR        C
01D24h 3208FF                           LD        (READY_BYTE),A
01D27h F1                               POP       AF
01D28h C3B81D                           JP        UCM_END
01D2Bh                                            
01D2Bh            UCM_U:                          
01D2Bh 21F21F                           LD        HL,UCMT50      ; USER BYTES         
01D2Eh CD1E01                           CALL      SOUT
01D31h 210220                           LD        HL,UCMT51      ; USER BYTE 1
01D34h CD2B26                           CALL      SP_OUT
01D37h 3A13FF                           LD        A,(U_BYTE_1)   ; ALTER WERT
01D3Ah CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01D3Dh 3213FF                           LD        (U_BYTE_1),A   ; NEUER WERT
01D40h CAB81D                           JP        Z,UCM_END
01D43h 210D20                           LD        HL,UCMT52      ; USER BYTE 2
01D46h CD2B26                           CALL      SP_OUT
01D49h 3A14FF                           LD        A,(U_BYTE_2)   ; ALTER WERT
01D4Ch CD7A0D                           CALL      NEU_WRT        ; NEUER WERT
01D4Fh 3214FF                           LD        (U_BYTE_2),A   ; NEUER WERT
01D52h CAB81D                           JP        Z,UCM_END
01D55h 211820                           LD        HL,UCMT53      ; USER BYTE 3
01D58h CD2B26                           CALL      SP_OUT
01D5Bh 3A15FF                           LD        A,(U_BYTE_3)   ; ALTER WERT
01D5Eh CD7A0D                           CALL      NEU_WRT
01D61h 3215FF                           LD        (U_BYTE_3),A   ; NEUER WERT
01D64h CAB81D                           JP        Z,UCM_END
01D67h 212320                           LD        HL,UCMT54      ; USER BYTE 4
01D6Ah CD2B26                           CALL      SP_OUT
01D6Dh 3A16FF                           LD        A,(U_BYTE_4)   ; ALTER WERT
01D70h CD7A0D                           CALL      NEU_WRT
01D73h 3216FF                           LD        (U_BYTE_4),A   ; NEUER WERT
01D76h C3B81D                           JP        UCM_END
01D79h                                            
01D79h                                                           ; INITIALISATION STRINGS AUSGEBEN
01D79h                                            
01D79h            UCM_I:                          
01D79h 212E20                           LD        HL,UCMT60      ; KOPFZEILE               
01D7Ch CD1E01                           CALL      SOUT
01D7Fh 3A32FF                           LD        A,(IO_JUMPERBYTE)
01D82h E603                             AND       03H
01D84h 6F                               LD        L,A            ; SCHNITTSTELLE
01D85h 2610                             LD        H,10H          ; 10 BYTE JE SCHNITTSTELLE
01D87h ED6C                             MLT       HL             ;
01D89h 11E927                           LD        DE,GRIP_ST_TXT ;
01D8Ch 19                               ADD       HL,DE          ; ZEIGER AUF TEXT
01D8Dh 0608                             LD        B,08H
01D8Fh 0E80                             LD        C,80H
01D91h                                            
01D91h 5E         UCM_I_1:              LD        E,(HL)
01D92h 23                               INC       HL
01D93h 56                               LD        D,(HL)
01D94h 23                               INC       HL
01D95h 13                               INC       DE
01D96h 7A                               LD        A,D
01D97h B3                               OR        E
01D98h 2817                             JR        Z,UCM_I_2
01D9Ah E5                               PUSH      HL
01D9Bh C5                               PUSH      BC
01D9Ch EB                               EX        DE,HL
01D9Dh 2B                               DEC       HL
01D9Eh CD2B26                           CALL      SP_OUT
01DA1h 2110FF                           LD        HL,S_INIT_BYTE
01DA4h D1                               POP       DE
01DA5h D5                               PUSH      DE
01DA6h 1600                             LD        D,0
01DA8h CDBE1D                           CALL      UCM_I_3
01DABh C1                               POP       BC
01DACh E1                               POP       HL
01DADh 2002                             JR        NZ,UCM_I_2
01DAFh 0601                             LD        B,01H
01DB1h CB09       UCM_I_2:              RRC       C
01DB3h 10DC                             DJNZ      UCM_I_1
01DB5h C3B81D                           JP        UCM_END
01DB8h                                            
01DB8h CD4C20     UCM_END:              CALL      CALC_CHECKSUM  ; PRUEFSUMME BERECHNEN UND ALLES SICHERN
01DBBh C3551A                           JP        UCMD           ; NEUES UNTERKOMMANDO
01DBEh                                            
01DBEh 7A         UCM_I_3:              LD        A,D            ; LOGIK POSITIV/NEGATIV
01DBFh B7                               OR        A              ; TESTEN
01DC0h F5                               PUSH      AF             ; RETTEN
01DC1h 7B                               LD        A,E            ; BITMASKE
01DC2h A6                               AND       (HL)           ; AKTUELLE BITSTELLUNG EINBLENDEN
01DC3h 4F                               LD        C,A            ; NACH C VERSCHIEBEN
01DC4h F1                               POP       AF             ; RETTEN
01DC5h 79                               LD        A,C            ; WIEDER NACH A
01DC6h E5                               PUSH      HL             ; ZEIGER RETTEN
01DC7h D5                               PUSH      DE             ; LOGIK UND MASKE RETTEN
01DC8h 2805                             JR        Z,UCM_I_4      ; WENN BIT=0 
01DCAh CDCC0D                           CALL      NEG_JA_NEIN
01DCDh 1803                             JR        UCM_I_5
01DCFh CD910D     UCM_I_4:              CALL      JA_NEIN
01DD2h D1         UCM_I_5:              POP       DE
01DD3h E1                               POP       HL
01DD4h F5                               PUSH      AF
01DD5h A3                               AND       E
01DD6h 47                               LD        B,A
01DD7h 4E                               LD        C,(HL)
01DD8h 7B                               LD        A,E
01DD9h 2F                               CPL       
01DDAh A1                               AND       C
01DDBh B0                               OR        B
01DDCh 77                               LD        (HL),A
01DDDh F1                               POP       AF
01DDEh C9                               RET       
01DDFh                                            
01DDFh                                                           ; Zeichen Spiegeln
01DDFh                                            
01DDFh F5         UCMD90:               PUSH      AF
01DE0h 4F                               LD        C,A
01DE1h CD3101                           CALL      CECHO
01DE4h F1                               POP       AF
01DE5h C9                               RET       
01DE6h                                            
01DE6h                                            
01DE6h 0D0A0D0A20 UCMTX1:               DEFM      0DH,0AH,0DH,0AH," 0,1,2,3,A,B,C,I,M,U,W select => $"
01E0Ch                                            
01E0Ch 0D0A0D0A20 UCMTX2:               DEFM      0DH,0AH,0DH,0AH," data for drive $"; SUB-BEFEHLE 0,1,2,3
01E21h 0173746570 UCMTX3:               DEFM      01H,"step rate ........: $"
01E37h 0168656164 UCMTX4:               DEFM      01H,"head unload time .: $"
01E4Dh 0168656164 UCMTX5:               DEFM      01H,"head load time ...: $"
01E63h 0172656164 UCMTX6:               DEFM      01H,"ready signal......: $"
01E79h 0138302074 UCMTX7:               DEFM      01H,"80 track..........: $"
01E8Fh 01646F7562 UCMTX8:               DEFM      01H,"double step.......: $"
01EA5h                                            
01EA5h 0D0A0D0A20 UCMT10:               DEFM      0DH,0AH,0DH,0AH," data for V-24-$"; SUB-BEFEHLE A,B
01EB9h 0162617564 UCMT11:               DEFM      01H,"baudrate......: $"
01ECBh 0138206461 UCMT12:               DEFM      01H,"8 data bits...: $"
01EDDh 0132207374 UCMT13:               DEFM      01H,"2 stop bits...: $"
01EEFh 0170617269 UCMT14:               DEFM      01H,"parity enable.: $"
01F01h 0170617269 UCMT15:               DEFM      01H,"parity even...: $"
01F13h                                            
01F13h 0D0A0D0A20 UCMT20:               DEFM      0DH,0AH,0DH,0AH," common data$"; SUB-BEFEHL C
01F24h 0164726976 UCMT21:               DEFM      01H,"drive A......: $"
01F35h 0174756E6E UCMT22:               DEFM      01H,"tunnel erase.: $"
01F46h 016D6F746F UCMT23:               DEFM      01H,"motor delay..: $"
01F57h 0173776974 UCMT24:               DEFM      01H,"switch delay.: $"
01F68h 0173746172 UCMT25:               DEFM      01H,"start delay..: $"
01F79h 014550524F UCMT26:               DEFM      01H,"EPROM boot...: $"
01F8Ah 0148617264 UCMT27:               DEFM      01H,"Harddisk boot: $"
01F9Bh                                            
01F9Bh 0D0A0D0A20 UCMT30:               DEFM      0DH,0AH,0DH,0AH," multiplexed pins$"; SUB-BEFEHL M
01FB1h 0143545331 UCMT31:               DEFM      01H,"CTS1...: $"
01FBCh 015444454E UCMT32:               DEFM      01H,"TDEND0.: $"
01FC7h                                            
01FC7h 0D0A0D0A20 UCMT40:               DEFM      0DH,0AH,0DH,0AH," wait insertions$"; SUB_BEFEHL W
01FDCh 01492F4F2E UCMT41:               DEFM      01H,"I/O....: $"
01FE7h 016D656D6F UCMT42:               DEFM      01H,"memory.: $"
01FF2h                                            
01FF2h 0D0A0D0A20 UCMT50:               DEFM      0DH,0AH,0DH,0AH," user bytes$"; SUB-BEFEHL U
02002h 0162797465 UCMT51:               DEFM      01H,"byte 1 : $"
0200Dh 0162797465 UCMT52:               DEFM      01H,"byte 2 : $"
02018h 0162797465 UCMT53:               DEFM      01H,"byte 3 : $"
02023h 0162797465 UCMT54:               DEFM      01H,"byte 4 : $"
0202Eh                                            
0202Eh 0D0A0D0A20 UCMT60:               DEFM      0DH,0AH,0DH,0AH," initialisation string(s)$"; SUB-BEFEHL I
0204Ch                                            
0204Ch                                            
0204Ch AF         CALC_CHECKSUM:        XOR       A              ; BEGINNE MIT A=0
0204Dh 2100FF                           LD        HL,SYSTEMPAGE  ; ZEIGER AUF SYSTEMPAGE
02050h 0617                             LD        B,17H          ; 23 BYTES PRUEFSUMME BERECHNEN
02052h 86         CALC_CHKS_1:          ADD       A,(HL)         ; LADE NAECHSTES BYTE
02053h 23                               INC       HL             ; ZEIGER AUF NAECHSTES BYTE
02054h 10FC                             DJNZ      CALC_CHKS_1    ; ALLE BYTES BEARBEITEN
02056h 2F                               CPL                      ; COMPLEMENT BILDEN
02057h 3C                               INC       A              ; UM 1 ERHOEHEN
02058h 77                               LD        (HL),A         ; SICHERN FUER VERGLEICH
02059h CD4309                           CALL      USER_BYTES_WRITE; IM GEPUFFERTEN RAM DER UHR SPEICHERN
0205Ch C9                               RET       
0205Dh                                            
0205Dh                                                           ;---------------------------------------------------------------------------------------
0205Dh                                            
0205Dh            YCMD:                                          ; LAUFWERK FORMATIEREN
0205Dh 215522                           LD        HL,YCM_TXT_DRV ; LAUFWERKNUMMER?
02060h CD2B26                           CALL      SP_OUT
02063h 3AE7FE                           LD        A,(FMT_VAL)    ; VORBELEGUNG AUSGEBEN
02066h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
02069h 32E7FE                           LD        (FMT_VAL),A    ; ABSPEICHERN
0206Ch CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
0206Fh                                            
0206Fh 216822                           LD        HL,YCM_TXT_MAXI; MAXI DISK?
02072h CD2B26                           CALL      SP_OUT
02075h 3AE8FE                           LD        A,(FMT_VAL+1)  ; VORBELEGUNG AUSGEBEN
02078h CD910D                           CALL      JA_NEIN        ; NEUEN WERT EINLESEN
0207Bh 32E8FE                           LD        (FMT_VAL+1),A  ; ABSPEICHERN
0207Eh CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
02081h                                            
02081h 217B22                           LD        HL,YCM_TXT_SD  ; SINGLE DENSITY?
02084h CD2B26                           CALL      SP_OUT
02087h 3AE9FE                           LD        A,(FMT_VAL+2)  ; VORBELEGUNG AUSGEBEN
0208Ah CD910D                           CALL      JA_NEIN        ; NEUEN WERT EINLESEN
0208Dh 32E9FE                           LD        (FMT_VAL+2),A  ; ABSPEICHERN
02090h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
02093h                                            
02093h 218E22                           LD        HL,YCM_TXT_SS  ; SINDLE SIDED?
02096h CD2B26                           CALL      SP_OUT
02099h 3AEAFE                           LD        A,(FMT_VAL+3)  ; VORBELEGUNG AUSGEBEN
0209Ch CD910D                           CALL      JA_NEIN        ; NEUEN WERT EINLESEN
0209Fh 32EAFE                           LD        (FMT_VAL+3),A  ; ABSPEICHERN
020A2h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
020A5h                                            
020A5h 21A122                           LD        HL,YCM_TXT_SECSZ; SEKTORGROESSE?
020A8h CD2B26                           CALL      SP_OUT
020ABh 3AEBFE                           LD        A,(FMT_VAL+4)  ; VORBELEGUNG AUSGEBEN
020AEh E603                             AND       03H            ; MASKIEREN (0...3) ZULAESSIG
020B0h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
020B3h F5                               PUSH      AF
020B4h E603                             AND       03H
020B6h 32EBFE                           LD        (FMT_VAL+4),A  ; ABSPEICHERN
020B9h F1                               POP       AF
020BAh CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
020BDh                                            
020BDh 21B422                           LD        HL,YCM_TXT_FSEC; FIRST SECTOR?
020C0h CD2B26                           CALL      SP_OUT
020C3h 3AECFE                           LD        A,(FMT_VAL+5)  ; VORBELEGUNG AUSGEBEN
020C6h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
020C9h 32ECFE                           LD        (FMT_VAL+5),A  ; ABSPEICHERN
020CCh CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
020CFh                                            
020CFh 21C722                           LD        HL,YCM_TXT_LSEC; LAST SECTOR?
020D2h CD2B26                           CALL      SP_OUT
020D5h 3AEDFE                           LD        A,(FMT_VAL+6)  ; VORBELEGUNG AUSGEBEN
020D8h CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
020DBh 32EDFE                           LD        (FMT_VAL+6),A  ; ABSPEICHERN
020DEh CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
020E1h                                            
020E1h 21DA22                           LD        HL,YCM_TXT_TRK ; ANZAHL TRACKS?
020E4h CD2B26                           CALL      SP_OUT
020E7h 3AEEFE                           LD        A,(FMT_VAL+7)  ; VORBELEGUNG AUSGEBEN
020EAh CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
020EDh 32EEFE                           LD        (FMT_VAL+7),A  ; ABSPEICHERN
020F0h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
020F3h                                            
020F3h 21ED22                           LD        HL,YCM_TXT_FGAP; ANZAHL GAP-BYTES?
020F6h CD2B26                           CALL      SP_OUT
020F9h 3AEFFE                           LD        A,(FMT_VAL+8)  ; VORBELEGUNG AUSGEBEN
020FCh CD7A0D                           CALL      NEU_WRT        ; NEUEN WERT EINLESEN
020FFh 32EFFE                           LD        (FMT_VAL+8),A  ; ABSPEICHERN
02102h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
02105h                                            
02105h 210023                           LD        HL,YCM_TXT_START
02108h CD2B26                           CALL      SP_OUT
0210Bh AF                               XOR       A
0210Ch CD910D                           CALL      JA_NEIN        ; NEUEN WERT EINLESEN
0210Fh B7                               OR        A
02110h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
02113h 3AEEFE                           LD        A,(FMT_VAL+7)
02116h B7                               OR        A
02117h CA9210                           JP        Z,GETCOM       ; BEI EINGABEENDE FERTIG
0211Ah                                            
0211Ah 2118FF                           LD        HL,CMDTAB      ; BEFEHLSPUFFER VORBEREITEN
0211Dh 11F7FE                           LD        DE,W_FEF7
02120h 010900                           LD        BC,09H         ; 9 BYTES KOPIEREN
02123h EDB0                             LDIR                     ; UMKOPIEREN
02125h CD4E09                           CALL      MOT_ON_TMR     ; MOTOR EINSCHALTEN
02128h CD2901                           CALL      CROUT
0212Bh CD2901                           CALL      CROUT
0212Eh 3AE7FE                           LD        A,(FMT_VAL)
02131h E603                             AND       03H
02133h 3219FF                           LD        (UNIT),A
02136h 010402                           LD        BC,0204H
02139h CDB703                           CALL      MOTO
0213Ch CD4304                           CALL      NEXT
0213Fh CB77                             BIT       6,A            ; DISK WRITE PROTECT?
02141h 2809                             JR        Z,L_214C
02143h 212523                           LD        HL,YCM_TXT_WP  ; WRITE PROTECT !
02146h CD1E01                           CALL      SOUT           ; FEHLERMELDUNG AUSGEBEN
02149h C3BD21                           JP        L_21BD
0214Ch                                            
0214Ch 3AE8FE     L_214C:               LD        A,(FMT_VAL+1)  ; MAXI/MINI EINSTELLEN
0214Fh B7                               OR        A
02150h 2805                             JR        Z,L_2157
02152h CDDB05                           CALL      MAXI_SET
02155h 1803                             JR        L_215A
02157h CDEE05     L_2157:               CALL      MINI_SET
0215Ah                                            
0215Ah AF         L_215A:               XOR       A              ; TRACK 0 EINSTELLEN
0215Bh 32F3FE                           LD        (W_FEF3),A
0215Eh 321AFF                           LD        (TRACK),A
02161h CD5502                           CALL      RECAL
02164h 213523                           LD        HL,YCM_TXT_SFMT; STARTMELDUNG AUSGEBEN
02167h CD2B26                           CALL      SP_OUT
0216Ah                                            
0216Ah 2A19FF     L_216A:               LD        HL,(UNIT)
0216Dh E5                               PUSH      HL
0216Eh 210001                           LD        HL,0100H
02171h 010303                           LD        BC,W_0303
02174h 2219FF                           LD        (UNIT),HL
02177h CD2B04                           CALL      CMFD
0217Ah E1                               POP       HL
0217Bh 2219FF                           LD        (UNIT),HL
0217Eh 3A19FF                           LD        A,(UNIT)
02181h E603                             AND       B_03
02183h 3219FF                           LD        (UNIT),A
02186h AF                               XOR       A
02187h 32F4FE                           LD        (W_FEF4),A
0218Ah CDCB21                           CALL      L_21CB
0218Dh 3AEAFE                           LD        A,(FMT_VAL+3)
02190h B7                               OR        A
02191h 2010                             JR        NZ,L_21A3
02193h 3A19FF                           LD        A,(UNIT)
02196h F604                             OR        B_04
02198h 3219FF                           LD        (UNIT),A
0219Bh 3E01                             LD        A,B_01
0219Dh 32F4FE                           LD        (W_FEF4),A
021A0h CDCB21                           CALL      L_21CB
021A3h 3AEEFE     L_21A3:               LD        A,(FMT_VAL+7)
021A6h 3D                               DEC       A
021A7h 4F                               LD        C,A
021A8h 3AF3FE                           LD        A,(W_FEF3)
021ABh B9                               CP        C
021ACh 280C                             JR        Z,L_21BA
021AEh 3C                               INC       A
021AFh 32F3FE                           LD        (W_FEF3),A
021B2h 321AFF                           LD        (TRACK),A
021B5h CD9402                           CALL      SEEK
021B8h 18B0                             JR        L_216A
021BAh CD5502     L_21BA:               CALL      RECAL
021BDh 21F7FE     L_21BD:               LD        HL,W_FEF7
021C0h 1118FF                           LD        DE,CMDTAB
021C3h 010900                           LD        BC,0009H       ; 9 Bytes kopieren
021C6h EDB0                             LDIR      
021C8h C39210                           JP        GETCOM
021CBh CD4222     L_21CB:               CALL      L_2242
021CEh 211323                           LD        HL,YCM_TXT_FTRK
021D1h CD1E01                           CALL      SOUT
021D4h 3AF3FE                           LD        A,(W_FEF3)
021D7h CD5B01                           CALL      DEZOUT
021DAh 211D23                           LD        HL,YCM_TXT_FHEAD
021DDh CD1E01                           CALL      SOUT
021E0h 3A19FF                           LD        A,(UNIT)
021E3h 0F                               RRCA      
021E4h 0F                               RRCA      
021E5h E601                             AND       B_01
021E7h C630                             ADD       A,B_30
021E9h 4F                               LD        C,A
021EAh CD3101                           CALL      CECHO
021EDh 3AECFE                           LD        A,(FMT_VAL+5)
021F0h 32F5FE                           LD        (W_FEF5),A
021F3h 4F                               LD        C,A
021F4h 3AEDFE                           LD        A,(FMT_VAL+6)
021F7h 91                               SUB       C
021F8h 3C                               INC       A
021F9h 321BFF                           LD        (HEAD),A
021FCh 3AF0FE                           LD        A,(W_FEF0)
021FFh 321DFF                           LD        (SECSZ),A
02202h 3AEBFE                           LD        A,(FMT_VAL+4)
02205h 321AFF                           LD        (TRACK),A
02208h 32F6FE                           LD        (W_FEF6),A
0220Bh 3AEFFE                           LD        A,(FMT_VAL+8)
0220Eh 321CFF                           LD        (SECTOR),A
02211h 3AE9FE                           LD        A,(FMT_VAL+2)
02214h 2F                               CPL       
02215h E640                             AND       B_40
02217h F60D                             OR        B_0D
02219h 4F                               LD        C,A
0221Ah 0606                             LD        B,B_06
0221Ch CDB703                           CALL      MOTO
0221Fh 3A1BFF                           LD        A,(HEAD)
02222h 57                               LD        D,A
02223h 21F3FE                           LD        HL,W_FEF3
02226h E5         L_2226:               PUSH      HL
02227h 0604                             LD        B,B_04
02229h DBDC       L_2229:               IN        A,(FDC)
0222Bh 07                               RLCA      
0222Ch 30FB                             JR        NC,L_2229
0222Eh 7E                               LD        A,(HL)
0222Fh D3DD                             OUT       (FDD),A
02231h 23                               INC       HL
02232h 10F5                             DJNZ      L_2229
02234h 15                               DEC       D
02235h 2806                             JR        Z,L_223D
02237h 2B                               DEC       HL
02238h 2B                               DEC       HL
02239h 34                               INC       (HL)
0223Ah E1                               POP       HL
0223Bh 18E9                             JR        L_2226
0223Dh E1         L_223D:               POP       HL
0223Eh CD1B03                           CALL      RESULT
02241h C9                               RET       
02242h                                            
02242h                                            
02242h 3AF2FE     L_2242:               LD        A,(W_FEF2)
02245h 4F                               LD        C,A
02246h 3AF3FE                           LD        A,(W_FEF3)
02249h B9                               CP        C
0224Ah 3E00                             LD        A,0
0224Ch 3803                             JR        C,L_2251
0224Eh 3AF1FE                           LD        A,(W_FEF1)
02251h CD3506     L_2251:               CALL      SET_PRECOM_1
02254h C9                               RET       
02255h                                            
02255h                                            
02255h 0164726976 YCM_TXT_DRV:          DEFM      01H,"drive..........: $"
02268h 016D617869 YCM_TXT_MAXI:         DEFM      01H,"maxi disk......: $"
0227Bh 0173696E67 YCM_TXT_SD:           DEFM      01H,"single density.: $"
0228Eh 0173696E67 YCM_TXT_SS:           DEFM      01H,"single side....: $"
022A1h 0173656374 YCM_TXT_SECSZ:        DEFM      01H,"sector size....: $"
022B4h 0166697273 YCM_TXT_FSEC:         DEFM      01H,"first sector...: $"
022C7h 016C617374 YCM_TXT_LSEC:         DEFM      01H,"last sector....: $"
022DAh 0174726163 YCM_TXT_TRK:          DEFM      01H,"track number...: $"
022EDh 01666F726D YCM_TXT_FGAP:         DEFM      01H,"format gap.....: $"
02300h 0173746172 YCM_TXT_START:        DEFM      01H,"start format...: $"
02313h 0D20747261 YCM_TXT_FTRK:         DEFM      0DH," track #$"
0231Dh 2068656164 YCM_TXT_FHEAD:        DEFM      " head #$"
02325h 2057726974 YCM_TXT_WP:           DEFM      " Write protect",BELL,"$"
02335h 0173746172 YCM_TXT_SFMT:         DEFM      01H,"start formatting:",0AH,"$"
02349h                                            
02349h                                            
02349h                                                           ;--------------------------------INITIALISIERUNG------
02349h                                            
02349h            INIT:                           
02349h                                                           ; ***
02349h 21D007                           LD        HL,07D0H       ; VERZOEGERUNG ZUM WARM WERDEN
0234Ch 2B         INIT1:                DEC       HL
0234Dh 7C                               LD        A,H
0234Eh B5                               OR        L
0234Fh 20FB                             JR        NZ,INIT1       ; BIS HL=0
02351h                                            
02351h 3EF0                             LD        A,0F0H         ; DMA REQUEST FLANKENGETRIGGERT
02353h ED3932                           OUT0      (32H),A        ; DMA/WAIT Control Register
02356h                                            
02356h 3EF0                             LD        A,0F0H         ; COMMON-AREA 1 F000H-FFFFh / BANK-AREA 0000H-EFFFH
02358h ED393A                           OUT0      (3AH),A        ; MMU Common/Bank Area Register
0235Bh                                            
0235Bh 3E40                             LD        A,040H         ; OFFSET FUER ZUGRIFF AUF COMMON AREA
0235Dh ED3938                           OUT0      (38H),A        ; MMU Common Base Register
02360h                                            
02360h 2100F0                           LD        HL,0F000H      ; RAM-TEST COMMON-AREA 1
02363h 010010                           LD        BC,01000H
02366h 1E53                             LD        E,53H          ; PRUEFBYTE Startwert
02368h 73         INIT2:                LD        (HL),E
02369h 1C                               INC       E              ; PRUEFBYTE+1
0236Ah 23                               INC       HL             ; ZEIGER+1
0236Bh 0B                               DEC       BC             ; ZAEHLER-1
0236Ch 78                               LD        A,B            ; ENDE ERREICHT?
0236Dh B1                               OR        C
0236Eh 20F8                             JR        NZ,INIT2       ; NEIN
02370h                                            
02370h 21D007                           LD        HL,07D0H       ; VERZOEGERUNG BIS ZUM START SPEICHER PRUEFEN
02373h 2B         INIT3:                DEC       HL
02374h 7C                               LD        A,H
02375h B5                               OR        L
02376h 20FB                             JR        NZ,INIT3       ; BIS HL=0
02378h                                            
02378h 2100F0                           LD        HL,0F000H      ; JETZT DAS GANZE PRUEFEN
0237Bh 010010                           LD        BC,01000H
0237Eh 1E53                             LD        E,53H          ; AUSGANGSPRUEFBYTE Startwert WIE OBEN
02380h 7E         INIT4:                LD        A,(HL)
02381h BB                               CP        E
02382h C27826                           JP        NZ,BLINK_LOOP  ; RAM_FEHLER !!!
02385h 1C                               INC       E
02386h 23                               INC       HL
02387h 0B                               DEC       BC
02388h 78                               LD        A,B
02389h B1                               OR        C
0238Ah 20F4                             JR        NZ,INIT4       ; TEST OK?
0238Ch                                            
0238Ch 210000                           LD        HL,0           ; EPROM KOPIEREN VON
0238Fh 110000                           LD        DE,0           ; NACH
02392h 010040                           LD        BC,4000H       ; 16384 BYTES
02395h EDB0                             LDIR      
02397h                                            
02397h 3E0F                             LD        A,PAD_MM0 OR PAD_SET; SETZE MM0 LEITUNG
02399h D3D8                             OUT       (P_LS259),A    ; -> EPROM ABSCHALTEN
0239Bh                                            
0239Bh 3E83                             LD        A,83H          ; REFRESH FUER DYN. RAM einschalten (80H)
0239Dh                                                           ; REFRESH ALLE 80 TAKTZYKLEN (03H)
0239Dh ED3936                           OUT0      (36H),A        ; Refresh Control Register
023A0h                                            
023A0h 210000                           LD        HL,0
023A3h 110000                           LD        DE,0
023A6h 010000                           LD        BC,0
023A9h 0A         INIT5:                LD        A,(BC)
023AAh 5F                               LD        E,A
023ABh 19                               ADD       HL,DE
023ACh 03                               INC       BC
023ADh FE40                             CP        40H
023AFh 20F8                             JR        NZ,INIT5
023B1h                                            
023B1h 223627                           LD        (W_2736),HL
023B4h AF                               XOR       A
023B5h ED3938                           OUT0      (38H),A        ; MMU Common Base Register
023B8h ED393A                           OUT0      (3AH),A        ; MMU Common/Bank Area Register
023BBh 31B6FE                           LD        SP,MSTAK       ; SETZE STACKPOINTER
023BEh CDEF07                           CALL      SET_SCL
023C1h CD3809                           CALL      USER_BYTES_READ; USER BYTES AUS PCF8583 AUSLESEN UND UNTER SYSTEMPAGE ABLEGEN
023C4h 2100FF                           LD        HL,SYSTEMPAGE
023C7h 0618                             LD        B,18H          ; 18H BYTES
023C9h AF                               XOR       A
023CAh 86         INIT6:                ADD       A,(HL)         ; SIND USERBTES GESETZT?
023CBh 23                               INC       HL
023CCh 10FC                             DJNZ      INIT6          ; ALLE USERBYTES ADDIEREN 
023CEh                                            
023CEh 21E926                           LD        HL,DISKPAGE    ; DATEN VON DISKPAGE NACH
023D1h 1100FF                           LD        DE,SYSTEMPAGE  ; SYSTEMPAGE KOPIEREN
023D4h 010001                           LD        BC,0100H       ; 100H BYTES (INCL. USERBYTES)
023D7h B7                               OR        A
023D8h F5                               PUSH      AF
023D9h 2009                             JR        NZ,INIT7
023DBh 210127                           LD        HL,DISKPAGE+18H; DATEN VON DISKPAGE+18H NACH
023DEh 1118FF                           LD        DE,SYSTEMPAGE+18H; SYSTEMPAGE+18H KOPIEREN
023E1h 01E800                           LD        BC,00E8H       ; E8H BYTES (OHNE USERBYTES)
023E4h EDB0       INIT7:                LDIR      
023E6h                                            
023E6h                                                           ; BERECHNEN DER TAKTFREQUENZ
023E6h                                                           ; --------------------------
023E6h                                            
023E6h CDAE08                           CALL      READ_PHYS_TIME ; PCF-UHRZEIT LESEN
023E9h 21A00F                           LD        HL,0FA0H
023ECh 3A38FF                           LD        A,(TIME_FIELD) ; SEKUNDE
023EFh 4F                               LD        C,A            ; NACH C SPEICHERN
023F0h 2B         INIT8:                DEC       HL
023F1h 7C                               LD        A,H
023F2h B5                               OR        L              ; HL=0 ?
023F3h 2823                             JR        Z,INIT11       ; TIMEOUT -> FEHLER
023F5h CDAE08                           CALL      READ_PHYS_TIME
023F8h 3A38FF                           LD        A,(TIME_FIELD) ; SEKUNDE
023FBh B9                               CP        C
023FCh 28F2                             JR        Z,INIT8        ; NOCH KEINE AENDERUNG
023FEh 210800                           LD        HL,0008H
02401h 4F                               LD        C,A            ; NACH C SPEICHERN
02402h CDAE08     INIT9:                CALL      READ_PHYS_TIME
02405h 11C000                           LD        DE,00C0H
02408h 1B         INIT10:               DEC       DE
02409h 7A                               LD        A,D
0240Ah B3                               OR        E              ; DE=0 ?
0240Bh 20FB                             JR        NZ,INIT10
0240Dh 3A38FF                           LD        A,(TIME_FIELD) ; SEKUNDE
02410h 23                               INC       HL
02411h B9                               CP        C
02412h 28EE                             JR        Z,INIT9
02414h 29                               ADD       HL,HL          ; *  2
02415h 29                               ADD       HL,HL          ; *  4
02416h 29                               ADD       HL,HL          ; *  8
02417h 29                               ADD       HL,HL          ; * 16
02418h 7C         INIT11:               LD        A,H
02419h 324FFF                           LD        (SPEED),A      ; TAKTFREQUENZKENNUNG
0241Ch                                            
0241Ch 3A08FF                           LD        A,(READY_BYTE)
0241Fh E6F0                             AND       0F0H
02421h                                            
02421h ED3932                           OUT0      (32H),A        ; DMA/WAIT Control Register
02424h                                            
02424h 3A11FF                           LD        A,(START_DELAY)
02427h 6F                               LD        L,A
02428h 2664                             LD        H,64H
0242Ah ED6C                             MLT       HL
0242Ch 060A                             LD        B,0AH
0242Eh C5         INIT12:               PUSH      BC
0242Fh E5                               PUSH      HL
02430h CDF301                           CALL      DELAY_HL
02433h E1                               POP       HL
02434h C1                               POP       BC
02435h 10F7                             DJNZ      INIT12
02437h                                            
02437h 3A6500                           LD        A,(VERSIONNR)  ; SETZE MONITOR VERSIONSNUMMER
0243Ah 3248FF                           LD        (MON_VERS),A   ; IM RAM
0243Dh                                            
0243Dh CDB20B                           CALL      UNIOINIT       ; INITILISIERE UNIO
02440h                                            
02440h 3A0EFF                           LD        A,(LOG_DRIVE)  ; BOOT DEVICE FESTLEGEN
02443h 3250FF                           LD        (TEMP_LOG_DRIVE),A
02446h                                            
02446h 3A33FF                           LD        A,(BAUD_JUMPERBYTE); 
02449h 4F                               LD        C,A
0244Ah 3A0CFF                           LD        A,(SIO_A_PAR)
0244Dh 47                               LD        B,A
0244Eh E60F                             AND       0FH
02450h 2001                             JR        NZ,INIT21      ; BAUDRATE NICHT UEBER JUMPER
02452h 79                               LD        A,C
02453h                                            
02453h 4F         INIT21:               LD        C,A
02454h 78                               LD        A,B
02455h E6F0                             AND       0F0H
02457h B1                               OR        C
02458h 3251FF                           LD        (SERBAUD0),A
0245Bh 3A33FF                           LD        A,(BAUD_JUMPERBYTE)
0245Eh 4F                               LD        C,A
0245Fh 3A0DFF                           LD        A,(SIO_B_PAR)
02462h 47                               LD        B,A
02463h E60F                             AND       0FH
02465h 2001                             JR        NZ,INIT22
02467h 79                               LD        A,C
02468h                                            
02468h 4F         INIT22:               LD        C,A
02469h 78                               LD        A,B
0246Ah E6F0                             AND       0F0H
0246Ch B1                               OR        C
0246Dh 3252FF                           LD        (SERBAUD1),A
02470h 3A4FFF                           LD        A,(SPEED)
02473h CD8C26                           CALL      CHK_TAKT
02476h 4F                               LD        C,A
02477h E6F0                             AND       0F0H
02479h 2802                             JR        Z,INIT23
0247Bh 0E00                             LD        C,0
0247Dh                                            
0247Dh 69         INIT23:               LD        L,C
0247Eh 2600                             LD        H,0
02480h 29                               ADD       HL,HL          ; * 2
02481h 29                               ADD       HL,HL          ; * 4
02482h 29                               ADD       HL,HL          ; * 8
02483h 29                               ADD       HL,HL          ; * 16
02484h 11B128                           LD        DE,W_28B1      ; TABELLENANFANG ????
02487h 19                               ADD       HL,DE
02488h 110E01                           LD        DE,SER_INIT_TAB; ZIELTABELLE ????
0248Bh 011000                           LD        BC,10H         ; 16 Bytes (10H)
0248Eh EDB0                             LDIR      
02490h                                            
02490h CD3E0C                           CALL      SER_INIT       ; SERIELLE SCHNITTSTELLEN CPU INITIALISIEREN
02493h CD6200                           CALL      USERINIT       ; GGF. USER-SCHNITTSTELLEN INITIALISIEREN
02496h                                            
02496h 21AD26                           LD        HL,FMT_TAB     ; VORBELEGEN DER WERTE FUER FORMATIEREN
02499h 11E7FE                           LD        DE,FMT_VAL     ; ZIELPRUFFER
0249Ch 010C00                           LD        BC,000CH       ; ANZAHL BYTES (12)
0249Fh EDB0                             LDIR                     ; KOPIEREN
024A1h                                            
024A1h                                                           ;-------------------- hier bin ich
024A1h                                            
024A1h 3A32FF                           LD        A,(IO_JUMPERBYTE)
024A4h E603                             AND       03H
024A6h 6F                               LD        L,A
024A7h 2610                             LD        H,10H
024A9h ED6C                             MLT       HL
024ABh 11E927                           LD        DE,GRIP_ST_TXT
024AEh 19                               ADD       HL,DE
024AFh 3A10FF                           LD        A,(S_INIT_BYTE)
024B2h B7         INIT24:               OR        A
024B3h 2826                             JR        Z,INIT28
024B5h 87                               ADD       A,A
024B6h F5                               PUSH      AF
024B7h E5                               PUSH      HL
024B8h DCC124                           CALL      C,INIT25
024BBh E1                               POP       HL
024BCh 23                               INC       HL
024BDh 23                               INC       HL
024BEh F1                               POP       AF
024BFh 18F1                             JR        INIT24
024C1h                                            
024C1h 5E         INIT25:               LD        E,(HL)
024C2h 23                               INC       HL
024C3h 56                               LD        D,(HL)
024C4h 13                               INC       DE
024C5h 7B                               LD        A,E
024C6h B2                               OR        D
024C7h C8                               RET       Z
024C8h 1B                               DEC       DE
024C9h EB                               EX        DE,HL
024CAh 2B                               DEC       HL
024CBh 23         INIT26:               INC       HL
024CCh 7E                               LD        A,(HL)
024CDh FE24                             CP        '$'
024CFh 20FA                             JR        NZ,INIT26
024D1h 23                               INC       HL
024D2h 46                               LD        B,(HL)
024D3h 23         INIT27:               INC       HL
024D4h 4E                               LD        C,(HL)
024D5h CD0900                           CALL      CO
024D8h 10F9                             DJNZ      INIT27
024DAh C9                               RET       
024DBh                                            
024DBh                                            
024DBh 0E0C       INIT28:               LD        C,FF           ; FF (NEUE SEITE) AUSGEBEN
024DDh CD3101                           CALL      CECHO
024E0h                                            
024E0h CD3F26                           CALL      PRINT_LINE     ; '======......======' AUSGEBEN
024E3h CD5A26                           CALL      LINE_ON        ;
024E6h 211129                           LD        HL,INITXT1     ; PROF-181X (GROSSTEXT) AUSGEBEN
024E9h CD1E01                           CALL      SOUT
024ECh CD6926                           CALL      LINE_OFF       ;
024EFh                                            
024EFh 215E2A                           LD        HL,INITXT2
024F2h CD2E26                           CALL      SP_OT1
024F5h 3A6500                           LD        A,(VERSIONNR)
024F8h 07                               RLCA      
024F9h 07                               RLCA      
024FAh 07                               RLCA      
024FBh 07                               RLCA      
024FCh E60F                             AND       0FH            ; MAJOR-VERSION
024FEh C630                             ADD       A,'0'
02500h 4F                               LD        C,A
02501h CD3101                           CALL      CECHO
02504h 0E2E                             LD        C,'.'
02506h CD3101                           CALL      CECHO
02509h 3A6500                           LD        A,(VERSIONNR)
0250Ch E60F                             AND       0FH            ; MINOR-VERSION
0250Eh C630                             ADD       A,'0'
02510h 4F                               LD        C,A
02511h CD3101                           CALL      CECHO
02514h                                            
02514h CD3F26                           CALL      PRINT_LINE     ; '======......======' AUSGEBEN
02517h CD2901                           CALL      CROUT          ; NEUE ZEILE
0251Ah CD8C26                           CALL      CHK_TAKT
0251Dh                                            
0251Dh 21702A                           LD        HL,INITXT3     ; DATUM/UHRZEIT ANZEIGEN
02520h FEFF                             CP        JA             ; PCF OK?
02522h F5                               PUSH      AF
02523h CC2B26                           CALL      Z,SP_OUT
02526h F1                               POP       AF
02527h 2803                             JR        Z,INIT29       ; KEINE UHR DA
02529h CD0D0F                           CALL      DISP_TIME
0252Ch                                            
0252Ch                                            
0252Ch 214F2B     INIT29:               LD        HL,TXT_SYS_SPEED; TAKTFREQUENZ BESTIMMEN
0252Fh CD2B26                           CALL      SP_OUT
02532h CD8C26                           CALL      CHK_TAKT
02535h 213B2B                           LD        HL,TXT_FAILED  ; SCHON MAL VORBELEGEN
02538h E6F0                             AND       0F0H
0253Ah 2013                             JR        NZ,INIT30      ; FEHLER BEI TAKTFREQUENZ
0253Ch CD8C26                           CALL      CHK_TAKT
0253Fh 6F                               LD        L,A            ; TAKT-INDEX
02540h 2600                             LD        H,0
02542h 11B926                           LD        DE,TXT_SPEED   ; TABELLENANFANG
02545h 29                               ADD       HL,HL          ; * 2
02546h 29                               ADD       HL,HL          ; * 4
02547h 29                               ADD       HL,HL          ; * 8 (JE EINTRAG 8 ZEICHEN)
02548h 19                               ADD       HL,DE          ; 
02549h CD1E01                           CALL      SOUT           ; TAKTFREQUENZ AUSGEBEN
0254Ch 21602B                           LD        HL,TXT_MHZ
0254Fh CD1E01     INIT30:               CALL      SOUT
02552h                                            
02552h 218A2A                           LD        HL,INITXT4     ; SYSTEM DATA BACKUP
02555h CD2B26                           CALL      SP_OUT
02558h F1                               POP       AF
02559h 21382B                           LD        HL,TXT_OK      ; OK
0255Ch 2803                             JR        Z,INIT31
0255Eh 213B2B                           LD        HL,TXT_FAILED  ; FEHLER
02561h CD1E01     INIT31:               CALL      SOUT
02564h                                            
02564h                                            
02564h 21642B                           LD        HL,INITXT9     ; MEMORY ON BOARD
02567h CD2B26                           CALL      SP_OUT
0256Ah                                            
0256Ah                                            
0256Ah CD3D02                           CALL      INIFDC         ; FLOPPY CONTROLLER OK?
0256Dh CD6B09                           CALL      HD_CNTRL_TST   ; HD CONTROLLER OK?
02570h 21FB2A                           LD        HL,INITXT6     ; FLOPPY CONTROLLER
02573h CD2B26                           CALL      SP_OUT
02576h 3A37FF                           LD        A,(DISKFLG)
02579h B7                               OR        A
0257Ah 213B2B                           LD        HL,TXT_FAILED  ; VORBELGEN MIT FEHLERTEXT
0257Dh 2803                             JR        Z,INIT32
0257Fh 21382B                           LD        HL,TXT_OK      ; OK
02582h CD1E01     INIT32:               CALL      SOUT
02585h 21112B                           LD        HL,INITXT7     ; HD CONTROLLER
02588h CD2B26                           CALL      SP_OUT
0258Bh 3A78FF                           LD        A,(OMTI_OK)
0258Eh B7                               OR        A
0258Fh 213B2B                           LD        HL,TXT_FAILED  ; VORBELGEN MIT FEHLERTEXT
02592h 2803                             JR        Z,INIT33       ; FEHLER
02594h 21382B                           LD        HL,TXT_OK      ; OK
02597h CD1E01     INIT33:               CALL      SOUT
0259Ah                                            
0259Ah 21292B                           LD        HL,INITXT8     ; EPROM boot
0259Dh CD2B26                           CALL      SP_OUT
025A0h 2A9200                           LD        HL,(PATCH)
025A3h 7C                               LD        A,H
025A4h B5                               OR        L              ; HL=0 ?
025A5h 214A2B                           LD        HL,TXT_NOT     ; VORBELEGEN MIT 'not patched'
025A8h CC1E01                           CALL      Z,SOUT
025ABh 21422B                           LD        HL,TXT_PATCHED
025AEh CD1E01                           CALL      SOUT
025B1h                                            
025B1h                                            
025B1h 21E32A                           LD        HL,INITXT5     ; default boot device
025B4h CD2B26                           CALL      SP_OUT
025B7h 3A0EFF                           LD        A,(LOG_DRIVE)
025BAh E630                             AND       30H            ; MASKIEREN
025BCh 21842B                           LD        HL,TXT_FLOPPY
025BFh 280E                             JR        Z,INIT34       ; FLOPPY BOOT
025C1h 21922B                           LD        HL,TXT_HD
025C4h FE20                             CP        20H
025C6h 2807                             JR        Z,INIT34       ; HD BOOT
025C8h 219B2B                           LD        HL,TXT_EPROM
025CBh FE10                             CP        10H
025CDh 2014                             JR        NZ,INIT35
025CFh CD1E01     INIT34:               CALL      SOUT           ; BOOT DEVICE AUSGEBEN
025D2h 3A0EFF                           LD        A,(LOG_DRIVE)
025D5h 4F                               LD        C,A
025D6h E630                             AND       30H            ; MASKIEREN
025D8h 2009                             JR        NZ,INIT35      ; KEIN FLOPPY LAUFWERK
025DAh 79                               LD        A,C
025DBh E603                             AND       03H            ; FLOPPY MASKIEREN
025DDh C630                             ADD       A,'0'
025DFh 4F                               LD        C,A            ; LAUFWERKSNUMMER
025E0h CD3101                           CALL      CECHO
025E3h CD2901     INIT35:               CALL      CROUT
025E6h                                            
025E6h CD3F26                           CALL      PRINT_LINE
025E9h 3A0EFF                           LD        A,(LOG_DRIVE)
025ECh E630                             AND       30H            ; MASKIEREN
025EEh 280B                             JR        Z,INIT36       ; FLOPPY BOOT
025F0h FE10                             CP        10H
025F2h 2810                             JR        Z,INIT37       ; EPROM BOOT
025F4h FE20                             CP        20H
025F6h 2816                             JR        Z,INIT38       ; HD BOOT
025F8h C36810                           JP        RST_VERTEILER
025FBh                                            
025FBh 3A37FF     INIT36:               LD        A,(DISKFLG)    ; FDC ERKANNT?
025FEh B7                               OR        A
025FFh CA6810                           JP        Z,RST_VERTEILER; NEIN NEUE EINGABE
02602h 1811                             JR        INIT39
02604h 2A9200     INIT37:               LD        HL,(PATCH)
02607h 7C                               LD        A,H
02608h B5                               OR        L
02609h CA6810                           JP        Z,RST_VERTEILER
0260Ch 1807                             JR        INIT39
0260Eh 3A78FF     INIT38:               LD        A,(OMTI_OK)
02611h B7                               OR        A
02612h CA6810                           JP        Z,RST_VERTEILER
02615h 21A12A     INIT39:               LD        HL,TXT_MONITOR ; STARTMELDUNG AUSGEBEN
02618h CD2B26                           CALL      SP_OUT
0261Bh CD4A01                           CALL      GETCH1         ; BEFEHL EINLESEN
0261Eh F5                               PUSH      AF
0261Fh CD2901                           CALL      CROUT
02622h F1                               POP       AF
02623h FE0D                             CP        CR             ; carriage return?
02625h C2D516                           JP        NZ,BCMD_2      ; --> BOOT
02628h C36810                           JP        RST_VERTEILER
0262Bh                                            
0262Bh                                                           ;-------------------------------------------------
0262Bh                                            
0262Bh CD2901     SP_OUT:               CALL      CROUT          ; Ausgabe String mit führenden Leerzeichen
0262Eh 7E         SP_OT1:               LD        A,(HL)         ; STRING BEGINNT MIT ANZAHL LEERZEICHEN
0262Fh 23                               INC       HL
02630h B7                               OR        A
02631h CA1E01                           JP        Z,SOUT
02634h 47                               LD        B,A
02635h 0E20       SP_OT2:               LD        C,' '
02637h CD3101                           CALL      CECHO
0263Ah 10F9                             DJNZ      SP_OT2
0263Ch C31E01                           JP        SOUT           ; JETZT DEN EIGENTLICHEN TEXT AUSGEBEN
0263Fh                                            
0263Fh                                                           ;-------------------------------------------------
0263Fh                                            
0263Fh CD2901     PRINT_LINE:           CALL      CROUT          ; NEUE ZEILE
02642h 0647                             LD        B,71           ; 71 * '='
02644h CD5A26                           CALL      LINE_ON        ; 
02647h 3A32FF                           LD        A,(IO_JUMPERBYTE)
0264Ah B7                               OR        A
0264Bh 0E4B                             LD        C,'K'
0264Dh 2802                             JR        Z,PRINT_LINE_1
0264Fh 0E3D                             LD        C,'='
02651h                                            
02651h CD3101     PRINT_LINE_1:         CALL      CECHO          ; SOLANGE AUSGEBEN, BIS B=0
02654h 10FB                             DJNZ      PRINT_LINE_1
02656h CD6926                           CALL      LINE_OFF
02659h C9                               RET       
0265Ah                                            
0265Ah                                                           ;-------------------------------------------------
0265Ah                                            
0265Ah 3A32FF     LINE_ON:              LD        A,(IO_JUMPERBYTE); WENN GRIP DA
0265Dh B7                               OR        A
0265Eh C0                               RET       NZ
0265Fh 0E1B                             LD        C,1BH
02661h CD0900                           CALL      CO
02664h 0E24                             LD        C,'$'          ; STRICHGRAFIK EIN
02666h C30900                           JP        CO
02669h                                            
02669h                                                           ;-------------------------------------------------
02669h                                            
02669h 3A32FF     LINE_OFF:             LD        A,(IO_JUMPERBYTE); WENN GRIP DA
0266Ch B7                               OR        A
0266Dh C0                               RET       NZ
0266Eh 0E1B                             LD        C,1BH
02670h CD0900                           CALL      CO
02673h 0E25                             LD        C,'%'          ; STRICHGRAFIK AUS
02675h C30900                           JP        CO
02678h                                            
02678h                                                           ;-------------------------------------------------
02678h                                            
02678h 3A00F0     BLINK_LOOP:           LD        A,(0F000H)     ; RAM DEFEKT, LED BLINKEN LASSEN, 
0267Bh 3200F0                           LD        (0F000H),A     ; SPEICHER LESEN / SCHREIBEN COMMON 1
0267Eh 320040                           LD        (04000H),A     ; SPEICHER SCHREIBEN BANK AREA
02681h 7C                               LD        A,H
02682h 07                               RLCA      
02683h E601                             AND       01H
02685h F60A                             OR        PAD_SCL
02687h D3D8                             OUT       (P_LS259),A    ; LED SETZEN / RUECKSETZEN
02689h 23                               INC       HL
0268Ah 18EC                             JR        BLINK_LOOP
0268Ch                                            
0268Ch                                                           ;-------------------------------------------------
0268Ch                                            
0268Ch                                                           ; ANHAND DER GESCHWINDIGKEIT IN SPEED (TAKT/1536MHz) KENNUNG AUS SPD_TAB ERMITTELN
0268Ch                                            
0268Ch E5         CHK_TAKT:             PUSH      HL             ; REGISTER RETTEN
0268Dh D5                               PUSH      DE
0268Eh 3A4FFF                           LD        A,(SPEED)      ; TAKT-KENNUNG
02691h 119C26                           LD        DE,SPD_TAB     ; TABELLENANFANG
02694h 2600                             LD        H,0            ; OFFSET-
02696h 6F                               LD        L,A            ; BERECHNUNG
02697h 19                               ADD       HL,DE          ; IN TABELLE
02698h 7E                               LD        A,(HL)         ; KENNUNG ZURÜCKGEBEN
02699h D1                               POP       DE             ; REGISTER ZURUECKRETTEN
0269Ah E1                               POP       HL
0269Bh C9                               RET       
0269Ch                                            
0269Ch                                                           ; TABELLE ZUR BESTIMMUNG EINES TEXT_INDEX IN TXT_SPEED
0269Ch                                            
0269Ch FF         SPD_TAB:              DEFB      0FFH           ;  0.000 MHz -> ungültig
0269Dh FE                               DEFB      0FEH           ;  1.536 MHz -> ungültig
0269Eh FE                               DEFB      0FEH           ;  3.072 MHz -> ungültig
0269Fh 00                               DEFB      000H           ;  4.608 MHz -> Index 0
026A0h 01                               DEFB      001H           ;  6.144 MHz -> Index 1
026A1h FE                               DEFB      0FEH           ;  7.680 MHz -> ungültig
026A2h 02                               DEFB      002H           ;  9.216 MHz -> Index 2
026A3h FE                               DEFB      0FEH           ; 10.752 MHz -> ungültig
026A4h 03                               DEFB      003H           ; 12.288 MHz -> Index 3
026A5h FE                               DEFB      0FEH           ; 13.824 Mhz -> ungültig
026A6h FE                               DEFB      0FEH           ; 15.360 MHz -> ungültig
026A7h FE                               DEFB      0FEH           ; 16.896 MHz -> ungültig
026A8h 04                               DEFB      004H           ; 18.432 MHz -> Index 4
026A9h FE                               DEFB      0FEH           ; 19.968 MHz -> ungültig
026AAh FE                               DEFB      0FEH           ; 21.504 MHz -> ungültig
026ABh FE                               DEFB      0FEH           ; 23.040 MHz -> ungültig
026ACh 05                               DEFB      005H           ; 24.576 MHz -> Index 5
026ADh                                            
026ADh                                                           ;-------------------------------------------------
026ADh                                            
026ADh 00         FMT_TAB:              DEFB      000H           ; VORBELEGUNG FUER
026AEh 00                               DEFB      000H           ; FORMAT BEFEHL
026AFh 00                               DEFB      000H           ;
026B0h 00                               DEFB      000H           ;
026B1h 02                               DEFB      002H           ; SEKTROR GROESSE (02) 512 BYTE
026B2h 01                               DEFB      001H           ; STARTSEKTOR     (01)
026B3h 0A                               DEFB      00AH           ; ENDSEKTOR       (10)
026B4h 50                               DEFB      050H           ; ANZAHL TRACKS   (80)
026B5h 1B                               DEFB      01BH           ; GAP LAENGE      (27)
026B6h E5                               DEFB      0E5H           ; FUELLBYTE
026B7h 00                               DEFB      000H           ;
026B8h FF                               DEFB      0FFH           ;
026B9h                                            
026B9h                                                           ;-------------------------------------------------
026B9h                                            
026B9h                                                           ; VORDEFINIERTE TAKTFREQUENZEN
026B9h                                            
026B9h 342E363038 TXT_SPEED:            DEFM      '4.608 $$'     ; 03H
026C1h 362E313434                       DEFM      '6.144 $$'     ; 04H
026C9h 392E323136                       DEFM      '9.216 $$'     ; 06H
026D1h 31322E3238                       DEFM      '12.288 $'     ; 08H
026D9h 31382E3433                       DEFM      '18.432 $'     ; 0CH
026E1h 32342E3537                       DEFM      '24.576 $'     ; 10H
026E9h                                            
026E9h            DISKPAGE:                       
026E9h                                            
026E9h                                                           ;                 18H USERBYTES
026E9h D002D002D0                       DEFB      0D0H,002H,0D0H,002H,0D0H,002H,0D0H
026F0h 023000                           DEFB      002H,030H,000H
026F3h 00F0404E0C                       DEFB      000H,0F0H,040H,04EH,00CH,000H,000H
026FAh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02701h                                                           ;                 E8H RESTBYTES
02701h 0000010001                       DEFB      000H,000H,001H,000H,001H,000H,01AH
02708h 0780000000                       DEFB      007H,080H,000H,000H,000H,000H,000H
0270Fh 00000000C3                       DEFB      000H,000H,000H,000H,0C3H,095H,010H
02716h 000A00FFFF                       DEFB      000H,00AH,000H,0FFH,0FFH,000H,000H
0271Dh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02724h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0272Bh 0100000000                       DEFB      001H,000H,000H,000H,000H,0FFH,000H
02732h 00000000                         DEFB      000H,000H,000H,000H
02736h 0000000000 W_2736:               DEFB      000H,000H,000H,000H,000H,000H,000H
0273Dh 00FFFF0000                       DEFB      000H,0FFH,0FFH,000H,000H,000H,000H
02744h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0274Bh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02752h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02759h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02760h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02767h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0276Eh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02775h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0277Ch 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02783h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0278Ah 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02791h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
02798h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
0279Fh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027A6h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027ADh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027B4h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027BBh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027C2h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027C9h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027D0h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027D7h 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027DEh 0000000000                       DEFB      000H,000H,000H,000H,000H,000H,000H
027E5h 00000000                         DEFB      000H,000H,000H,000H
027E9h                                            
027E9h                                            
027E9h 2928       GRIP_ST_TXT:          DEFW      TXT_SPL_ON
027EBh 4328                             DEFW      TXT_STL_OFF
027EDh 5D28                             DEFW      TXT_SCRN_8_8
027EFh 7828                             DEFW      TXT_SCRN_8_10
027F1h 9728                             DEFW      TXT_NO_ASCII
027F3h                                            
027F3h FF                               RST       38H
027F4h FF                               RST       38H
027F5h FF                               RST       38H
027F6h FF                               RST       38H
027F7h FF                               RST       38H
027F8h FF                               RST       38H
027F9h FF                               RST       38H
027FAh FF                               RST       38H
027FBh FF                               RST       38H
027FCh FF                               RST       38H
027FDh FF                               RST       38H
027FEh FF                               RST       38H
027FFh FF                               RST       38H
02800h FF                               RST       38H
02801h FF                               RST       38H
02802h FF                               RST       38H
02803h FF                               RST       38H
02804h FF                               RST       38H
02805h FF                               RST       38H
02806h FF                               RST       38H
02807h FF                               RST       38H
02808h FF                               RST       38H
02809h FF                               RST       38H
0280Ah FF                               RST       38H
0280Bh FF                               RST       38H
0280Ch FF                               RST       38H
0280Dh FF                               RST       38H
0280Eh FF                               RST       38H
0280Fh FF                               RST       38H
02810h FF                               RST       38H
02811h FF                               RST       38H
02812h FF                               RST       38H
02813h FF                               RST       38H
02814h FF                               RST       38H
02815h FF                               RST       38H
02816h FF                               RST       38H
02817h FF                               RST       38H
02818h FF                               RST       38H
02819h FF                               RST       38H
0281Ah FF                               RST       38H
0281Bh FF                               RST       38H
0281Ch FF                               RST       38H
0281Dh FF                               RST       38H
0281Eh FF                               RST       38H
0281Fh FF                               RST       38H
02820h FF                               RST       38H
02821h FF                               RST       38H
02822h FF                               RST       38H
02823h FF                               RST       38H
02824h FF                               RST       38H
02825h FF                               RST       38H
02826h FF                               RST       38H
02827h FF                               RST       38H
02828h FF                               RST       38H
02829h                                            
02829h                                                           ; GRIP-STEUERTEXTE
02829h                                            
02829h 0173706F6F TXT_SPL_ON:           DEFM      01H,"spooler on.......: $"
0283Eh 04                               DEFB      04             ; ANZAHL BYTES
0283Fh 1B1B3530                         DEFM      01BH,01BH,'5','0'
02843h                                            
02843h 0173746174 TXT_STL_OFF:          DEFM      01H,"status line off..: $"
02858h 04                               DEFB      04             ; ANZAHL BYTES
02859h 1B1B5330                         DEFM      01BH,01BH,'S','0'
0285Dh                                            
0285Dh 016D61782E TXT_SCRN_8_8:         DEFM      01H,"max. screen 8*8..: $"
02872h 05                               DEFB      05             ; ANZAHL BYTES
02873h 1B1B38407F                       DEFM      01BH,01BH,'8','@',7FH
02878h                                            
02878h 016D61782E TXT_SCRN_8_10:        DEFM      01H,"max. screen 8*10.: $"
0288Dh 09                               DEFB      09             ; ANZAHL BYTES
0288Eh 1B1B363A1B                       DEFM      01BH,01BH,'6',':',01BH,01BH,'8','9',7FH
02897h                                            
02897h 016E6F6E20 TXT_NO_ASCII:         DEFM      01H,"non ASCII........: $"
028ACh 04                               DEFB      04             ; ANZAHL BYTES
028ADh 1B1B3732                         DEFM      01BH,01BH,37H,32H
028B1h                                            
028B1h                                                           ;---------------------------------------------------------------------
028B1h                                                           ;
028B1h                                                           ; ?????????????????????????
028B1h                                            
028B1h            W_28B1:                         
028B1h 002E2D0E0E                       DEFB      000H,02EH,02DH,00EH,00EH,02CH,02BH,02AH
028B9h 2904280321                       DEFB      029H,004H,028H,003H,021H,002H,020H,020H
028C1h                                            
028C1h 002E002D0E                       DEFB      000H,02EH,000H,02DH,00EH,00EH,00DH,00CH
028C9h 0B290A2809                       DEFB      00BH,029H,00AH,028H,009H,021H,008H,001H
028D1h                                            
028D1h 002E2E2D2D                       DEFB      000H,02EH,02EH,02DH,02DH,02DH,02CH,02BH
028D9h 2A0B290A28                       DEFB      02AH,00BH,029H,00AH,028H,009H,021H,020H
028E1h                                            
028E1h 00012E2E2E                       DEFB      000H,001H,02EH,02EH,02EH,02EH,00EH,00DH
028E9h 0C240B230A                       DEFB      00CH,024H,00BH,023H,00AH,022H,009H,008H
028F1h                                            
028F1h 00202E2E2E                       DEFB      000H,020H,02EH,02EH,02EH,02EH,02DH,02CH
028F9h 2B0C2A0B29                       DEFB      02BH,00CH,02AH,00BH,029H,00AH,028H,021H
02901h                                            
02901h 00022E2E2E                       DEFB      000H,002H,02EH,02EH,02EH,02EH,02DH,00EH
02909h 0D250C240B                       DEFB      00DH,025H,00CH,024H,00BH,023H,00AH,009H
02911h                                            
02911h                                                           ;---------------------------------------------------------------------
02911h                                            
02911h 0D0A       INITXT1:              DEFM      0DH,0AH
02913h 2054545454                       DEFM      ' TTTT  TTTT   TTT  TTTT     TT  TTT   TT T   T',0DH,0AH
02943h 2054202020                       DEFM      ' T   T T   T T   T T       TTT T   T TTT T   T',0DH,0AH
02973h 2054202020                       DEFM      ' T   T T   T T   T T         T T   T   T  T T',0DH,0AH
029A2h 2054545454                       DEFM      ' TTTT  TTTT  T   T TTT  TTT  T  TTT    T   T',0DH,0AH
029D0h 2054202020                       DEFM      ' T     T T   T   T T         T T   T   T  T T',0DH,0AH
029FFh 2054202020                       DEFM      ' T     T  T  T   T T         T T   T   T T   T',0DH,0AH
02A2Fh 2054202020                       DEFM      ' T     T   T  TTT  T         T  TTT    T T   T$'
02A5Eh                                            
02A5Eh 04         INITXT2:              DEFB      04H
02A5Fh 4D6F6E6974                       DEFM      'Monitor Version $'
02A70h 13         INITXT3:              DEFB      013H
02A71h 7265616C20                       DEFM      'real time clock : failed$'
02A8Ah 10         INITXT4:              DEFB      010H
02A8Bh 7379737465                       DEFM      'system data backup : $'
02AA1h 06         TXT_MONITOR:          DEFB      06H
02AA2h 7072657373                       DEFM      'press the <RETURN> key for Monitor or any other key for boot => $'
02AE3h 0F         INITXT5:              DEFB      0FH
02AE4h 6465666175                       DEFM      'default boot device : $'
02AFBh 11         INITXT6:              DEFB      011H
02AFCh 666C6F7070                       DEFM      'floppy controller : $'
02B11h 0F         INITXT7:              DEFB      00FH
02B12h 6861726464                       DEFM      'harddisk controller : $'
02B29h 18         INITXT8:              DEFB      018H
02B2Ah 4550524F4D                       DEFM      'EPROM boot : $'
02B38h 6F6B24     TXT_OK:               DEFM      'ok$'
02B3Bh 6661696C65 TXT_FAILED:           DEFM      'failed$'
02B42h 7061746368 TXT_PATCHED:          DEFM      'patched$'
02B4Ah 6E6F742024 TXT_NOT:              DEFM      'not $'
02B4Fh 16         TXT_SYS_SPEED:        DEFB      016H
02B50h 7379737465                       DEFM      'system speed : $'
02B60h 4D487A24   TXT_MHZ:              DEFM      'MHz$'
02B64h 13         INITXT9:              DEFB      013H
02B65h 6D656D6F72                       DEFM      'memory on board : 1024K byte',0DH,0AH,'$'
02B84h 666C6F7070 TXT_FLOPPY:           DEFM      'floppy drive $'
02B92h 6861726464 TXT_HD:               DEFM      'harddisk$'
02B9Bh 4550524F4D TXT_EPROM:            DEFM      'EPROM$'
02BA1h 0D0A4D6F6E SGNON:                DEFM      0DH,0AH,'Monitor$'
02BABh                                            
02BABh                                            
02BABh            CMDMSG:                                        ; NACH EINGABE EINES ZEICHENS WIRD TEXT AUSGEGEBEN
02BABh                                            
02BABh 4164647265                       DEFM      'Address for read (write) from (to) drive $'
02BD5h 426F6F7420                       DEFM      'Boot CP/M $'
02BE0h 436865636B                       DEFM      'Check drive $'
02BEDh 446973706C                       DEFM      'Display memory $'
02BFDh 4550524F4D                       DEFM      'EPROM test$'
02C08h 46696C6C20                       DEFM      'Fill memory $'
02C15h 476F20746F                       DEFM      'Go to $'
02C1Ch 48656C7024                       DEFM      'Help$'
02C21h 4B6579626F                       DEFM      'Keyboard mode$'
02C2Fh 496E20706F                       DEFM      'In port $'
02C38h                                                           ;                      DEFM      'J:list breakpoints $'
02C38h 4C69737420                       DEFM      'List time$'
02C42h 4D6F766520                       DEFM      'Move memory $'
02C4Fh 4E65772064                       DEFM      'New date and time set$'
02C65h 4F75742070                       DEFM      'Out port $'
02C6Fh                                                           ;                      DEFM      'P:single step $'
02C6Fh                                                           ;                      DEFM      'Q:set breakpoints $'
02C6Fh 5265616420                       DEFM      'Read from drive $'
02C80h 5375627374                       DEFM      'Substitute memory $'
02C93h 5465737420                       DEFM      'Test memory $'
02CA0h 5573657220                       DEFM      'User set up$'
02CACh 5665726966                       DEFM      'Verify memory $'
02CBBh 5772697465                       DEFM      'Write to drive $'
02CCBh 5820526567                       DEFM      'X Register $'
02CD7h 5920666F72                       DEFM      'Y format disk$'
02CE5h                                                           ;                      DEFM      'Z:clear breakpoints $'
02CE5h 00                               DEFB      0              ; ENDEKENNUNG DER BEFEHLSBESCHREIBUNGSLISTE
02CE6h                                            
02CE6h                                            
02CE6h 0000       CADR:                 DEFW      0              ;
02CE8h                                                           ;                      DEFW      JCMD    ;J-Befehl
02CE8h                                                           ;                      DEFW      ZCMD    ;Z-Befehl
02CE8h                                                           ;                      DEFW      QCMD    ;Q-Befehl
02CE8h                                                           ;                      DEFW      PCMD    ;P-Befehl
02CE8h 5D20                             DEFW      YCMD           ;Y-BefeHL
02CEAh 551A                             DEFW      UCMD           ;U-BefeHL
02CECh 291A                             DEFW      KCMD           ;K-BefeHL
02CEEh D617                             DEFW      LCMD           ;L-BefeHL
02CF0h 6619                             DEFW      HCMD           ;H-BefeHL
02CF2h 6911                             DEFW      GCMD           ;G-BefeHL
02CF4h B915                             DEFW      WCMD           ;W-BefeHL
02CF6h F615                             DEFW      ACMD           ;A-BefeHL
02CF8h 9C15                             DEFW      RCMD           ;R-BefeHL
02CFAh 7715                             DEFW      OCMD           ;O-BefeHL
02CFCh 4412                             DEFW      CCMD           ;C-BefeHL
02CFEh F318                             DEFW      TCMD           ;T-BefeHL
02D00h DB18                             DEFW      VCMD           ;V-BefeHL
02D02h C818                             DEFW      FCMD           ;F-BefeHL
02D04h A516                             DEFW      BCMD           ;B-BefeHL
02D06h CB11                             DEFW      XCMD           ;X-BefeHL
02D08h A711                             DEFW      SCMD           ;S-BefeHL
02D0Ah 8711                             DEFW      MCMD           ;M-BefeHL
02D0Ch D615                             DEFW      ICMD           ;I-BefeHL
02D0Eh AD19                             DEFW      ECMD           ;E-BefeHL
02D10h DC10                             DEFW      DCMD           ;D-BefeHL
02D12h DC17                             DEFW      NCMD           ;N-BefeHL
02D14h                                            
02D14h                                            
02D14h                                            
02D14h                                            
02D14h            CTAB:                           
02D14h 4E                               DEFB      'N'
02D15h 44                               DEFB      'D'
02D16h 45                               DEFB      'E'
02D17h 49                               DEFB      'I'
02D18h 4D                               DEFB      'M'
02D19h 53                               DEFB      'S'
02D1Ah 58                               DEFB      'X'
02D1Bh 42                               DEFB      'B'
02D1Ch 46                               DEFB      'F'
02D1Dh 56                               DEFB      'V'
02D1Eh 54                               DEFB      'T'
02D1Fh 43                               DEFB      'C'
02D20h 4F                               DEFB      'O'
02D21h 52                               DEFB      'R'
02D22h 41                               DEFB      'A'
02D23h 57                               DEFB      'W'
02D24h 47                               DEFB      'G'
02D25h 48                               DEFB      'H'
02D26h 4C                               DEFB      'L'
02D27h 4B                               DEFB      'K'
02D28h 55                               DEFB      'U'
02D29h 59                               DEFB      'Y'
02D2Ah                                                           ;                      DEFB      'P'
02D2Ah                                                           ;                      DEFB      'Q'
02D2Ah                                                           ;                      DEFB      'Z'
02D2Ah                                                           ;                      DEFB      'J'
02D2Ah            NCMDS:                EQU       $-CTAB
02D2Ah                                            
02D2Ah                                            
02D2Ah            RTAB:                           
02D2Ah                                            
02D2Ah 41                               DEFB      'A'
02D2Bh C9                               DEFB      ASAVE AND 0FFH
02D2Ch 00                               DEFB      0
02D2Dh 42                               DEFB      'B'
02D2Eh C7                               DEFB      BSAVE AND 0FFH
02D2Fh 00                               DEFB      0
02D30h 43                               DEFB      'C'
02D31h C6                               DEFB      CSAVE AND 0FFH
02D32h 00                               DEFB      0
02D33h 44                               DEFB      'D'
02D34h C5                               DEFB      DSAVE AND 0FFH
02D35h 00                               DEFB      0
02D36h 45                               DEFB      'E'
02D37h C4                               DEFB      ESAVE AND 0FFH
02D38h 00                               DEFB      0
02D39h 46                               DEFB      'F'
02D3Ah C8                               DEFB      FSAVE AND 0FFH
02D3Bh 00                               DEFB      0
02D3Ch 48                               DEFB      'H'
02D3Dh CB                               DEFB      HSAVE AND 0FFH
02D3Eh 00                               DEFB      0
02D3Fh 4C                               DEFB      'L'
02D40h CA                               DEFB      LSAVE AND 0FFH
02D41h 00                               DEFB      0
02D42h 4D                               DEFB      'M'
02D43h CB                               DEFB      HSAVE AND 0FFH
02D44h 01                               DEFB      1
02D45h 50                               DEFB      'P'
02D46h CD                               DEFB      PSAVE+1 AND 0FFH
02D47h 01                               DEFB      1
02D48h 53                               DEFB      'S'
02D49h CF                               DEFB      SSAVE+1 AND 0FFH
02D4Ah 01                               DEFB      1
02D4Bh 61                               DEFB      'a'
02D4Ch BF                               DEFB      AASAVE AND 0FFH
02D4Dh 00                               DEFB      0
02D4Eh 62                               DEFB      'b'
02D4Fh BD                               DEFB      BBSAVE AND 0FFH
02D50h 00                               DEFB      0
02D51h 63                               DEFB      'c'
02D52h BC                               DEFB      CCSAVE AND 0FFH
02D53h 00                               DEFB      0
02D54h 64                               DEFB      'd'
02D55h BB                               DEFB      DDSAVE AND 0FFH
02D56h 00                               DEFB      0
02D57h 65                               DEFB      'e'
02D58h BA                               DEFB      EESAVE AND 0FFH
02D59h 00                               DEFB      0
02D5Ah 66                               DEFB      'f'
02D5Bh BE                               DEFB      FFSAVE AND 0FFH
02D5Ch 00                               DEFB      0
02D5Dh 68                               DEFB      'h'
02D5Eh B9                               DEFB      HHSAVE AND 0FFH
02D5Fh 00                               DEFB      0
02D60h 6C                               DEFB      'l'
02D61h B8                               DEFB      LLSAVE AND 0FFH
02D62h 00                               DEFB      0
02D63h 6D                               DEFB      'm'
02D64h B9                               DEFB      HHSAVE AND 0FFH
02D65h 01                               DEFB      1
02D66h 58                               DEFB      'X'
02D67h C3                               DEFB      XSAVE+1 AND 0FFH
02D68h 01                               DEFB      1
02D69h 59                               DEFB      'Y'
02D6Ah C1                               DEFB      YSAVE+1 AND 0FFH
02D6Bh 01                               DEFB      1
02D6Ch 49                               DEFB      'I'
02D6Dh B7                               DEFB      ISAVE AND 0FFH
02D6Eh 00                               DEFB      0
02D6Fh 52                               DEFB      'R'
02D70h B6                               DEFB      RSAVE AND 0FFH
02D71h 00                               DEFB      0
02D72h 0000                             DEFB      0,0            ;ENDE KENNUNG DER TABELLE
02D74h                                            
02D74h                                            
02D74h                                                           ;
02D74h                                                           ; ERWEITERUNGEN ZUR ARBEIT MIT BREAKPOINTS
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;PCMD:                                          ; SINGLE STEP INSTRUCTION
02D74h                                                           ;
02D74h                                                           ;                      JP        GETCOM         ; NICHT REALISIERT;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;QCMD:                                          ; SET BREAKPOINTS
02D74h                                                           ;                                               ; ALTE BP'S KOENNEN ERHALTEN BLEIBEN
02D74h                                                           ;                                               ; ACHTUNG FEHLER, WENN MEHRMALS GLEICHER BP
02D74h                                                           ;                                               ; GESETZT WIRD
02D74h                                                           ;
02D74h                                                           ;                      LD        B,5            ; MAX. FÜNF BP'S
02D74h                                                           ;                      LD        IX,BRTAB       ; TABELLENANFANG
02D74h                                                           ;
02D74h                                                           ;QCMD1:                PUSH      BC             ; ZAEHLER
02D74h                                                           ;                      LD        L,(IX)         ; BP NACH HL LADEN
02D74h                                                           ;                      LD        H,(IX+1)
02D74h                                                           ;                      CALL      HL_NEU_WRT     ; ALTEN BP DURCH NEUEN ERSETZEN?
02D74h                                                           ;                                               ; NEUER BP IN HL
02D74h                                                           ;                      LD        A,L
02D74h                                                           ;                      OR        H              ; ADRESSE 0? --> BP LOESCHEN
02D74h                                                           ;                      JR        Z,QCMD_L
02D74h                                                           ;                      LD        A,(IX)         ; ADRESSE GLEICH?
02D74h                                                           ;                      CP        L
02D74h                                                           ;                      JR        NZ,QCMD_N      ; UNGLEICH --> NEUER BP
02D74h                                                           ;                      LD        A,(IX+1)
02D74h                                                           ;                      CP        H
02D74h                                                           ;                      JR        NZ,QCMD_N      ; UNGLEICH --> NEUER BP
02D74h                                                           ;
02D74h                                                           ;                      JR        QCMD2          ; BP BLEIBT GESETZT
02D74h                                                           ;
02D74h                                                           ;QCMD_L:               LD        A,(IX)         ; BP LOESCHEN
02D74h                                                           ;                      LD        B,(IX+1) 
02D74h                                                           ;                      OR        B              ; WAR BP VORHANDEN?
02D74h                                                           ;                      JR        Z,QCMD2        ; NEIN, NICHTS ZU TUN
02D74h                                                           ;                      LD        E,(IX)         ; ALTE ADRESSE
02D74h                                                           ;                      LD        D,(IX+1)       ; LADEN
02D74h                                                           ;                      LD        A,(IX+2)       ; ALTER OPCODE
02D74h                                                           ;                      LD        (DE),A         ; RESTAURIEREN
02D74h                                                           ;                      XOR       A
02D74h                                                           ;                      LD        (IX),A         ; LOESCHE BP UND OPCODE  
02D74h                                                           ;                      LD        (IX+1),A       ; IN TABELLE
02D74h                                                           ;                      LD        (IX+2),A
02D74h                                                           ;
02D74h                                                           ;                      JR        QCMD2          ; UND WEITER
02D74h                                                           ;
02D74h                                                           ;QCMD_N:               LD        A,(IX+2)       ; BP LOESCHEN
02D74h                                                           ;                      LD        E,(IX)
02D74h                                                           ;                      LD        D,(IX+1)
02D74h                                                           ;                      LD        (DE),A         ; ALTEN OPCODE RESTAURIEREN
02D74h                                                           ;                      LD        A,(BC)         ; NEUEN BP SETZEN
02D74h                                                           ;                      LD        (IX+2),A
02D74h                                                           ;                      LD        (IX),L
02D74h                                                           ;                      LD        (IX+1),H
02D74h                                                           ;                      LD        A,0FFH         ; RST 7
02D74h                                                           ;                      LD        (BC),A         ; BP AKTIVIEREN
02D74h                                                           ;
02D74h                                                           ;                      
02D74h                                                           ;QCMD2:                INC       IX             ; NAECHSTEN BREAKPOINT VORBEREITEN
02D74h                                                           ;                      INC       IX
02D74h                                                           ;                      INC       IX
02D74h                                                           ;                      POP       BC
02D74h                                                           ;                      DJNZ      QCMD1
02D74h                                                           ;
02D74h                                                           ;                      JP        GETCOM
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;JCMD:                                          ; GIB DIE GESETZTEN BREAKPOINTS AUS
02D74h                                                           ;                      LD        HL,JTXT
02D74h                                                           ;                      CALL      SOUT
02D74h                                                           ;                      LD        DE,BRTAB       ; STARTADRESSE TABELLE
02D74h                                                           ;                      LD        B,5            ; MAX. FÜNF BREAQKPOINTS
02D74h                                                           ;
02D74h                                                           ;JCMD1:                PUSH      DE
02D74h                                                           ;                      LD        A,(DE)
02D74h                                                           ;                      LD        L,A
02D74h                                                           ;                      INC       DE
02D74h                                                           ;                      LD        A,(DE)
02D74h                                                           ;                      LD        H,A
02D74h                                                           ;                      CALL      HLOUT          
02D74h                                                           ;                      LD        C,'H'
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      LD        C,' '
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      POP       DE
02D74h                                                           ;                      INC       DE             ; 2 BYTE ADRESSE
02D74h                                                           ;                      INC       DE
02D74h                                                           ;                      INC       DE             ; 1 BYTE OPCODE
02D74h                                                           ;                      DJNZ      JCMD1
02D74h                                                           ;
02D74h                                                           ;                      JP        GETCOM
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;JTXT:                 DEFM      '(0000H for none)=> $'
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;ZCMD:                                          ; LÖSCHE ALLE BREAKPOINTS
02D74h                                                           ;
02D74h                                                           ;                      LD        B,5            ; MAX. FÜNF BREAKPOINTS RESTAURIEREN
02D74h                                                           ;                      LD        HL,BRTAB
02D74h                                                           ;
02D74h                                                           ;ZCMD1:                LD        A,(HL)         ; BREAKPOINT ADRESSE LESEN
02D74h                                                           ;                      LD        E,A
02D74h                                                           ;                      XOR       A
02D74h                                                           ;                      LD        (HL),A         ; 0 SETZEN
02D74h                                                           ;                      INC       HL             ; OPCODE
02D74h                                                           ;                      LD        A,(HL)
02D74h                                                           ;                      LD        D,A
02D74h                                                           ;                      XOR       A
02D74h                                                           ;                      LD        (HL),A         ; 0 SETZEN
02D74h                                                           ;                      INC       HL
02D74h                                                           ;                      LD        A,D
02D74h                                                           ;                      OR        E              ; BREAKPOINT VORHANDEN GEWESEN?
02D74h                                                           ;                      JR        Z,ZCMD3        ; NÄCHSTEN BREAKPOINT BEARBEITEN
02D74h                                                           ;
02D74h                                                           ;ZCMD2:                
02D74h                                                           ;                      LD        A,(HL)         ; ALTEN OPCODE LESEN UND
02D74h                                                           ;                      LD        (DE),A         ; WIEDERHERSTELLEN
02D74h                                                           ;
02D74h                                                           ;ZCMD3:                INC       HL             ; NAECHSTER BREAKPOINT
02D74h                                                           ;                      DJNZ      ZCMD1
02D74h                                                           ;
02D74h                                                           ;                      JP        GETCOM
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;BRTAB:                DEFW      0                 ; 1. Breakpointadresse
02D74h                                                           ;                      DEFB      0                 ; Befehlscode Breakpoint 1
02D74h                                                           ;                      DEFW      0                 ; 2. Breakpointadresse
02D74h                                                           ;                      DEFB      0                 ; Befehlscode Breakpoint 2
02D74h                                                           ;                      DEFW      0                 ; 3. Breakpointadresse
02D74h                                                           ;                      DEFB      0                 ; Befehlscode Breakpoint 3
02D74h                                                           ;                      DEFW      0                 ; 4. Breakpointadresse
02D74h                                                           ;                      DEFB      0                 ; Befehlscode Breakpoint 4
02D74h                                                           ;                      DEFW      0                 ; 5. Breakpointadresse
02D74h                                                           ;                      DEFB      0                 ; Befehlscode Breakpoint 5
02D74h                                            
02D74h                                            
02D74h                                                           ;PRT_BUF:              PUSH      BC                                        
02D74h                                                           ;                      LD        HL,CMFD_TXT1      ; BUFFER FLOPPY CMD ZEIGEN
02D74h                                                           ;                      CALL      SOUT
02D74h                                                           ;                      pop       bc
02D74h                                                           ;                      LD        A,C
02D74h                                                           ;                      CALL      NMOUT
02D74h                                                           ;                      PUSH      BC
02D74h                                                           ;                      LD        C,' '
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      LD        C,'>'
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      pop       bc
02D74h                                                           ;                      LD        HL,CMDTAB
02D74h                                                           ;                      push      bc
02D74h                                                           ;CMFD0:                LD        A,(HL)
02D74h                                                           ;                      CALL      NMOUT
02D74h                                                           ;                      LD        C,' '
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      INC       HL
02D74h                                                           ;                      DJNZ      CMFD0
02D74h                                                           ;
02D74h                                                           ;                      LD        HL,CMFD_TXT2
02D74h                                                           ;                      CALL      SOUT
02D74h                                                           ;                      POP       BC
02D74h                                                           ;                      RET
02D74h                                                           ;
02D74h                                                           ;CMFD_TXT1:            DEFM      0DH,0AH,"Bef-Code: $"
02D74h                                                           ;CMFD_TXT2:            DEFM      0DH,0AH,"Antwort : $"
02D74h                                            
02D74h                                                           ;PRT_RES:
02D74h                                                           ;                      PUSH      BC                 ; WERT AUS NEXT ROUTINE AUSGEBEN
02D74h                                                           ;                      PUSH      AF
02D74h                                                           ;                      CALL      NMOUT
02D74h                                                           ;                      LD        C,' '
02D74h                                                           ;                      CALL      CECHO
02D74h                                                           ;                      POP       AF
02D74h                                                           ;                      POP       BC
02D74h                                                           ;                      RET
02D74h                                                           ;
02D74h                                            
02D74h                                                           ; DIE DISKPAGE WIRD DER SYSTEMPAGE UEBERLAGERT
02D74h                                            
02D74h            LASTADD:              EQU       $-1            ;LETZTE BENUTZTE ADRESSE IM EPROM
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;************************************* BEGINN DES RAM-BEREICHES ******
02D74h                                                           ;
02D74h                                                           ;
02D74h                                                           ;
02D74h                                  SEGMENT   "DSEG"
00000h                                  ORG       SYSTEMPAGE-1024-256
0FA00h                                                           ;
0FA00h            BOOTADR:              EQU       $              ;HIERHER WIRD ERSTER SEKTOR GELADEN
0FA00h                                                           ;
0FA00h 0000000000                       DEFS      1024           ;PLATZ FUER ERSTEN SEKTOR
0FE00h                                                           ;
0FE00h 0000000000                       DEFS      256-74         ;PLATZ FUER STACK
0FEB6h                                                           ;
0FEB6h            REGS:                 EQU       $
0FEB6h            MSTAK:                EQU       $
0FEB6h                                                           ;
0FEB6h                                                           ; REGISTER INHALTE
0FEB6h                                                           ;
0FEB6h 00         RSAVE:                DEFS      1
0FEB7h 00         ISAVE:                DEFS      1
0FEB8h 00         LLSAVE:               DEFS      1
0FEB9h 00         HHSAVE:               DEFS      1
0FEBAh 00         EESAVE:               DEFS      1
0FEBBh 00         DDSAVE:               DEFS      1
0FEBCh 00         CCSAVE:               DEFS      1
0FEBDh 00         BBSAVE:               DEFS      1
0FEBEh 00         FFSAVE:               DEFS      1
0FEBFh 00         AASAVE:               DEFS      1
0FEC0h 0000       YSAVE:                DEFS      2
0FEC2h 0000       XSAVE:                DEFS      2
0FEC4h 00         ESAVE:                DEFS      1
0FEC5h 00         DSAVE:                DEFS      1
0FEC6h 00         CSAVE:                DEFS      1
0FEC7h 00         BSAVE:                DEFS      1
0FEC8h 00         FSAVE:                DEFS      1
0FEC9h 00         ASAVE:                DEFS      1
0FECAh 00         LSAVE:                DEFS      1
0FECBh 00         HSAVE:                DEFS      1
0FECCh 0000       PSAVE:                DEFS      2
0FECEh 0000       SSAVE:                DEFS      2
0FED0h                                            
0FED0h 0000000000 PCF_CMD_BUF:          DEFS      16             ; (0FED0h)
0FEE0h            W_FEE0:               EQU       0FEE0H         ;
0FEE0h            W_FEE1:               EQU       0FEE1H         ;
0FEE0h            W_FEE2:               EQU       0FEE2H         ;
0FEE0h            W_FEE3:               EQU       0FEE3H         ;
0FEE0h            W_FEE4:               EQU       0FEE4H         ;
0FEE0h            W_FEE5:               EQU       0FEE5H         ;
0FEE0h            W_FEE6:               EQU       0FEE6H         ;
0FEE0h            FMT_VAL:              EQU       0FEE7H         ;
0FEE0h                                            
0FEE0h                                            
0FEE0h            W_FEF0:               EQU       0FEF0H         ;  -272
0FEE0h            W_FEF1:               EQU       0FEF1H         ;  -271
0FEE0h            W_FEF2:               EQU       0FEF2H         ;  -270
0FEE0h            W_FEF3:               EQU       0FEF3H         ;  -269
0FEE0h            W_FEF4:               EQU       0FEF4H         ;  -268
0FEE0h            W_FEF5:               EQU       0FEF5H         ;  -267
0FEE0h            W_FEF6:               EQU       0FEF6H         ;  -266
0FEE0h            W_FEF7:               EQU       0FEF7H         ;  -265
0FEE0h                                            
0FEE0h                                            
0FEE0h                                                           ;
0FEE0h                                                           ; DIE NACHFOLGENDEN SPEICHERZELLEN MUESSEN
0FEE0h                                                           ; MIT DER DISKPAGE GEMISCHT WERDEN KOENNEN
0FEE0h                                                           ;
0FEE0h                                                           ; SYSTEMPAGE:                                  ;
0FEE0h                                            
0FEE0h 0000000000                       ORG       0FF00H
0FF00h                                            
0FF00h 0000000000 SPECD_WORD:           DEFS      8              ; DER INHALT DIESER VIER MAL ZWEI BYTE BESTIMMT DIE
0FF08h                                                           ; STEP-RATE, DIE HEAD-LOAD-TIME UND DIE HEAD-
0FF08h                                                           ; UNLOAD-TIME. SPECD_WORD WIRD NACH EINEM RESET
0FF08h                                                           ; VOREINGESTELLT. NACH JEDEM CHECK DRIVE WERDEN
0FF08h                                                           ; DIE DRIVE-ZEITEN NEU GESETZT.
0FF08h                                                           ; DIE 16 BIT VON SPECD_WORD SIND FOLGENDERMASSEN
0FF08h                                                           ; AUFGEBAUT:
0FF08h                                                           ;          SSSSUUUU LLLLLLLX
0FF08h                                            
0FF08h                                                           ; SSSS:    STEPRATE 0000=16MS
0FF08h                                                           ;                   0001=15MS
0FF08h                                                           ;                   .........
0FF08h                                                           ;                   1111=01MS
0FF08h                                            
0FF08h                                                           ; UUUU:    HEADUNLOADTIME IN 16 MS SCHRITTEN
0FF08h                                                           ;          0000=0MS, 0001=16MS, .. ,1111=240MS
0FF08h                                            
0FF08h                                                           ; LLLLLLL: HEADLOADTIME IN 2 MS SCHRITTEN
0FF08h                                            
0FF08h                                                           ; X: IMMER 1
0FF08h                                            
0FF08h                                                           ; DEFAULTMAESSIG WIRD SPECD_WORD MIT
0FF08h                                                           ; XSPECD_WORD INITIALISIERT, ES KANN ABER
0FF08h                                                           ; AUCH MIT DEM U-BEFEHL GESETZT WERDEN.
0FF08h                                            
0FF08h                                            
0FF08h 00         READY_BYTE:           DEFS      1              ; DIE UNTEREN 4 BITS GEBEN AN, OB EIN LW
0FF09h                                                           ; EIN READY SIGNAL LIEFERN KANN ('0') ODER OB
0FF09h                                                           ; ES KEIN READY LIEFERT ('1').
0FF09h                                                           ; DIE OBEREN 4 BITS GEBEN DIE WAITZYKLEN
0FF09h                                                           ; FUER DEN HD64180 AN. DIE BIT BEDEUTUNG IST
0FF09h                                                           ; DEM DCNTL-PORT IDENTISCH
0FF09h                                                           ; BIT 7-6 = ANZAHL WAIT-ZYKLEN MEMORY
0FF09h                                                           ; BIT 5-4 = ANZAHL WAIT-ZYKLEN I/O
0FF09h                                            
0FF09h 00         TE_TIME:              DEFS      1              ; WARTEZEIT VOR SEEK NACH DISK-WRITE IN 100µs
0FF0Ah                                            
0FF0Ah 00         STEP_WAIT:            DEFS      1              ; WARTEZEIT VOR SEEK WENN MOTOR VORHER AUS WAR
0FF0Bh                                                           ; IST BEI EPSON 3,5 ZOLL LAUFWERKEN NOTWENDIG.
0FF0Bh                                                           ; ZEIT: MAL 10 MS (BEI 6 MHZ)
0FF0Bh                                            
0FF0Bh 00         SEEKNR:               DEFS      1              ; EINIGE LAUFWERKE BENOETIGEN ZWEI STEPIMPULSE
0FF0Ch                                                           ; DIE UNTEREN 4 BIT GEBEN FUER JEDES LW
0FF0Ch                                                           ; AN, OB ES EIN ('0') ODER ZWEI ('1') IMPULSE
0FF0Ch                                                           ; PRO SPURWECHSEL BRAUCHT, LAUFWERK 0 IST LSB.
0FF0Ch                                                           ; DIE OBEREN 4 BIT DIESES BYTES GEBEN AN, OB
0FF0Ch                                                           ; TEST DAS TWO-SIDED-BIT IMMER AUF 1 ODER
0FF0Ch                                                           ; ENTSPRECHEND DER TWO-SIDED-LEITUNG SETZTEN
0FF0Ch                                                           ; SOLL. DURCH DIESE ERWEITERUNG SPART MAN SICH
0FF0Ch                                                           ; DEN HARDWARE-ZUSATZ (SIEHE CP/M ANPASSUNS-
0FF0Ch                                                           ; BESCHREIBUNG) FUER GEMISCHTEN BETRIEB MIT
0FF0Ch                                                           ; 80 TRACK LAUFWERKEN.
0FF0Ch                                                           ; DEFAULTMAESSIG WIRD SEEKNR MIT XSEEKNR
0FF0Ch                                                           ; INITIALISIERT. SEEKNR KANN ABER AUCH MIT DEM
0FF0Ch                                                           ; U-BEFEHL GESETZT WERDEN.
0FF0Ch                                            
0FF0Ch 00         SIO_A_PAR:            DEFS      1              ; DIESE BEIDEN BYTES SIND GLEICH AUFGEBAUT
0FF0Dh 00         SIO_B_PAR:            DEFS      1              ; SIE GELTEN FUER DIE BEIDEN SERIELLEN
0FF0Eh                                                           ; SCHNITTSTELLEN
0FF0Eh                                                           ; DIE UNTEREN VIER BITS GEBEN DIE BAUDRATE
0FF0Eh                                                           ; AN. SIND SIE 0000, WIRD DIE BAUDRATE
0FF0Eh                                                           ; ENTSPRECHEND J10 GESETZT
0FF0Eh                                                           ; SONST  1 =     50   BAUD
0FF0Eh                                                           ;        2 =     75   BAUD
0FF0Eh                                                           ;        3 =    110   BAUD
0FF0Eh                                                           ;        4 =    134.5 BAUD
0FF0Eh                                                           ;        5 =    150   BAUD
0FF0Eh                                                           ;        6 =    300   BAUD
0FF0Eh                                                           ;        7 =    600   BAUD
0FF0Eh                                                           ;        8 =  1.200   BAUD
0FF0Eh                                                           ;        9 =  1.800   BAUD
0FF0Eh                                                           ;        A =  2.400   BAUD
0FF0Eh                                                           ;        B =  3.600   BAUD
0FF0Eh                                                           ;        C =  4.800   BAUD
0FF0Eh                                                           ;        D =  7.200   BAUD
0FF0Eh                                                           ;        E =  9.600   BAUD
0FF0Eh                                                           ;        F = 19.200   BAUD
0FF0Eh                                                           ; BIT 4=0 => 1 STOP BIT, BIT 4=1 => 2 STOP BIT
0FF0Eh                                                           ; BIT 5=0 => NO PARITY,  BIT 5=1 => PARITY
0FF0Eh                                                           ; BIT 6=0 => 7 BIT DATA, BIT 6=1 => 8 BIT DATA
0FF0Eh                                                           ; BIT 7=0 => EVEN PARITY,BIT 7=1 => ODD PARITY
0FF0Eh                                            
0FF0Eh 00         LOG_DRIVE:            DEFS      1              ; BIT 1, BIT 2: DIESE BEIDEN BITS GEBEN AN
0FF0Fh                                                           ; WELCHES PHYSIKALISCHE LAUFWERK, DAS LOGISCHE
0FF0Fh                                                           ; LAUFWERK A IST. Achtung, TEMP_LOG_DRIVE IST
0FF0Fh                                                           ; EINE KOPIE VON LOG_DRIVE. DIE AKTUELLE
0FF0Fh                                                           ; UMRECHNUNG FINDET IMMER MIT TEMP_LOG_DRIVE
0FF0Fh                                                           ; STATT.
0FF0Fh                                                           ; BIT 2=1 WAEHLT CTS AN CPU PIN 52
0FF0Fh                                                           ; BIT 3=1 WAEHLT TDEND0 AN CPU PIN 50
0FF0Fh                                                           ; BIT 4=1 STATT VON FLOPPY, EPROM-BOOT
0FF0Fh                                                           ; BIT 5 IST RESERVIERT
0FF0Fh                                            
0FF0Fh 00         SWITCH_DELAY:         DEFS      1              ; VERZOEGERUNGSZEIT FUER MINI/MAXI UMSCHALTUNG
0FF10h                                                           ; IN 10 MS. IST BEI LAUFWERKEN MIT AUTOMATISCHER
0FF10h                                                           ; UMSCHALTUNG ZWISCHEN MINI-BETRIEB und MAXI-
0FF10h                                                           ; KOMPATIBLEN BETRIEB NOTWENDIG.
0FF10h                                            
0FF10h 00         S_INIT_BYTE:          DEFS      1              ; VEKTOR FUER ZU SENDENDE INITIALISIERUNGSSTRINGS
0FF11h                                            
0FF11h 00         START_DELAY:          DEFS      1              ; STARTVERZÖGERUNG LAUFWERK (FF11)
0FF12h                                            
0FF12h 00         W_FF12:               DEFS      1              ; FREI
0FF13h 00         U_BYTE_1:             DEFS      1              ; USER BYTE 1 (FF13)
0FF14h 00         U_BYTE_2:             DEFS      1              ; USER BYTE 2 (FF14)
0FF15h 00         U_BYTE_3:             DEFS      1              ; USER BYTE 3 (FF15)
0FF16h 00         U_BYTE_4:             DEFS      1              ; USER BYTE 4 (FF16)
0FF17h                                            
0FF17h 00         DATA_CHECK:           DEFS      1              ; IN DIESEM BYTE STEHT DIE PRUEFSUMME DER
0FF18h                                                           ; UNTEREN 23 BYTE. DIE PRUEFSUMME WIRD VOM
0FF18h                                                           ; U-BEFEHL ERRECHNET
0FF18h                                            
0FF18h 00         CMDTAB:               DEFS      1
0FF19h 00         UNIT:                 DEFS      1              ; WIRD VON C-BEFEHL GESETZT
0FF1Ah 00         TRACK:                DEFS      1              ; WIRD VON A-BEFEHL GESETZT
0FF1Bh 00         HEAD:                 DEFS      1              ; WIRD VON A-BEFEHL GESETZT
0FF1Ch 00         SECTOR:               DEFS      1              ; WIRD VON A-BEFEHL GESETZT
0FF1Dh 00         SECSZ:                DEFS      1              ; WIRD VON C-BEFEHL GESETZT
0FF1Eh 00         EOT:                  DEFS      1              ; WIRD VON C-BEFEHL GESETZT
0FF1Fh 00         GAPLL:                DEFS      1              ; WIRD VON C-BEFEHL GESETZT
0FF20h 00         DTLL:                 DEFS      1              ; WIRD VON C-BEFEHL GESETZT
0FF21h                                            
0FF21h 0000000000 REST:                 DEFS      7              ; ERGEBNISTABELLE DES FLOPPY-CONTROLLERS
0FF28h                                            
0FF28h 0000       DISPADR:              DEFS      2              ; LETZTER STAND DES D-BEFEHLS.
0FF2Ah                                                           ; UNTER CP/M STEHT HIER KENNUNG FUER PROF-181X.
0FF2Ah                                            
0FF2Ah 000000     UMLEIT_GETCM:         DEFS      3              ; ROUTINEN, DIE VON CP/M BENUTZT WERDEN, MUESSEN
0FF2Dh                                                           ; UEBER DIESEN SPRUNG AUF BEFEHLS-EINGABE-EBENE
0FF2Dh                                                           ; ZURUECKKEHREN. CP/M BIOS SETZT DIESEN SPRUNG
0FF2Dh                                                           ; DANN AUF WBOOT
0FF2Dh                                            
0FF2Dh 00         DERMSG:               DEFS      1              ; "0"  :AUSGABE VON FLOPPY-FEHLER
0FF2Eh                                                           ; "FF" :AUSGABE VON FLOPPY-FEHLER UNTERDRUECKEN
0FF2Eh                                            
0FF2Eh 00         RWRETRY:              DEFS      1              ; ANZAHL DER LESE/SCHREIBVERSUCHE MIT FLOPPY
0FF2Fh                                            
0FF2Fh 00         WRITE_PRECOM:         DEFS      1              ; WRITE PRECOMPENSATION FUER RWCOM ROUTINE
0FF30h                                                           ; ACHTUNG, DIE ANGEGEBENE WRITEPRECOMPENSATIONS
0FF30h                                                           ; ZEIT WIRD NUR DANN GESETZT, WENN DIE
0FF30h                                                           ; ANGEWAEHLTE SPUR GROESSER GLEICH DER SPUNNR.
0FF30h                                                           ; IN PRECOM_BEGIN IST.
0FF30h                                            
0FF30h 00         ALT_UNIT:             DEFS      1              ; LAUFWERK UND TRACK BEI LETZTEM
0FF31h 00         ALT_TRACK:            DEFS      1              ; SEEK AUFRUF
0FF32h                                            
0FF32h 00         IO_JUMPERBYTE:        DEFS      1              ; STELLUNG DES JUMPERS  J9: 0=KEIN JUMPER
0FF33h                                                           ; 1=>1-3,2=>2-4,3=>3-5,4=>4-6. DIRIGIERT KONSOLE
0FF33h                                            
0FF33h 00         BAUD_JUMPERBYTE:      DEFS      1              ; STELLUNG DES JUMPERS J10: 0=KEIN JUMPER
0FF34h                                                           ; 1=>1-3,2=>2-4,3=>3-5,4=>4-6. BAUDRATE WAEHLEN
0FF34h                                            
0FF34h 00         RWCMD:                DEFS      1              ; COMMANDO FUER RWCOM
0FF35h 0000       ERMSG:                DEFS      2              ; MESSAGE FUER RWCOM
0FF37h 00         DISKFLG:              DEFS      1              ; "0": FDC9268 NICHT OK, "FF": FDC9268 OK
0FF38h 0000000000 TIME_FIELD:           DEFS      7              ; ZWISCHENSPEICHER FUER PFC8583
0FF3Fh 00         TEST_TYPE:            DEFS      1              ; WIRD BEI TEST GESETZT (FORMATERKENNUNG FLOPPY)
0FF40h                                                           ; BIT 7:   0=SS,    1=DS 
0FF40h                                                           ; BIT 6:   0=SD,    1=DD
0FF40h                                                           ; BIT 5:   0=MAXI,  1=MINI
0FF40h                                                           ; BIT 4:   IMMER 0
0FF40h                                                           ; BIT 3:   IMMER 0
0FF40h                                                           ; BIT 2:   IMMER 0
0FF40h                                                           ; BIT 0-1: SEKTROGROESSE
0FF40h                                                           ;
0FF40h 00         TEST_MSEK:            DEFS      1              ; GROESSTER SEKTOR DER SPUR, DEN TEST ERMITTELTE
0FF41h                                                           ;
0FF41h 00         TEST_LSEK:            DEFS      1              ; KLEINSTER SEKTOR DER SPUR, DEN TEST ERMITTELTE
0FF42h                                                           ;
0FF42h 00         TEST_TRACK:           DEFS      1              ; AUF DIESER SPUR WIRD DAS FLOPPY-
0FF43h                                                           ; FORMAT GETESTET (DEFAULT=1)
0FF43h                                            
0FF43h 00         DMABANK:              DEFS      1              ; DMA-BANK FUER FLOPPY READ UND WRITE
0FF44h 0000       DMAADR:               DEFS      2              ; DMA-ADRESSE FUER FLOPPY READ UND WRITE
0FF46h 00         SECTCNT:              DEFS      1              ; ANZAHL DER SEKTOREN FUER FLOPPY READ UND WRITE
0FF47h                                            
0FF47h 00         LAST_FDC_SPEED:       DEFS      1              ; ZEIGT AN, OB FDC AUF MAXI (FF) ODER MINI (00)
0FF48h                                            
0FF48h 00         MON_VERS:             DEFS      1              ; MONITOR VERSIONSNUMMER
0FF49h 00         TEMP:                 DEFS      1              ; ALLGEMEINER MONITOR ZWISCHENSPEICHER
0FF4Ah                                                           ; UNTER CP/M STEHT HIER BIOSVERSION
0FF4Ah 00         COMMON_PAGE:          DEFS      1              ; PAGEGRENZE FUER COMMON BEREICH (SETZT BIOS)
0FF4Bh 00         CURRENT_BANK:         DEFS      1              ; GEWAEHLTE BANK UNTER COMMON (SETZT BIOS)
0FF4Ch 00         EPROMZ:               DEFS      1              ; WIEVIEL MAL WURDE EPROM EINGESCHALTET?
0FF4Dh                                                           ; (WIRD VOM BIOS GESETZT)
0FF4Dh                                            
0FF4Dh 0000       TYPELIST:             DEFS      2              ; ZEIGER AUF DISK_TYPE_LIST (WIRD VOM BIOS
0FF4Fh                                                           ; GESETZT). IM MONITORBETRIEB STEHT HIER DIE
0FF4Fh                                                           ; PRUEFSUMME DES EPROMS.
0FF4Fh                                            
0FF4Fh 00         SPEED:                DEFS      1              ; SYSTEMTAKT IN VIELFACHEN VON 1,536 MHZ
0FF50h                                            
0FF50h 00         TEMP_LOG_DRIVE:       DEFS      1              ; KOPIE VON LOG_DRIVE FUER TEMPORAERE LW
0FF51h                                                           ; UMDEFINITION. B-BEFEHL
0FF51h                                            
0FF51h 00         SERBAUD0:             DEFS      1              ; IN DIESEN BEIDEN BYTES STEHEN DIE WIRKLICH
0FF52h 00         SERBAUD1:             DEFS      1              ; EINGESTELLTEN BAUDRATEN. ENTWEDER DIE VON J10
0FF53h                                                           ; ODER DIE VON FORMAT_SER0 / FORMAT_SER1
0FF53h                                            
0FF53h 0000       LDTL:                 DEFS      2              ; IN DIESEM WORD STEHT DIE LAENGE DER
0FF55h                                                           ; DISK_TYPE_LIST PATCH-AREA, WIRD VON CP/M PLUS
0FF55h                                                           ; GESETZT
0FF55h                                            
0FF55h 00         PRECOM_BEGIN:         DEFS      1              ; AB  DIESEM TRACK PRECOM NOTWENDIG
0FF56h                                            
0FF56h 00         RAMCHIPS:             DEFS      1              ; WENN 00H, DANN  64KBIT CHIPS BESTUECKT
0FF57h                                                           ; WENN FFH, DANN 256KBIT CHIPS BESTUECKT
0FF57h                                            
0FF57h 0000       BOOT_NAME:            DEFS      2              ; DIESES WORT IST NUR UNTER GUELTIG, WENN CP/M VOM EPROM
0FF59h                                                           ; GEBOOTET WURDE (AB MONITOR VERSION 1.3).
0FF59h                                                           ; BOOT_NAME ZEIGT AUF DEN ERSTEN DATEIEINTRAG
0FF59h                                                           ; IM BOOTFAEHIGEN 27512 EPROM. WIRD VOM MONITOR
0FF59h                                                           ; BEI EPROM-BOOT GESETZT, SONST 0000H
0FF59h                                                           ; 
0FF59h 00         HD_DISKFLG:           DEFS      1              ;
0FF5Ah 0000       HD_TRACK:             DEFS      2              ; HD TRACK NO
0FF5Ch 00         HD_HEAD:              DEFS      1              ; HD HEAD NO
0FF5Dh 00         HD_SECTOR:            DEFS      1              ; HD SECTOR NO
0FF5Eh 00         HD_SCTR_TRK:          DEFS      1              ; HD SECTOR / TRACK
0FF5Fh                                            
0FF5Fh 0000000000                       ORG       0FF6FH
0FF6Fh 0000       HD_NO_CYL:            DEFS      2              ; HD NO OF CYLINDERS
0FF71h 00         HD_NO_HEADS:          DEFS      1              ; HD NO OF HEADS
0FF72h 0000       HD_RWC_CYL:           DEFS      2              ; HD START RWC CYLINDER
0FF74h 0000       HD_PRE_CYL:           DEFS      2              ; HD START PRECOM CYLINDER
0FF76h 00         HD_ECC_BYTE:          DEFS      1              ; HD ECC BYTE
0FF77h 00         HD_CTRL_BYTE:         DEFS      1              ; HD CONTROL BYTE
0FF78h 00         OMTI_OK:              DEFS      1              ; HD CONTROLLER FLAG
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                                           ; Word References
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h            W_0303:               EQU       0303H          ;  771
0FF79h                                            
0FF79h                                            
0FF79h            W_0FA0:               EQU       0FA0H          ;  4000
0FF79h                                            
0FF79h                                            
0FF79h            W_D8F0:               EQU       0D8F0H
0FF79h                                            
0FF79h                                            
0FF79h            W_FDDB:               EQU       0FDDBH         ;  -549
0FF79h            W_FDF5:               EQU       0FDF5H         ;  -523
0FF79h                                            
0FF79h                                            
0FF79h                                            
0FF79h                                  END       
