Top secrets sources NedoPC pentevo

Rev

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


;LAST UPDATE: 30.06.2019 savelij

;€„…‘ –ˆŠ‹€ Ž™…ˆŸ ‘Ž ‘…ŠŽŒ
COMINT_         EQU 0X026E

;€„…‘ “‘’€Ž‚™ˆŠ€ „€‰‚…€ € NeoGS
SETUPSD         EQU 0X5B00

;„€‰‚… SD-CARD „‹Ÿ NGS

;‚•Ž„›… €€Œ…’› Ž™ˆ…:
;HL-€„…‘ ‡€ƒ“‡Šˆ ‚ €ŒŸ’œ
;BCDE-32-• ˆ’›‰ ŽŒ… ‘…Š’Ž€
;A-ŠŽ‹ˆ—…‘’‚Ž ‹ŽŠŽ‚ (‹ŽŠ=512 €‰’)
;’Ž‹œŠŽ „‹Ÿ ŒŽƒŽ‹Ž—Ž‰ ‡€ˆ‘ˆ/—’…ˆˆ

;Ž˜ˆŠˆ ‚›„€‚€…Œ›… € ‚›•Ž„…:
;A=0-ˆˆ–ˆ€‹ˆ‡€–ˆŸ Ž˜‹€ “‘…˜Ž
;A=1-Š€’€ … €‰„…€ ˆ‹ˆ … Ž’‚…’ˆ‹€

COMSDG          EX AF,AF'
                LD A,IYL
                AND A
                LD A,(NEXTBYTERST8)
                JR Z,COMSDG1
                EX (SP),HL
                LD A,(HL)
                INC HL
                EX (SP),HL
COMSDG1         ADD A,A
                PUSH HL
                LD HL,RET4SDG
                EX (SP),HL
                PUSH HL
                LD HL,NGSSDT
                ADD A,L
                LD L,A
                ADC A,H
                SUB L
                LD H,A
                LD A,(HL)
                INC HL
                LD H,(HL)
                LD L,A
                EX AF,AF'

                EX (SP),HL
                RET

RET4SDG         PUSH AF
                LD A,IYL
                AND A
                JR NZ,RET4SDG1
                LD (RREG_L),HL
                EX (SP),HL
                LD (RREG_F),HL
                EX (SP),HL
RET4SDG1        POP AF
                RET

NGSSDT          DW GSDINIT      ;ˆˆ’ SD Š€’›
                DW GSDCMP       ;Ž‚…Š€ €‹ˆ—ˆŸ SD Š€’›
                DW SDRDMUL      ;—ˆ’€’œ "A" ‘…Š’ŽŽ‚
                DW SDWRMUL      ;ˆ‘€’œ "A" ‘…Š’ŽŽ‚

;‡€ˆ‘œ "A" ‘…Š’ŽŽ‚
SDWRMUL         EX AF,AF'
                LD A,_DEV_WRITE
                CALL COMM2SD
                EX AF,AF'

                PUSH DE
                PUSH BC
                LD BC,GSDAT
SDWRSN1         EX AF,AF'
                OUT (GSCOM),A
                CALL WC_
                LD DE,0X0200
SDWRSN2         OUTI
                CALL WD_
                DEC DE
                LD A,D
                OR E
                JR NZ,SDWRSN2
                EX AF,AF'

                DEC A
                JR NZ,SDWRSN1
                CALL WN_
                IN A,(GSDAT)
                CP 0X99                         ;Š€’€ Ž’…Ÿ‹€‘œ Ž ‚…ŒŸ —’…ˆŸ/‡€ˆ‘ˆ
                JP Z,SD_CARD_LOST
                POP BC
                POP DE
                XOR A
                RET

;—’…ˆ… "A" ‘…Š’ŽŽ‚
SDRDMUL         EX AF,AF'
                LD A,_DEV_READ
                CALL COMM2SD
                EX AF,AF'

                PUSH DE
                PUSH BC
                LD D,A
                LD A,IYL
                BIT 1,A
                JR NZ,SDRDSN3
                AND A
                JR NZ,SDRDSN5
SDRDSN3        
;               LD A,(R_7FFD)
                READ_7FFD
                AND 0X10
                LD BC,(B0_CPU2)
                JR Z,SDRDSN4
                LD BC,(B1_CPU2)
SDRDSN4         LD A,0X37
                OR B
                LD B,A
                LD A,C
                LD C,LOW (WIN_A0)
                OUT (C),A
SDRDSN5         LD A,D
                LD BC,GSDAT
