Top secrets sources NedoPC pentevo

Rev

Rev 1011 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


; LAST UPDATE: 12.02.2024 savelij

                TITLE "extend.a80"

; ¨­ä  ¤«ï ᮧ¤ ­¨ï 9 ᥪâ®à  ­®¢®£® ¤¨áª 
DSKINFO         DB 0                    ; +0xE1 - ­®¬¥à ¯¥à¢®£® ᢮¡®¤­®£® ᥪâ®à 
                DB 1                    ; +0xE2 - ­®¬¥à ¯¥à¢®£® ᢮¡®¤­®£® â४ 
                DB 0x16                 ; +0xE3 - ⨯ ¤¨áª¥âë
                DB 0                    ; +0xE4 - ª®«¨ç¥á⢮ ä ©«®¢ ­  ¤¨áª¥â¥
SECFREE         DW 2544                 ; +0xE5 - ª®«¨ç¥á⢮ ᢮¡®¤­ëå ᥪâ®à®¢
                DB 0x10                 ; +0xE7 - ¨¤¥­â¨ä¨ª æ¨®­­ë© ª®¤ TRDOS
                DW 0                    ; +0xE8 - 2 ¡ ©â  0
                DUPL 9," "              ; +0xEA - 9 ¡ ©â 0x20
                DB 0                    ; +0xF3 - 1 ¡ ©â 0
                DB 0                    ; +0xF4 - ª®«¨ç¥á⢮ 㤠«¥­­ëå ä ©«®¢
                DB "RAMDISKO"           ; +0xF5 - ¨¬ï ¤¨áª¥âë
DSK_END

; ®¡à ¡®â稪 ¢ë§®¢  RST 8
DOS2RST8        EX (SP),HL                      ; HL
                PUSH AF                         ; AF
                PUSH BC                         ; BC
                LD A,R
                JP PE,.L1
                LD A,R
.L1             DI
                PUSH AF                         ; RF
                PUSH HL                         ; ADR_RET
                PUSH DE                         ; DE
                IN A,(PEVO_CONF)
                LD L,A
                OR 1
                OUT (PEVO_CONF),A
                LD BC,RD_1WINA0
                IN A,(C)
                LD H,A
                AND 0x3E
                RES 0,H
                LD B,HIGH (RD_DOS7FFD)
                IN E,(C)
                RES 4,E
                DEC B
                IN D,(C)
                LD BC,WIN_A0
                OUT (C),A
                LD B,HIGH (WIN_P0)
                XOR A
                JP ADR_SEL_ROM

EDOS2RST8       LD A,ROM_BAS48 | 0x80
                LD BC,WIN_A0
                CALL WR_BYTE_RET
                LD A,L
                OUT (PEVO_CONF),A
                POP DE
                POP HL
                POP AF
                JP PO,.L1
                EI
.L1             POP BC
                POP AF
                EX (SP),HL
                RET

                DUPL 0x0A01 - $,0xFF

; ABCDEFGHIJKLMNOPQRSTUVWXYZ
EXTEND_COM     
                BBW "CD",CD                     ; ᬥ­  ¯ã⨠­  FAT ãáâனá⢥
                BBW "CLRCMOS",CLRCMOS           ; á¡à®á CMOS ­  §­ ç¥­¨ï ¯® 㬮«ç ­¨î
                BBW "DIR",DIR                   ; ¯®ª § ᮤ¥à¦¨¬®£® ¤¨à¥ªâ®à¨¨ ­  FAT
                BBW "DRIVE",DRIVE               ; ¯®ª § ­ ©¤¥­­ëå/¯¥à¥ª«î祭¨¥ ⥪ã饣® FAT ãáâனáâ¢
                BBW "HELP",HELP                 ; ¢ë¢®¤ ᯨ᪠ ¢®§¬®¦­ëå ª®¬ ­¤
                BBW "MOUNT",MOUNT               ; ¬®­â¨à®¢ ­¨¥ ®¡à §  ­  ¡ãª¢ã A..D
                BBW "UMOUNT",UMOUNT             ; ¤¥¬®­â¨à®¢ ­¨¥ ®¡à §  ­  ¡ãª¢¥ A..D
                BBW "VER",PRT_VERS              ; ¯®ª § ¢¥àᨨ ¨ ¤ âë ᡮન DOS
                BBW "VIRT",SET_VIRT             ; ¯®ª §/¯¥à¥ª«î祭¨¥ ¢¨àâã «ì­®£® ¤¨áª®¢®¤ 
                BBW "TURBO",SET_TURBO           ; ¯à¨­ã¤¨â¥«ì­®¥ ¯¥à¥ª«î祭¨¥ âãà¡®
                DB 0

