Rev 643 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
;LAST UPDATE: 30.08.2017 savelij
LOAD4FLASH LD HL,ROMS
LD DE,CMP4ROMS
JR FATBOOT4
COPYIMAGE LD HL,IMAGES
LD DE,CMP4IMAGE
JR FATBOOT4
;
FATBOOT LD HL,HOBETA
LD DE,CMP4HOBETA
FATBOOT4 DI
LD (GDE_EXT_FILES),HL
LD (CMP_FOUNDED),DE
LD HL,ADRTBLDIRL
LD (DIR_LEVEL),HL ;
LD HL,FLAGS
SET B_RUN_FAT_DSK,(HL) ;
FAT
CALL COM_DEV
DB Devfind ;
JP C,_STUPID ;,
LD B,E ;
LD IX,SEL_FAT_DEV ;
LD (IX+0X10),E ;
INC E
INC E
LD (IX+2),E ;
LD DE,6 ;
-2
EXX
LD HL,TXT_FAT_SEL
LD DE,SEL_FAT_DRV ;
LD BC,ETXT_FAT_SEL-TXT_FAT_SEL
LDIR
EX DE,HL
EXX
FATBOOT1 EXX
LD (HL),0X0D
INC HL
LD (HL),3
INC HL
EXX
LD A,(HL) ;
INC HL
LD C,(HL) ;MASTER SLAVE
INC HL
ADD A,C
ADD A,C
SUB 4 ;-4,
ADD A,A
ADD A,A
ADD A,A
ADD A,A ;
16
EXX
EX DE,HL
LD HL,TXT4MENU_DEVICE ;
LD C,A
LD B,0
ADD HL,BC ;
LD BC,0X10 ;
16
EXX
LD A,L
EXX
RRCA
RRCA
RRCA
AND 0X1F
ADD A,"E" ;
LD (DE),A
INC DE
LDIR ;
EXX
LD A,(HL) ;
EXX
LD C,A
ADD A,A
ADD A,A
ADD A,C ;
5
LD HL,TXT4MENU_TYPE ;
LD C,A
ADD HL,BC
LD C,5
LDIR ;
EX DE,HL
EXX
ADD HL,DE
DJNZ FATBOOT1
EXX
LD (HL),0
INC HL
LD B,(IX+2)
DEC B
DEC B
LD C,B
LD A,"e"
LD (HL),B
INC HL
FATBOOT3 LD (HL),A ;
INC HL
INC A
DJNZ FATBOOT3
LD (SELFATDEVEXE),HL ;
LD B,C
FATBOOT2 LD (HL),LOW (SEL_FAT) ;
INC HL
LD (HL),HIGH (SEL_FAT)
INC HL
DJNZ FATBOOT2
LD A,C
EXX
DEC A
JR Z,SEL_FAT
CALL WINW ;
JP _RULILKA ;
;
SEL_FAT DI
LD A,(IX+0X12) ;
CALL COM_DEV
DB Set_vol ;
CALL COM_FAT
DB Wc_fat ;
CALL SEARCH_FILE
LD HL,1
AND A
SBC HL,BC ;
- ?
JR NZ,SEL_FAT1 ;
>1,
PUSH BC ;
LD BC,(ADR_CAT) ;
LD A,6
CALL COM_FAT
DB Positf
CALL COM_FAT
DB Getfzap ;
POP BC ;
LD DE,0X0B
ADD HL,DE
LD A,(HL) ;
AND 0X10
LD HL,0 ;
,
0
JR Z,RUN_HOB1 ;
SEL_FAT1 LD IX,FAT_FILES ;
,
JP OUT_HOB
; HOBETA
RUN_HOB DI
CALL SHUT2AY ; AY
LD L,(IX+0X12)
LD H,(IX+0X13)
RUN_HOB1 LD DE,ADR_CAT
ADD HL,HL
ADD HL,DE ;
LD C,(HL)
INC HL
LD B,(HL) ;
LD A,6
CALL COM_FAT
DB Positf ;
FAT
CALL COM_FAT
DB Getfzap ;
LD DE,0X0B ;
ADD HL,DE
LD A,(HL) ;
SBC HL,DE
AND 0X10 ;
JR Z,GO_RUN_HOB ;
,
PUSH BC ;
CALL COM_FAT
DB Ent_dir ;/ /
POP BC ;
LD A,D ;
LD HL,0 ;
DIR_LEVEL EQU $-2
CP "." ;
".",
JR NZ,SNYT0 ;
INC HL ;
LD A,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
LD (DIR_LEVEL),HL ;
LD (IX+0X12),E
LD (IX+0X13),D
LD (IX+0X0F),A
CALL SEARCH_FILE
LD (IX+0X10),C
LD (IX+0X11),B ;
JP REOUT_HOB ;
;
SNYT0 LD D,(IX+0X13)
LD E,(IX+0X12)
LD A,(IX+0X0F)
LD C,(IX+0X10)
LD B,(IX+0X11)
LD (HL),D
DEC HL
LD (HL),E
DEC HL
LD (HL),A
DEC HL
LD (DIR_LEVEL),HL ;
CALL SEARCH_FILE
JP OUT_HOB
GO_RUN_HOB PUSH HL ;
LD DE,0X14 ;
ADD HL,DE ; 16
LD C,(HL)
INC HL
LD B,(HL) ;
16
LD E,5 ;
16
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL) ;
BCDE= 32-
LD IXL,0
CALL COM_FAT ;
FAT
DB Load_file ;
POP HL
LD DE,8
ADD HL,DE
LD A,(HL)
CP "$"
JP NZ,LOAD_IMAGE ;
CALL COM_DEV
DB Kol_vol ;
LD A,D ;
ADD A,A
ADD A,A
ADD A,A
LD C,A
LD B,0
ADD HL,BC
LD A,(HL) ;
SUB 4 ;
EX AF,AF' ;
"A"
INC HL
LD A,(HL) ;
(MASTER/SLAVE)
EX AF,AF'
LD HL,0X5800
LD DE,0X5801
LD BC,0X02FF
LD (HL),L
LDIR ;
LD HL,ERORDRV
LD DE,0X4200
LD B,1
LDIR ;
MICROBOOT
PUSH DE ;
LD HL,MICROBOOT
LD BC,END_MICROBOOT-MICROBOOT
LDIR ;
PUSH AF
LD HL,RUN_CODE
LD DE,0X5D3B
LD BC,ERUN_CODE-RUN_CODE
LDIR
CALL MEMSET ;
CALL FOR_RUN
POP AF
RET ; :)
; FDI
LOAD_FDI LD A,PAGE_RAMDISK ;
PUSH AF ;
CALL SET4MBPAGE ;
LD HL,FDI_TABLE_CYL
LD DE,FDI_TABLE_CYL+1
LD BC,0X3FFF
LD (HL),0
LDIR ;
LD IXH,0XFF
CALL LOAD1SECFDI ;
LD A,(0XC006) ;
DEC A
LD A,(0XC004) ;
JR Z,LOADFDI1
ADD A,A ;
2,
2
LOADFDI1 LD C,A ;
LD HL,(0XC00A)
; LD A,H
; SRL A
; ADC A,0
; LD H,A
; LD DE,(0XC008)
; AND A
; SBC HL,DE
LD (START_DATA),HL
LD DE,0X4000 ;
LD HL,0XC00F ;
FDI
LOADFDI3 BIT 1,H
CALL NZ,LOAD1SECFDI ;
LD A,(HL) ; 8-15
AND 0X3F ; 8-13 -
LD (DE),A ;
LD A,(HL) ; 14-15
INC HL ;
FDI
INC D ;
BIT 1,H
CALL NZ,LOAD1SECFDI ;
LD B,A ;
14-15
LD A,(HL) ; 16-23
RL B
RLA
RL B
RLA
LD (DE),A ;
INC D
REPT 4
INC HL
ENDM
BIT 1,H
CALL NZ,LOAD1SECFDI ;
LD B,(HL) ;
LD A,B
AND A
JP Z,LOADFDI_ERR
INC HL
INC HL
LOADFDI4 INC HL
BIT 1,H
CALL NZ,LOAD1SECFDI ;
LDI ;
DEC DE
INC C
INC D
BIT 1,H
CALL NZ,LOAD1SECFDI ;
LD A,(HL) ;
EX DE,HL
LD (HL),1
AND A
JR Z,LOADFDI2
LD (HL),2
DEC A
JR Z,LOADFDI2
LD (HL),4
DEC A
JR Z,LOADFDI2
LD (HL),8
LOADFDI2 EX DE,HL
INC D
REPT 5
INC HL
ENDM
DJNZ LOADFDI4 ;
,
LD D,0X40
INC E
DEC C
JR NZ,LOADFDI3 ;
DEC HL
BIT 1,H
CALL NZ,LOAD1SECFDI ;
PUSH HL
LD A,H
AND 1
LD B,A
LD C,L
LD A,IXH
ADD A,A
ADD A,B
LD B,A
LD HL,0
START_DATA EQU $-2
AND A
SBC HL,BC
EX DE,HL
POP HL
LD A,D
AND A
JR Z,LOADFDI7
LOADFDI8 INC H
BIT 1,H
CALL NZ,LOAD1SECFDI ;
DEC D
JR NZ,LOADFDI8
LOADFDI7 ADD HL,DE
BIT 1,H
CALL NZ,LOAD1SECFDI ;
PUSH HL ;
LD DE,0XC000
AND A
SBC HL,DE
LD (OSTAT_SECT),HL ;
LD B,H
LD C,L
LD HL,0X200
SBC HL,BC
LD (NACH_SECT),HL ;
POP HL ;
,
LOADFDI5 POP AF
INC A
CALL SET4MBPAGE
PUSH AF
BIT 1,H
CALL NZ,LOAD1SECFDI
EX AF,AF'
LD DE,0X4000
LD BC,0
NACH_SECT EQU $-2
LDIR
EX AF,AF'
JP C,ELOAD_IMAGE
EX DE,HL
LD IXL,0X1F
CALL COM_FAT
DB Load_file
JP C,ELOAD_IMAGE
PUSH HL
LD HL,0XC000
PUSH HL
LD IXL,1
CALL COM_FAT
DB Load_file
POP HL
POP DE
LD BC,0
OSTAT_SECT EQU $-2
LDIR
JR LOADFDI5
LOADFDI_ERR LD A,PAGE_RAMDISK
CALL SET4MBPAGE
LD HL,0X7FFF
LD (HL),0
DEC H
LD (HL),0
LD A,0XFA
CALL SET4MBPAGE
LD SP,(LD_FILE_SP)
POP IY
POP IX
JP LDFDI_ERROR
CREATE_RAMTABL PUSH IX
PUSH IY
LD (LD_FILE_SP),SP
LD SP,ADR_CAT
;
TRD SCL
END_LOAD_TRD LD A,PAGE_RAMDISK+1 ;
CALL SET4MBPAGE
LD HL,(0X48E1) ;
LD A,L
LD L,H
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
OR L
LD L,A ;
LD DE,(0X48E5) ;
ADD HL,DE
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL ;H=
LD A,H
CP 0XA0
JR NC,ELT3
LD A,0XA0
ELT3 EX AF,AF'
LD A,PAGE_RAMDISK ; ,
CALL SET4MBPAGE
LD HL,0X4000
PUSH HL
LD DE,0X4001
LD BC,0X3FFF
LD (HL),L
LDIR ;
POP DE ;
LD HL,0 ;
EX AF,AF'
ELT2 EX AF,AF'
LD BC,0X1000 ;
LD A,L
RRCA
RRCA
LD (DE),A ;
INC D
LD A,H
LD (DE),A ;
INC D
ELT1 INC C
LD A,C
LD (DE),A ;
INC D
LD A,2
LD (DE),A ;
INC D
DJNZ ELT1 ;
LD D,0X40 ;
INC E ;
LD BC,0X40
ADD HL,BC ;
EX AF,AF'
DEC A
JR NZ,ELT2 ;
;
1
ELOAD_IMAGE LD A,PAGE_RAMDISK
CALL SET4MBPAGE
LD HL,0X7FFF
LD (HL),"R"
DEC H
LD (HL),"D"
LD A,0XFA
CALL SET4MBPAGE
LD SP,0
LD_FILE_SP EQU $-2
POP IY
POP IX
RET
;
FDI
LOAD1SECFDI PUSH HL
PUSH BC
PUSH DE
PUSH AF
LD HL,0XC000
LD IXL,1
CALL COM_FAT
DB Load_file
INC IXH
POP AF
POP DE
POP BC
POP HL
RES 1,H
RET
;
1
SET4MBPAGE PUSH BC
LD B,A
PEC_ON SHADOW_BF
; LD A,1
; OUT (PEVO_CONF),A
LD A,B
LD BC,WIN_P5
OUT (C),A
LD B,A
PEC_OFF SHADOW_BF
; XOR A
; OUT (PEVO_CONF),A
LD A,B
POP BC
RET
LOAD_IMAGE DI
CP "R"
LD HL,FLASHER
JR Z,LOAD_IMAGE8
LD HL,RESTART
LOAD_IMAGE8 PUSH HL
PUSH IX
PUSH IY
LD (LD_FILE_SP),SP
LD SP,ADR_CAT
CP "S" ; SCL ?
JR Z,LOAD_IMAGE2
CP "F" ; FDI ?
JP Z,LOAD_FDI
CP "T" ; TRD ?
JR NZ,LOAD_ROM
LD A,PAGE_RAMDISK+1
; TRD
LOAD_IMAGE1 PUSH AF
CALL SET4MBPAGE
LD HL,0X4000
LD IXL,0X20
CALL COM_FAT
DB Load_file
JP C,END_LOAD_TRD;ELOAD_IMAGE
POP AF
INC A
JR LOAD_IMAGE1
LOAD_ROM CP "R" ; ROM ?
JP NZ,ELOAD_IMAGE
LD A,PAGE4FLASHER
JR LOAD_IMAGE1
; SCL
LOAD_IMAGE2 LD HL,DSKINFO
LD DE,ADR_CAT+0XF00
LD BC,DSK_END-DSKINFO
LDIR ;
LD A,PAGE_RAMDISK+1
LOAD_IMAGE4 PUSH AF
CALL SET4MBPAGE ;
LD HL,0X5000
LD IXL,0X18
CALL COM_FAT ;
0X18
SCL
DB Load_file
PUSH AF ;
LD HL,0X4000
PUSH HL ;
LD (HL),L
LD D,H
LD E,L
INC DE
LD BC,0XFFF
LDIR ;
LD HL,0X5008 ;
SCL
LD A,(HL) ;
INC HL ;
EXX
LD HL,0 ;
LD D,L ;
255
LD B,A ;
EXX
POP DE ;
LOAD_IMAGE3 EX AF,AF'
LD BC,0X0D
LDIR ;
13
LD A,(HL) ;
LDI ;
EXX
LD E,A
PUSH HL ;
ADD HL,DE ;
EXX
EX (SP),HL
LD A,L
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
INC H
AND 0X0F
LD L,A
EX (SP),HL
POP BC ;
EX DE,HL
LD (HL),C
INC HL
LD (HL),B ;
INC HL
EX DE,HL
EX AF,AF'
DEC A
JR NZ,LOAD_IMAGE3 ;
PUSH HL ;
LD HL,ADR_CAT+0XF00
LD DE,0X48E1
LD BC,DSK_END-DSKINFO
LDIR
EXX
LD DE,2544 ;
EX DE,HL
AND A
SBC HL,DE
LD (0X48E5),HL ;
EX DE,HL
LD A,L
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
INC H
AND 0X0F
LD L,A
LD (0X48E1),HL ;
LD A,B
LD (0X48E4),A ;
EXX
POP DE ;
LD HL,0X8000 ;
AND A
SBC HL,DE ;
LD B,H
LD C,L
LD HL,0X5000 ;
EX DE,HL
LDIR ;,
DE=
LD A,D
CP 0X7E
JR NC,LOAD_IMAGE7
EX DE,HL
SRL A
LD IXL,A
CALL COM_FAT
DB Load_file
LD DE,0X8000
EX DE,HL
LOAD_IMAGE7 AND A
SBC HL,DE ;
LD (OST_HWOST),HL
LD (KUDA_HWOST),DE
LD DE,0
EX DE,HL
SBC HL,DE
LD A,1
AND H
LD H,A
LD (NEXT4PAGE),HL
POP AF ;
JP C,END_LOAD_TRD;ELOAD_IMAGE ;
,
JR LOAD_IMAGE5
LOAD_IMAGE6 LD DE,0X4000
LD BC,0
NEXT4PAGE EQU $-2
LDIR
EX AF,AF'
JP C,END_LOAD_TRD;ELOAD_IMAGE
EX DE,HL
LD IXL,0X1F
CALL COM_FAT
DB Load_file
JP C,END_LOAD_TRD;ELOAD_IMAGE
LOAD_IMAGE5 LD HL,ADR_CAT
PUSH HL
LD IXL,1
CALL COM_FAT
DB Load_file
EX AF,AF' ;
POP HL ;
LD DE,0
KUDA_HWOST EQU $-2 ;
LD BC,0
OST_HWOST EQU $-2 ;
LDIR
POP AF
INC A
PUSH AF
CALL SET4MBPAGE
JR LOAD_IMAGE6
;
HOBETA
;
: =1-
CMP4HOBETA SUB 1
RET NZ
LD A,(BUF_512+8)
CP "C" ;
,
-
SCF
RET NZ
PUSH DE ;
LD B,H
LD C,L ;
CALL HOB_CRC ;
CRC HOBETA
LD A,(BC)
INC BC
LD E,A
LD A,(BC)
LD D,A ; "DE"
CRC
AND A ; "HL"
+0X0F
SBC HL,DE ;
POP DE ;
SCF
RET NZ ;
EXX
LD HL,(BUF_512+9) ;
DEC HL ; 40960 (160
)
LD DE,(BUF_512+0X0B) ;
ADD HL,DE ;
EXX ;
RET C ;
EXX
LD HL,(BUF_512+9)
LD DE,0X6000 ;
AND A ;
0X6000
SBC HL,DE
EXX ;
0X6000
RET
;
: BC-
;
: HL-HOBETA CRC
HOB_CRC LD A,0X0F
LD HL,0
EXX
LD E,0
EXX
HOBCRC1 EX AF,AF'
LD A,(BC)
LD E,A
LD D,A
ADD HL,DE
EXX
LD A,E
INC E
EXX
LD E,A
LD D,0
ADD HL,DE
EX AF,AF'
INC BC
DEC A
JR NZ,HOBCRC1
RET
CMP4ROMS EXX
LD A,B
OR D
OR E
JR NZ,CMP4IMAGE2
LD A,C
CP 8
JR NZ,CMP4IMAGE2
EXX
CMP4ROMS1 AND A
RET
CMP4IMAGE2 EXX
SCF
RET
CMP4FDI PUSH HL
EXX
POP HL
LD A,(HL)
CP "F"
JR NZ,CMP4IMAGE2
INC HL
LD A,(HL)
CP "D"
JR NZ,CMP4IMAGE2
INC HL
LD A,(HL)
CP "I"
JR NZ,CMP4IMAGE2
INC HL
INC HL
LD A,(HL) ;
CP 0X57
JR NC,CMP4IMAGE2
INC HL
LD A,(HL) ;
0
AND A
JR NZ,CMP4IMAGE2
INC HL
LD A,(HL) ;
AND A
JR Z,CMP4IMAGE2
CP 3
JR NC,CMP4IMAGE2
INC HL
LD A,(HL) ; 0
AND A
JR NZ,CMP4IMAGE2
EXX
AND A
RET
CMP4IMAGE CP 3
JR Z,CMP4FDI
SUB 1
RET Z ; TRD
; SCL
"SINCLAIR"
8
PUSH HL
EXX
POP HL
LD DE,SIGN_SCL
LD B,8
CMP4IMAGE1 LD A,(DE)
CP (HL)
JR NZ,CMP4IMAGE2
INC DE
INC HL
DJNZ CMP4IMAGE1
EXX
AND A
RET
SEARCH_FILE LD DE,ADR_CAT ;
LD HL,0 ;
GDE_EXT_FILES EQU $-2
CALL COM_FAT
DB Find_file ;
RET Z
JR SEARCHF2
SEARCHF1 CALL COM_FAT
DB Next_find
RET Z
SEARCHF2 CALL 0
CMP_FOUNDED EQU $-2
RLA
AND 1
JR SEARCHF1
;
FLASHER LD IX,ERASE_ROM
CALL WINW
LD (FLASH_SP),SP
LD SP,ADR_CAT
PEC_ON SHADOW_BF+FLASH_BF
; LD A,3
; OUT (PEVO_CONF),A
LD A,3
CALL SETWIN_INDICAT
LD E,0
LD HL,0
FLASHER4 CALL ERASE_BLK
LD A,0XFA
EX AF,AF'
CALL INC_INDICAT
INC E
BIT 3,E
JR Z,FLASHER4
LD A,0XFF
LD BC,WIN_P3;0XF7F7
OUT (C),A
LD IX,UPDATE_WIN
CALL WINW
LD A,PAGE4FLASHER
LD E,0
FLASHER3 LD HL,0
PUSH AF
LD A,0XFA
LD BC,WIN_P5;0X77F7
OUT (C),A
LD A,E
ADD A,2
CALL SETWIN_INDICAT
POP AF
FLASHER2 PUSH AF
LD BC,WIN_P5;0X77F7
OUT (C),A
EX AF,AF'
PUSH IX
LD IX,0X4000
FLASHER1 LD A,(IX)
CALL PGM_BYTE
INC IX
INC HL
LD A,H
AND 0X0F
OR L
CALL Z,INC_INDICAT
LD A,IXH
AND 0X80
JR Z,FLASHER1
POP IX
POP AF
INC A
LD D,A
LD A,H
AND A
LD A,D
JR NZ,FLASHER2
INC E
BIT 3,E
JR Z,FLASHER3
EFLASHER LD A,0XFA
LD BC,WIN_P5;0X77F7
OUT (C),A
LD BC,WIN_A3;0XFFF7
LD A,0XFF
OUT (C),A
PEC_OFF SHADOW_BF+FLASH_BF
; XOR A
; OUT (PEVO_CONF),A
LD SP,0
FLASH_SP EQU $-2
JP RESTART