SDRDSN1         EX AF,AF'
                OUT (GSCOM),A
                IN A,(GSCOM)
                RRA
                JR C,$-3
                LD DE,0X0200                    ;Ž„Ž‹†€…Œ …‘‹ˆ ‚‘… ‚ ŽŸ„Š…
SDRDSN2         IN A,(GSCOM)
                RLA
                JR NC,$-3
                INI
                DEC DE
                LD A,D
                OR E
                JR NZ,SDRDSN2
                EX AF,AF'

                DEC A
                JR NZ,SDRDSN1
                IN A,(GSCOM)
                RLA
                JR NC,$-3
                IN A,(GSDAT)
                CP 0X99                         ;Š€’€ Ž’…Ÿ‹€‘œ Ž ‚…ŒŸ —’…ˆŸ/‡€ˆ‘ˆ
                JP Z,SD_CARD_LOST
                LD BC,WIN_P6
                XOR A
                OUT (C),A
                POP BC
                POP DE
                RET

;Ž‚…Š€ €‹ˆ—ˆŸ Š€’Ž—Šˆ
GSDCMP          LD H,CMOS_BYTE_01
                ROMCALL READCMOS,ROM_RST82
                LD A,L
                AND M_ACCESSSDG                 ;Ž‚…Š€ €‡…˜…ˆŸ „Ž‘’“€ Š SD Š€’… NEOGS
                JR Z,SD_NO                      ;‚›•Ž„ …‘‹ˆ „Ž‘’“ Š Š€’Ž—Š… ‡€…™…
                LD A,(FLAGS_DRV)
                AND B_INST_SDG
                JR Z,SD_NO                      ;‚›•Ž„ …‘‹ˆ „€‰‚… … “‘’€Ž‚‹…
                XOR A
                OUT (GSDAT),A
                LD A,0X1D
                OUT (GSCOM),A
                IN A,(GSCOM)
                RRA
                JR C,$-3
                IN A,(GSDAT)
                LD D,A
                AND 0X0F
                LD E,A
                LD A,D
                AND 0XF0
                RRCA
                RRCA
                RRCA
                RRCA
                CP E
                LD A,1
                JR NZ,GSDINIT1
                CALL INSTSDD

;ˆˆ–ˆ€‹ˆ‡€–ˆŸ Š€’Ž—Šˆ
GSDINIT         XOR A
GSDINIT1        CALL COMM2SD
                CALL WN_
GSDINIT2        IN A,(GSDAT)
GSDINIT3        CP 0X99                         ;Š€’€ Ž’…Ÿ‹€‘œ Ž ‚…ŒŸ —’…ˆŸ/‡€ˆ‘ˆ
                JP Z,SD_CARD_LOST
                CP 0X77
                JR NZ,SD_NO
                XOR A
                RET

SD_NO           LD A,1
                RET

;……„€’—ˆŠ ŠŽŒ€„/€€Œ…’Ž‚ ‚ „€‰‚… € NeoGS
COMM2SD         OUT (GSDAT),A           ;“˜‹€ ŠŽŒ€„€ „€‰‚…“
                LD A,0X1E
                OUT (GSCOM),A
                CALL WC_                ;“˜‹€ ŠŽŒ€„€ Ž˜ˆ‚Š…
                LD A,B
                OUT (GSDAT),A
                CALL WD_                ;“˜‹ˆ ˆ’› 31-24 €€Œ…’Ž‚
                LD A,C
                OUT (GSDAT),A
                CALL WD_                ;“˜‹ˆ ˆ’› 23-16 €€Œ…’Ž‚
                LD A,D
                OUT (GSDAT),A
                CALL WD_                ;“˜‹ˆ ˆ’› 15-8 €€Œ…’Ž‚
                LD A,E
                OUT (GSDAT),A
                CALL WD_                ;“˜‹ˆ ˆ’› 7-0 €€Œ…’Ž‚
                EX AF,AF'
                OUT (GSDAT),A
                EX AF,AF'

                DUPL 9,0
                RET                     ;“˜‹Ž ŠŽ‹-‚Ž ‘…Š’ŽŽ‚

;Ž†ˆ„€ˆ… ŠŽƒ„€ NeoGS €‰’ ‡€……’
WD_             IN A,(GSCOM)
                RLA
                JR C,$-3
                RET

;Ž†ˆ„€ˆ… ŠŽƒ„€ NeoGS „€‘’ €‰’
WN_             IN A,(GSCOM)
                RLA
                JR NC,$-3
                RET

;Ž†ˆ„€ˆ… ŠŽƒ„€ NeoGS ŠŽŒ€„“ ‡€……’
WC_             IN A,(GSCOM)
                RRA
                JR C,$-3
                RET