; ®¡à ¡®â稪 à áè¨à¥­­ëå ª®¬ ­¤
END_EXT_COM     INC DE
                LD A,(DE)
                CP ":"
                DEC DE
                JP NZ,SINTAX_ERROR
                LD A,(DE)
                AND 0DFH
                SUB "A"
                JP C,SINTAX_ERROR
                CP 4
                JR NC,SELFATDRV
                LD (TRD_5CF6),A                 ; ¤¨áª®¢®¤ ¤«ï ¢à¥¬¥­­®© ®¯¥à æ¨¨
                LD (TRD_5D19),A                 ; ¤¨áª®¢®¤ ¯® 㬮«ç ­¨î
                LD B,A
                LD A,(TRD_5D16)                 ; ª®¯¨ï á¨á⥬­®£® ॣ¨áâà  (¯®àâ 0xFF)
                AND 7CH
                OR B
                LD (TRD_5D16),A                 ; ª®¯¨ï á¨á⥬­®£® ॣ¨áâà  (¯®àâ 0xFF)
                LD HL,ERR_OK
                PUSH HL
SET_CURRVIRT    LD H,VIRT_REAL_DRIVE
                CALL READCMOS
                AND %00000011
                LD L,A
                LD A,B
                RLCA
                RLCA
                OR L
                LD L,A
        RST8D _CMOS_RW,_WRITE_CMOS
                RRCA
                RRCA
                AND 3
                OR 0x3C
                RET

SELFATDRV       SUB 4
                PUSH AF
        RST8D _COM_DEV,_DEVFIND
        RST8D _COM_DEV,_KOL_VOL
                POP AF
                CP E
                JP NC,SINTAX_ERROR
        RST8D _COM_DEV,_SET_VOL
                JP ERR_OK

COM_DOT         CALL EXIT_IF_SINTAX
                LD HL,EXTEND_COM
NEXT_CMP_COM    LD A,1
                LD (TRD_5CEF),A
                LD DE,(TRD_5D11)
                INC DE
                LD A,(HL)
                INC HL
                AND A
                JP Z,END_EXT_COM
                LD B,A
LOC_C34         LD A,(DE)
                AND 0DFH
                CP (HL)
                JR NZ,PROPUSK
                INC DE
                INC HL
                DJNZ LOC_C34
                LD A,(DE)
                CP 0DH
                JR Z,NO_PARAM
                CP " "
                JR Z,GET_PARAM
                JR LOC_C58

PROPUSK         INC HL
                DJNZ PROPUSK
LOC_C58         INC HL
                INC HL
                JR NEXT_CMP_COM

GET_PARAM       INC DE
NO_PARAM        LD A,(HL)
                INC HL
                LD H,(HL)
                LD L,A
                PUSH HL
                LD HL,END_COMAND
                EX (SP),HL
                JP (HL)

; ¢ë¢®¤ ¨¬¥­¨ ¢¨àâã «ì­®£® ¤¨áª  ¥á«¨ ­¥ 㪠§ ­® ¨¬ï ¤«ï ¨§¬¥­¥­¨ï
PRT_NUM_VIRT    LD HL,TXT4VIRTDRV
                LD B,ETXT4VIRTDRV-TXT4VIRTDRV-1
                CALL PRT_B_HL_
                LD A," "
                RST 0x10
                LD H,VIRT_REAL_DRIVE
                CALL READCMOS
                AND 3
                ADD A,"A"
                RST 0x10
                LD A,0x0D
                RST 0x10
                RET

                DUPL 0x0B01 - $,0xFF

