Top secrets sources NedoPC pentevo

Rev

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


;LAST UPDATE: 04.08.2019 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,DOS2RST8_01
                LD A,R
DOS2RST8_01     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)
                AND 0X3E
                LD BC,RD_1WINA0
                IN H,(C)
                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 BC,DOS_NOEMUL
                LD A,(BC)
                AND 0X3E
                CP E
                JR Z,EDOS2RST02
                INC BC
EDOS2RST02      LD A,(BC)
                LD BC,WIN_A0
                CALL WR_BYTE_RET
                LD A,L
                OUT (PEVO_CONF),A
                POP DE
                POP HL
                POP AF
                JP PO,EDOS2RST01
                EI
EDOS2RST01      POP BC
                POP AF
                EX (SP),HL
                RET

;ABCDEFGHIJKLMNOPQRSTUVWXYZ
EXTEND_COM     
                BBW "CD",CD
                BBW "CLRCMOS",CLRCMOS
                BBW "DIR",DIR
                BBW "DRIVE",DRIVE
                BBW "HELP",HELP
                BBW "MOUNT",MOUNT
                BBW "UMOUNT",UMOUNT
                BBW "VER",PRT_VERS
                BBW "VIRT",SET_VIRT
                BBW "ROM",VIEW_ROM
                DB 0

VIEW_ROM        LD HL,ROM_VER
                JP PRT_ROMVER