;“‘’€Ž‚™ˆŠ „€‰‚…€ € NeoGS
INSTSDD         LD A,0X80
                OUT (GSCTR),A                   ;Ž‹›‰ ‘Ž‘ NEOGS
                EI
                HALT
                EI
                HALT
                EI
                HALT
                DI
                LD A,0XF3
                OUT (GSCOM),A
                LD B,0X30
ISDD1           EI
                HALT
                DI
                DEC B
                JR Z,SD_NO
                IN A,(GSCOM)
                RRA
                JR C,ISDD1
                LD BC,GSDAT
                IN A,(C)
                LD DE,0X0300
                LD HL,SETUPSD
                OUT (C),E
                LD A,0X14
                OUT (GSCOM),A
                CALL WC_
                OUT (C),D
                CALL WD_
                OUT (C),L
                CALL WD_
                OUT (C),H
                CALL WD_
                LD HL,UKLAD1
ISDD3           OUTI
                CALL WD_
                DEC DE
                LD A,D
                OR E
                JR NZ,ISDD3
                LD HL,SETUPSD
                OUT (C),L
                LD A,0X13
                OUT (GSCOM),A
                CALL WC_
                OUT (C),H
                EI
                HALT
                EI
                HALT
                DI
                LD B,3
                IN A,(GSDAT)
                DEC B
                JP Z,SD_NO
                CP 0X77
                JP NZ,SD_NO
                XOR A
                RET

UKLAD1  ;Ž’Š“„€ ŠŽ„ € ƒ‘ ‡€Šˆ„›‚€’œ

                PHASE SETUPSD

;‘€Œ “‘’€Ž‚™ˆŠ „€‰‚…€ „‹Ÿ NeoGS
                DI
                LD A,0X9C
                OUT (SCTRL),A           ;ŠŽ”ˆƒ“€’Ž NeoGS
                CALL AVTODET
                AND A
                LD A,0X77               ;0X77-NeoGS €‰„…
                JR Z,$+4
                LD A,0XCC               ;0XCC-€‰„… OLDGS
                OUT (ZXDATWR),A
                OUT (CLRCBIT),A
                JP NZ,COMINT_
                DI
                IN A,(GSCFG0)
                RES B_RAMRO,A
                OUT (GSCFG0),A
                LD HL,0X1D00
                LD (0X0300+(0X1E*2)),HL
                LD DE,UKLAD2
                LD BC,GSDDRVE-GSDDRV
                EX DE,HL
                LDIR
                IN A,(GSCFG0)
                SET B_RAMRO,A
                OUT (GSCFG0),A
                JP COMINT_

;Ž‚…Š€ —’Ž ’Ž NeoGS ˆ ‚Š‹ž—…ˆ… —€‘’Ž’› 24MHz
AVTODET         IN A,(GSCFG0)
                AND 0XCF
                OUT (GSCFG0),A          ;Ž€’€Ÿ ‡€ˆ‘œ ‚ Ž’ ‘Ž ‘Ž˜…›Œˆ
                                        ;ˆ’€Œˆ 5-4 ‚Š‹ž—€…’ —€‘’Ž’“ Ž–…‘‘Ž€
                                        ;€‚›Œ 24 Œƒæ
                LD D,A
                IN A,(GSCFG0)
                CP D
                LD A,0
                RET Z
                DEC A
                RET

UKLAD2  ;Ž’Š“„€ ŠŽ„ ……Šˆ„›‚€’œ

                DEPHASE

                PHASE 0X1D00

;Ž™€Ÿ ’Ž—Š€ ‚•Ž„€ „‹Ÿ €Ž’› ‘ SD Š€’Ž‰
GSDDRV          DI
                IN A,(ZXDATRD)          ;ˆ…Œ ŠŽŒ€„› „€‰‚…€
                OUT (CLRCBIT),A         ;‘Ž‘ COMANDBIT
                LD HL,COMINT_
                PUSH HL
                PUSH IY
                LD IYH,0X77
                ADD A,A
                LD E,A
                LD D,0
                LD HL,TABLSDG
                ADD HL,DE
                LD E,(HL)
                INC HL
                LD D,(HL)
                EX DE,HL
                CALL WDY
                IN A,(ZXDATRD)          ;ˆ…Œ ˆ’Ž‚ 31-24 €€Œ…’€
                LD B,A
                CALL WDY
                IN A,(ZXDATRD)          ;ˆ…Œ ˆ’Ž‚ 23-16 €€Œ…’€
                LD C,A
                CALL WDY
                IN A,(ZXDATRD)          ;ˆ…Œ ˆ’Ž‚ 15-8 €€Œ…’€
                LD D,A
                CALL WDY
                IN A,(ZXDATRD)          ;ˆ…Œ ˆ’Ž‚ 7-0 €€Œ…’€
                LD E,A
                CALL WDY
                IN A,(ZXDATRD)          ;ˆ…Œ ŠŽ‹-‚Ž ‘…Š’ŽŽ‚
                JP (HL)