; ¯à¨à㤨⥫쭮¥ ¯¥à¥ª«î祭¨¥ âãà¡®
SET_TURBO       LD A,(DE)
                CP 0x0D
                JR Z,.L2
                SUB '0'
                INC DE
                CP 3
                JP NC,SINTAX_ERROR
                AND A
                LD C,_TURBO_LOW
                JR Z,.L1
                DEC A
                LD C,_TURBO_HIGH
                JR Z,.L1
                LD C,_TURBO_MAX
.L1             LD A,C
        RST8D _SET_MODE
                RET

; ¯¥ç âì ⥪ã饩 ï áâ®âë ¯à®æ¥áá®à 
.L2             LD HL,.L3
                LD B,.L4-.L3
                CALL PRT_B_HL_
                LD BC,RD_77
                IN D,(C)
                LD BC,RD_EFF7
                IN E,(C)
                LD BC,4
                BIT 3,D
                LD HL,.L4
                JR NZ,.L5
                BIT 4,E
                ADD HL,BC
                JR Z,.L5
                ADD HL,BC
.L5             LD B,C
                JP PRT_B_HL_

.L3             DB "Turbo: "
.L4             DB "14.0"
                DB "7.0 "
                DB "3,5 "
               
; ãáâ ­®¢ª  ¢¨àâã «ì­®£® ¤¨áª 
SET_VIRT        LD A,(DE)
                CP 0x0D
                JR Z,PRT_NUM_VIRT
                LD C,A
                INC DE
                LD A,(DE)
                CP ":"
                JP NZ,SINTAX_ERROR
                LD A,C
                CALL NUMDSK2BYTE                ; ¯®«ã稫¨ ­®¢ë© ­®¬¥à ¤¨áª®¢®¤  㪠§ ­­ë© ¢ ª®¬ ­¤­®© áâப¥
        RST8D _MOUNTER,_SET_VIRT
                RET

; ¯¥ç âì ¢¥àᨨ ¤®á  ¨ ¤ âë ª®¬¯¨«ï樨
PRT_VERS        LD HL,0x3FF8
                LD B,6
                CALL PRT_B_HL_
                LD A," "
                RST 0x10
                LD C,(HL)
                INC HL
                LD B,(HL)
                PUSH BC
                LD HL,ZASTAVKA_VER
                LD B,9
                CALL PRT_B_HL_
                LD A," "
                RST 0x10
                POP BC
                LD A,C
                AND 0x1F                        ; ­ã¦­ë 5 ¡¨â-ç¨á«® ¬¥áïæ 
                CALL A2TXT                      ; ª®­¢¥àá¨ï ¨ 㪫 ¤ª  ¤ âë
                SRL B
                RR C                            ; ᤢ¨­ã«¨ ¤«ï 楫®áâ­®á⨠­®¬¥à  ¬¥áïæ 
                LD A,"."
                RST 0x10
                LD A,C                          ; ¢§ï«¨ ¡¨âë ¬¥áïæ 
                RRCA
                RRCA
                RRCA
                RRCA                            ; ᤢ¨­ã«¨ ¢ ¬« ¤è¨¥ ¡¨âë
                AND 0x0F                        ; ­ ¬ ­ã¦­ë ⮫쪮 4 ¡¨â  ¬¥áïæ 
                CALL A2TXT                      ; ª®­¢¥àá¨ï ¨ 㪫 ¤ª  ¬¥áïæ 
                LD A,"."
                RST 0x10
                LD A,B                          ; ¢§ï«¨ ­®¬¥à £®¤ 
                AND 0x3F                        ; ­ã¦­ë ⮫쪮 6 ¡¨â
                CALL A2TXT                      ; ª®­¢¥àá¨ï ¨ 㪫 ¤ª  £®¤ 
                BIT 6,B                         ; ¥á«¨ ¡¨â 6 (ᤢ¨­ãâë© ¡¨â 7) ãáâ ­®¢«¥­
                RET Z
                LD HL,TXT_BETA