;[Ž€Ž’—ˆŠ €‘˜ˆ…›• ŠŽŒ€„]
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)                 ; ŠŽˆŸ ‘ˆ‘’…ŒŽƒŽ …ƒˆ‘’€ (Ž’ #FF)
                AND 7CH
                OR B
                LD (TRD_5D16),A                 ; ŠŽˆŸ ‘ˆ‘’…ŒŽƒŽ …ƒˆ‘’€ (Ž’ #FF)
                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
;               RST8D _MOUNTER,_GET_VIRT_BITS
;               RST30 _SET_VIRT_BITS
                RRCA
                RRCA
                AND 3
                OR 0X3C
                RST30 _OUT_FF
                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

;[“‘’€Ž‚Š€ ‚ˆ’“€‹œŽƒŽ „ˆ‘Š€]
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                ;Ž‹“—ˆ‹ˆ Ž‚›‰ ŽŒ… „ˆ‘ŠŽ‚Ž„€ “Š€‡€›‰ ‚ ŠŽŒ€„Ž‰ ‘’ŽŠ…
                LD D,A                          ;‘Ž•€ˆ‹ˆ ‚…Œ…Ž ‘„‚ˆ“’›‰ Ž‚›‰ ŽŒ… ‚ˆ’“€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
                LD H,VIRT_REAL_DRIVE
                CALL READCMOS
                AND %11111100                   ;‘Ž‘ ‘’€ŽƒŽ ŽŒ…€ ‚ˆ’“€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
                OR D                            ;„Ž€‚ˆ‹ˆ Ž‚›‰ ŽŒ… ‚ˆ’“€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
                LD L,A
                RST8D _CMOS_RW,_WRITE_CMOS
;               AND 3
;               RST8D _MOUNTER,_MOUNT_RAMDISK
                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
                INC A
                SBC HL,DE
                JR NC,$-3
                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

        IF EMU
READ_BYTE_HL    PUSH BC
                PUSH HL
                LD A,(NUM_ALT_PAGE)
                PUSH AF
                LD A,ROM_BAS48|0X80
                LD BC,WIN_A0
                CALL WR_BYTE_RET
                LD L,(HL)
                POP AF
                CALL WR_BYTE_RET
                LD A,L
                CP 0X0D
                POP HL
                POP BC
                RET

;[€‹œ’…€’ˆ‚Ž… ŠŽˆŽ‚€ˆ… ‘…Š’Ž€ „‹Ÿ €Œ„ˆ‘Š€]
SV_LD_RAMDISK   PUSH HL
                CALL CP_TYPEDRIVE
                POP HL
                JP NZ,WR_NUM_TRACK              ;ˆ … ‘Ž‚€„…ˆˆ €Ž’€ Ž„Ž‹†€…’‘Ÿ ‘ …€‹œŽ‰ „ˆ‘Š…’Ž‰
                POP HL                          ;ˆ€—… €Ž’€…Œ ‘ €Œ„ˆ‘ŠŽŒ
                POP HL
                POP BC
                XOR A
                OR B
                RET Z
                DI
                PUSH IX                         ;‘Ž•€ˆ‹ˆ „‹Ÿ ‚“’……ƒŽ ˆ‘Ž‹œ‡Ž‚€ˆŸ
                LD IX,(TRD_5CCE)                ;—’…ˆ… ˆ‹ˆ ‡€ˆ‘œ? 00-—’…ˆ…, FF-‡€ˆ‘œ, ‘Ž•€ˆ‹ˆ „‹Ÿ „€‹œ…‰˜…ƒŽ ˆ‘Ž‹œ‡Ž‚€ˆŸ
SVLDRAM1        PUSH BC
                PUSH HL
                LD DE,(TRD_5CF4)
                CALL COM_04
                LD A,E
                CALL COM_03
                INC A
                RST30 _OUT_5F
                LD A,D
                PUSH HL
                CALL COM_02
                POP HL
                RST30 _WR_RD_SECT               ;—’…ˆ…/‡€ˆ‘œ ‘…Š’Ž€
                LD A,0X10
                LD HL,TRD_5CF4
                INC (HL)                        ;“‚…‹ˆ—…ˆ… ŽŒ…€ ‘…Š’Ž€
                CP (HL)
                JR NZ,SVLDRAM2
                LD (HL),0                       ;…‘‹ˆ ‚›•Ž„ ‡€ …„…‹› ’…Š€, ’Ž ‘…Š’Ž =0
                INC HL
                INC (HL)                        ;ˆ “‚…‹ˆ—ˆ‚€…Œ ŽŒ… ’…Š€
SVLDRAM2        POP HL
                POP BC
                INC H                           ;“‚…‹ˆ—ˆ‹ˆ €„…‘ ŠŽˆŽ‚€ˆŸ € 256 €‰’
                DJNZ SVLDRAM1
                POP IX                          ;ŽŽ‹œ‡Ž‚€‹ˆ‘œ ˆ ‚Ž‘‘’€Ž‚ˆ‹ˆ
                EI
                RET

;[—’…ˆ…/‡€ˆ‘œ ‘…Š’Ž€ ˆŒŽ’ˆŽ‚€ŽƒŽ Ž€‡€]
WR_RD_SEC_M     PUSH IX
                LD (TEMP_SP),SP
                LD HL,(DOS_STEK)
                LD DE,SAVED_RAM
                LD BC,0X10
                LDIR
                LD SP,HL
                LD A,(PORT_3F)                  ;‚‡Ÿ‹ˆ ŽŒ… ’…Š€
                ADD A,A                         ;‘’ŽŽ 2
                LD D,A
                LD A,(WR_FF)
                AND 0X10                        ;Ž‚…Š€ Š€Š€Ÿ ‘’ŽŽ€ „ˆ‘Š€
                JR NZ,WRRDSECM1
                INC D                           ;„‹Ÿ ‘’ŽŽ› 1
WRRDSECM1       LD A,(PORT_5F)                  ;‚‡Ÿ‹ˆ ŽŒ… ‘…Š’Ž€
                LD E,A                          ;D-’…Š, E-‘…Š’Ž
                LD HL,(REG_L)                   ;HL=€„…‘ —’…ˆŸ/‡€ˆ‘ˆ
                LD A,(WR_FF)
                AND 3
                LD C,A                          ;ŽŒ… „ˆ‘ŠŽ‚Ž„€
                LD A,IXL
                AND A                           ;BIT 7=0-—’…ˆ…
                JR Z,WRRDSECM2
                LD A,0X80                       ;BIT 7=1-‡€ˆ‘œ
WRRDSECM2       OR C
                LD IXL,A                        ;A=ŽŒ… „ˆ‘ŠŽ‚Ž„€+ˆ’ —’…ˆŸ/‡€ˆ‘ˆ
                LD A,(TEK_ROMPAGE)
                AND 0X3E
                LD IXH,A
                LD BC,WIN_A0
                OUT (C),A
                LD A,IXL
                RST8D _MOUNTER,_RDWR_MOUNT
                LD BC,WIN_A0
                LD A,IXH
                OUT (C),A
                LD B,HIGH (WIN_P0)
                LD A,RAM_EVODOS
                OUT (C),A
                LD (REG_L),HL                   ;ŽŽ‚ˆ‹ˆ €„…‘ —’…ˆŸ/‡€ˆ‘ˆ
                LD HL,SAVED_RAM
                LD DE,(DOS_STEK)
                LD BC,0X10
                LDIR
                LD SP,(TEMP_SP)
                POP IX
                RET
        ENDIF

;[—’…ˆ… 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