TABLSDG         DW SDINITG              ;0 €€Œ…’Ž‚ … ’…“…’, € ‚›•Ž„… A
                                        ;‘ŒŽ’ˆ ‚›˜… …‚›… 2 ‡€—…ˆŸ
                DW SDCMPG               ;1 Ž‚…Š€ €‹ˆ—ˆŸ SD Š€’›
                DW RDMULG               ;2 —ˆ’€’œ "A" ‘…Š’ŽŽ‚
                DW WRMULG               ;3 ˆ‘€’œ "A" ‘…Š’ŽŽ‚

SDCMPG          LD A,CMD_58
                LD BC,SD_RSTR
                CALL OUT_COG
                CALL INOOUTG
                IN A,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                INC A
                JP NZ,OK_WORK
                LD IYH,0X88                     ;Š€’€ … Ž˜‹€ Ž‚…Š“ € €‹ˆ—ˆ…
                JP OK_WORK

ZAW003G         LD IYH,0XEE                     ;Š€’€ …Ž€“†…€
                JP OK_WORK

SDINITG         CALL CSHIGHG
                LD BC,SD_SEND
                LD DE,0X20FF
                OUT (C),E
                DEC D
                JR NZ,$-3
                LD BC,SD_RSTR
                XOR A
                EX AF,AF'
ZAW001G         LD HL,CMD00G
                CALL OUTCOMG
                CALL INOOUTG
                EX AF,AF'

                DEC A
                JR Z,ZAW003G
                EX AF,AF'
                DEC A
                JR NZ,ZAW001G
                LD HL,CMD08G
                CALL OUTCOMG
                CALL INOOUTG
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                LD HL,0
                BIT 2,A
                JR NZ,ZAW006G
                LD H,0X40
ZAW006G         LD A,CMD_55
                CALL OUT_COG
                CALL INOOUTG
                LD BC,SD_SEND
                LD A,ACMD_41
                OUT (C),A
                NOP
                OUT (C),H
                NOP
                OUT (C),L
                NOP
                OUT (C),L
                NOP
                OUT (C),L
                LD A,0XFF
                OUT (C),A
                CALL INOOUTG
                AND A
                JR NZ,ZAW006G
ZAW004G         LD A,CMD_59
                CALL OUT_COG
                CALL INOOUTG
                AND A
                JR NZ,ZAW004G
ZAW005G         LD HL,CMD16G
                CALL OUTCOMG
                CALL INOOUTG
                AND A
                JR NZ,ZAW005G
                JP OK_WORK

CSHIGHG         PUSH AF
                LD A,M_SDNCS+M_SNCLR    ;0X81
                OUT (SCTRL),A
                POP AF
                RET

CSLOWG          PUSH AF
                LD A,M_SDNCS            ;1
                OUT (SCTRL),A
                POP AF
                RET

OUTCOMG         CALL CSLOWG
                PUSH BC
                LD BC,0X0600+SD_SEND
                OTIR
                POP BC
                RET

OUT_COG         PUSH BC
                CALL CSLOWG
                LD BC,SD_SEND
                OUT (C),A
                XOR A
                OUT (C),A
                NOP
                OUT (C),A
                NOP
                OUT (C),A
                NOP
                OUT (C),A
                DEC A
                OUT (C),A
                POP BC
                RET

SECM20G         PUSH HL
                PUSH DE
                PUSH BC
                PUSH AF
                PUSH BC
                LD A,CMD_58
                LD BC,SD_RSTR
                CALL OUT_COG
                CALL INOOUTG
                IN A,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                INC A
                JR NZ,SECN20G1
                LD IYH,0X99                     ;Š€’€ Ž’…Ÿ‹€‘œ
SECN20G1        DEC A
                BIT 6,A
                POP HL
                JR NZ,SECN20G
                EX DE,HL
                ADD HL,HL
                EX DE,HL
                ADC HL,HL
                LD H,L
                LD L,D
                LD D,E
                LD E,0
SECN20G         POP AF
                LD BC,SD_SEND
                OUT (C),A
                NOP
                OUT (C),H
                NOP
                OUT (C),L
                NOP
                OUT (C),D
                NOP
                OUT (C),E
                LD A,0XFF
                OUT (C),A
                POP BC
                POP DE
                POP HL
                RET

INOOUTG         PUSH DE
                LD DE,0X80FF