PRT_ROMVER      RST 0x18
                LD A,0x0D
                RST 0x10
                RET

; ¯¥ç âì B = ª®«¨ç¥á⢮ ᨬ¢®«®¢ ¨§ HL =  ¤à¥á ⥪áâ  ¤«ï ¢ë¢®¤ 
PRT_B_HL_       LD A,(HL)
                INC HL
                RST 0x10
                DJNZ PRT_B_HL_
                RET

TXT_BETA        DC " beta"

; ¯¥à¥¢®¤ "A" ¢ ¤¥áïâ¨çªã ¨ ¢ ⥪áâ
A2TXT           LD L,A
                LD H,0
                LD DE,10
                XOR A
                DEC A
.L1             INC A
                SBC HL,DE
                JR NC,.L1
                ADD HL,DE
                ADD A,"0"
                RST 0x10
                LD A,L
                ADD A,"0"
                RST 0x10
                RET

DRIVES          DC "Drives: "
EDRIVES

DRIVE
        RST8D _COM_DEV,_DEVFIND
                JP C,FAT_NOT_FOUND
        RST8D _COM_DEV,_KOL_VOL
                LD A,"D"
                ADD A,E
                PUSH AF
                LD HL,DRIVES
                RST 0x18
                LD A,"E"
                RST 0x10
                LD A,"-"
                RST 0x10
                POP AF
                RST 0x10
                RET

TXT_DIR         DC "<DIR> "
TXT_FATERR      DC "FAT not found"

; ª®¬ ­¤  DIR
DIR             LD B,0
                LD A,(DE)
                INC DE
                CP "/"
                JR NZ,DIR06
                LD A,(DE)
                AND 0xDF
                CP "L"
                JR NZ,DIR06
                LD B,A
DIR06
        RST8D _COM_DEV,_DEVFIND
                JR NC,DIR061
FAT_NOT_FOUND   CALL OPEN_CHAN_0
                LD HL,TXT_FATERR                ; ­¨ ®¤­®£® à §¤¥«  ­¥ ­ ©¤¥­®
                RST 0x18
                RET

DIR061          PUSH IX
                LD IXL,B
                CALL CLEAR_SCREEN
                CALL OPEN_CHAN_2
                LD A,2
        RST8D _COM_FAT,_POS_FILES
DIR05           LD E,0x17
DIR01           PUSH DE
                PUSH BC
                LD HL,TRD_5D25
        RST8D _COM_FAT,_READ_DIR
                LD DE,0x0B
                ADD HL,DE
                LD A,(HL)
                SBC HL,DE
                AND 0x10
                JR Z,DIR04
                PUSH HL
                LD HL,TXT_DIR
                RST 0x18
                POP HL
DIR04           LD A,IXL
                AND A
                JR Z,DIR08
                PUSH HL
        RST8D _COM_FAT,_GET_LONGNAME
                POP HL
DIR03           LD A,(HL)
                AND A
                JR Z,DIR02
                INC HL
                RST 0x10
                JR DIR03

DIR08           LD B,8
DIR081          LD A,(HL)
                CP " "
                JR Z,DIR082
                RST 0x10
                INC HL
                DJNZ DIR081
DIR082          LD A,B
                AND A
                JR Z,DIR085
DIR086          LD A,(HL)
                CP " "
                JR NZ,DIR085
                INC HL
                DJNZ DIR086
DIR085          LD A,(HL)
                CP " "
                JR Z,DIR084
                LD A,"."
                RST 0x10
DIR084          LD B,3
DIR083          LD A,(HL)
                CP " "
                JR Z,DIR02
                RST 0x10
                INC HL
                DJNZ DIR083
DIR02           LD A,0x0D
                RST 0x10
                LD A,4
                LD B,1
        RST8D _COM_FAT,_POS_FILES
                POP HL
                AND A
                SBC HL,BC
                POP DE
                JR Z,DIR07
                DEC E
                JR NZ,DIR01
                JR DIR05

DIR07           POP IX
                RET

; ª®¬ ­¤  CD
CD              PUSH DE
        RST8D _COM_DEV,_DEVFIND
                POP HL
        RST8D _COM_FAT,_FIND_NAME
                JP C,SINTAX_ERROR
        RST8D _COM_FAT,_ENTER_DIR
                RET

NOMER_DRV
        RST8D _COM_DEV,_DEVFIND
                CCF
                RET NC                          ; ­¨ ®¤­®£® à §¤¥«  ­¥ ­ ©¤¥­®
        RST8D _COM_DEV,_KOL_VOL
                CALL CREATE_BUF
                LD HL,TRD_5D25
        RST8D _COM_FAT,_GET_PATH
                CALL PRINT2ZERO
                CALL DEL_BUF
                SCF
                RET

; ª®¬ ­¤  MOUNT
MOUNT           PUSH DE
        RST8D _COM_DEV,_DEVFIND
                EX DE,HL
                POP HL
                JP C,FAT_NOT_FOUND
                PUSH HL
        RST8D _COM_FAT,_FIND_NAME
                JP C,SINTAX_ERROR
                POP DE
                LD B,0x0C
MOUNT02         LD A,(DE)
                CP "!"
                JR C,MOUNT01
                INC DE
                DJNZ MOUNT02
MOUNT01         LD A,(DE)
                CP 0x0D
                JP Z,SINTAX_ERROR
                CP " "
                JP NZ,SINTAX_ERROR
                INC DE
                LD A,(DE)
                CP "A"
                JP C,SINTAX_ERROR
                AND 0xDF
                CP "E"
                JP NC,SINTAX_ERROR
                SUB "A"
                LD C,A
                INC DE
                LD A,(DE)
                CP ":"
                JP NZ,SINTAX_ERROR
                LD A,C
        RST8D _MOUNTER,_OPEN_MOUNT
                RET

; ª®¬ ­¤  UMOUNT
UMOUNT          LD A,(DE)
                INC DE
                AND 0xDF
                LD B,A
                LD A,(DE)
                INC DE
                CP ":"
                JP NZ,SINTAX_ERROR
                LD A,B
                CP "A"
                JP C,SINTAX_ERROR
                CP "E"
                JP NC,SINTAX_ERROR
                SUB "A"
        RST8D _MOUNTER,_CLOSEMOUNT
                RET

; ª®¬ ­¤  ®ç¨á⪨ CMOS
CLRCMOS
        RST8D _CMOS_RW,_CLEAR_CMOS
                RET

; ª®¬ ­¤ë ¢ë¢®¤  ­  íªà ­ ᯨ᪠ à áè¨à¥­­ëå ª®¬ ­¤
HELP            CALL CLEAR_SCREEN
                CALL OPEN_CHAN_2
                LD HL,EXTEND_COM
HELP4           LD C,3
HELP2           LD A,(HL)
                AND A
                RET Z
                INC HL
                LD B,A
                PUSH BC
                LD A,"."
                RST 0x10
HELP1           LD A,(HL)
                INC HL
                RST 0x10
                DJNZ HELP1
                INC HL
                INC HL
                POP BC
                LD A,9
                SUB B
                LD B,A
HELP3           LD A," "
                RST 0x10
                DJNZ HELP3
                DEC C
                JR NZ,HELP2
                LD A,0x0D
                RST 0x10
                JR HELP4

; ç⥭¨¥ CMOS
;   ¢å®¤¥: H -  ¤à¥á ï祩ª¨
;           L - ¯à®ç¨â ­­®¥ §­ ç¥­¨¥
READCMOS        PUSH BC
                LD BC,CMOSD_SET_ADR
                OUT (C),H
                LD B,HIGH (CMOSD_RD_WR)
                IN L,(C)
                POP BC
                LD A,L
                AND A
                RET

; § ¯¨áì CMOS
;   ¢å®¤¥: H -  ¤à¥á ï祩ª¨
;           L - çâ® â㤠 § ¯¨á âì
WRITECMOS
        RST8D _CMOS_RW,_WRITE_CMOS
                RET