INWAITG         IN A,(SD_RSTR)
                CP E
                JR NZ,INEXITG
                DEC D
                JR NZ,INWAITG
INEXITG         POP DE
                RET

CMD00G          DB 0X40,0X00,0X00,0X00,0X00,0X95        ;GO_IDLE_STATE
CMD08G          DB 0X48,0X00,0X00,0X01,0XAA,0X87        ;SEND_IF_COND
CMD16G          DB 0X50,0X00,0X00,0X02,0X00,0XFF        ;SET_BLOCKEN

;……„€—€ Ž„ŽƒŽ ‘…Š’Ž€ ‚ SD Š€’“
WRSECTG         LD BC,SD_SEND
                OUT (SD_SEND),A
                IN A,(ZXSTAT)
                RRA
                JR NC,$-3
                OUT (CLRCBIT),A
                LD HL,0X0200
WRSECTG1        CALL WDY
                IN A,(ZXDATRD)
                DEC HL
                OUT (C),A
                LD A,H
                OR L
                JR NZ,WRSECTG1
                LD A,0XFF
                OUT (C),A
                NOP
                OUT (C),A
                RET

;……„€—€ Ž„ŽƒŽ ‘…Š’Ž€ € ‘…Š
RDSECTG         IN A,(ZXSTAT)
                RRA
                JR NC,$-3
                OUT (CLRCBIT),A
                LD BC,SD_RSTR
                LD HL,0X0200
RDSECTG1        IN A,(C)
                DEC HL
                OUT (ZXDATWR),A
                CALL WDN
                LD A,H
                OR L
                JR NZ,RDSECTG1
                IN A,(C)
                NOP
                IN A,(C)
                RET

;‡€ˆ‘œ "A" ‘…Š’ŽŽ‚
WRMULG          EX AF,AF'

                LD A,CMD_25
                CALL SECM20G
                LD A,IYH
                CP 0X99
                JR Z,ERR_WR_LOST
WRMULG3         CALL INOOUTG
                INC A
                JR NZ,WRMULG3
                EX AF,AF'
WRMULG1         EX AF,AF'

                LD A,0XFC
                CALL WRSECTG
WRMULG2         CALL INOOUTG
                INC A
                JR NZ,WRMULG2
                EX AF,AF'
                DEC A
                JR NZ,WRMULG1
                LD C,SD_SEND
                LD A,0XFD
                OUT (C),A
                CALL INOOUTG
                INC A
                JR NZ,$-4
                JR OK_WORK

ERR_WR_LOST     LD BC,SD_SEND
                OUT (SD_SEND),A
                IN A,(ZXSTAT)
                RRA
                JR NC,$-3
                OUT (CLRCBIT),A
                LD HL,0X0200
ERRWRLOST1      CALL WDY
                IN A,(ZXDATRD)
                DEC HL
                LD A,H
                OR L
                JR NZ,ERRWRLOST1
                JP OK_WORK

ERR_RD_LOST     IN A,(ZXSTAT)
                RRA
                JR NC,$-3
                OUT (CLRCBIT),A
                LD BC,SD_RSTR
                LD HL,0X0200
ERRRDLOST1      XOR A
                OUT (ZXDATWR),A
                CALL WDN
                DEC HL
                LD A,H
                OR L
                JR NZ,ERRRDLOST1
                JP OK_WORK

;‡€ƒ“‡Š€ "A" ‘…Š’ŽŽ‚
RDMULG          EX AF,AF'

                LD A,CMD_18
                CALL SECM20G
                LD A,IYH
                CP 0X99
                JR Z,ERR_RD_LOST
                EX AF,AF'
RDMULG1         EX AF,AF'

                CALL INOOUTG
                CP 0XFE
                JR NZ,$-5
RDMULG5         CALL RDSECTG
                EX AF,AF'
                DEC A
                JR NZ,RDMULG1
                LD A,CMD_12
                CALL OUT_COG
RDMULG3         CALL INOOUTG
                INC A
                JR NZ,RDMULG3

OK_WORK         CALL CSHIGHG
                LD A,IYH
                POP IY

OUTSTAT         OUT (ZXDATWR),A

;Ž†ˆ„€ˆ… ŠŽƒ„€ ‘…Š ‡€……’ €‰’ „€›•
WDN             IN A,(ZXSTAT)
                RLA
                JR C,$-3
                RET

;Ž†ˆ„€ˆ… ŠŽƒ„€ ‘…Š „€‘’ €‰’ „€›•
WDY             IN A,(ZXSTAT)
                RLA
                JR NC,$-3
                RET
GSDDRVE
                DEPHASE