1 line
3.8 KiB
NASM
1 line
3.8 KiB
NASM
ORG #C000
|
|
;-------
|
|
INTM EQU #FEFF
|
|
PE0 EQU #21AF
|
|
;-------
|
|
LD HL,I_N_T,(INTM+0),HL
|
|
LD HL,#C9FB,(INTM+2),HL
|
|
DI
|
|
LD A,INTM[,I,A:IM 2
|
|
EI
|
|
;-------
|
|
LD BC,PE0,A,%00001110:OUT A
|
|
LD BC,#10AF,A,#0F:OUT A
|
|
|
|
LD HL,VAGA,DE,CORE
|
|
LD BC,VAGAE-VAGA:LDIR
|
|
;---------------------------------------
|
|
CALL DOS_SWP; DEPACK Driver
|
|
CALL DEV_INI:JP NZ,ER0
|
|
CALL HDD:JP NZ,ER1
|
|
CALL SETROOT; SET ROOT DIR
|
|
|
|
;CALL VYGREB; ‚ëŁŕĄˇ Ą¬ Ş â «®Ł, ç¨áâ® Ż® Żŕ¨Ş®«ă
|
|
|
|
;LD HL,FILENAM ; ¨éĄ¬ ä ©«
|
|
;CALL FENTRY:JP Z,ER2
|
|
;LD HL,#1000,C,#02 ; ç¨â Ą¬ ä ©« (1 ˇ«®Ş, 512 ˇ ©â)
|
|
;LD B,1:CALL LOAD512
|
|
|
|
DDR LD HL,DIR1
|
|
CALL FENTRY:JR NZ,DIIIR
|
|
LD HL,DIR1+1:CALL MKDIR:JR Z,DDR
|
|
JP ER3
|
|
|
|
DIIIR CALL SETDIR
|
|
; Set DIR found by FENTRY active
|
|
|
|
;Create File (flag,size,name,0):
|
|
LD HL,FILE
|
|
CALL MKFILE:JP NZ,ER4
|
|
|
|
;Save data into new file:
|
|
LD C,#00; Page
|
|
LD HL,#0000;Offset
|
|
LD B,8; Size (8blocks=4kb)
|
|
CALL SAVE512
|
|
|
|
;---------------------------------------
|
|
EXIT ;LD BC,#11AF,A,#05:OUT A
|
|
|
|
LD BC,PE0,A,%00000001:OUT A
|
|
LD BC,#10AF,A,0:OUT A
|
|
;LD BC,#12AF,A,#0F:OUT A
|
|
RET
|
|
|
|
;---------------------------------------
|
|
VYGREB LD DE,#8000
|
|
VYG CALL NXTETY:RET Z
|
|
LD A,D:CP #C0:RET NC
|
|
JR VYG
|
|
|
|
;---------------------------------------
|
|
ER0 ;Device not found
|
|
; (SD Card NOT ready!)
|
|
LD A,1:OUT (254)
|
|
.10 HALT
|
|
JP EXIT
|
|
;-------
|
|
ER1 ;FAT32 NOT FOUND
|
|
|
|
LD A,2:OUT (254)
|
|
.10 HALT
|
|
JP EXIT
|
|
;-------
|
|
ER2 ;File NOT FOUND
|
|
|
|
LD A,3:OUT (254)
|
|
.10 HALT
|
|
JP EXIT
|
|
;-------
|
|
ER3 ;Dir Creation Failed
|
|
|
|
LD A,4:OUT (254)
|
|
.10 HALT
|
|
JP EXIT
|
|
;-------
|
|
ER4 ;File Creation Failed
|
|
|
|
LD A,5:OUT (254)
|
|
.10 HALT
|
|
JP EXIT
|
|
;---------------------------------------
|
|
I_N_T EI
|
|
RET
|
|
;---------------------------------------
|
|
FILENAM DB #00; #00 - file, #10 - DIR
|
|
DB "WC_History.txt",0
|
|
|
|
FILE DB #00; flag
|
|
DW #1000,#0000;length
|
|
DB "ŤĄĄˇ ćć® ¤«¨®Ą ¨¬ď.txt",0
|
|
|
|
DIR1 DB #10
|
|
DB "DOWNLOAD",0
|
|
|
|
DIR2 DB #10
|
|
DB "ZIFI",0
|
|
;---------------------------------------
|
|
CORE EQU #2002
|
|
DEV_INI EQU CORE+3
|
|
HDD EQU CORE+9
|
|
;-------
|
|
;i: CHL - Addres
|
|
; B - lenght (512b blocks)
|
|
;o: CHL - New Value
|
|
; A - EndOfChain (#0F)
|
|
LOAD512 EQU CORE+21
|
|
|
|
;i: CHL - Addres
|
|
; B - lenght
|
|
;o: CHL - New Value
|
|
; A - EndOfChain (#0F)
|
|
SAVE512 EQU CORE+24
|
|
|
|
DOS_SWP EQU CORE+27
|
|
|
|
;i: HL - flag(1),ln(4),name(1-255),0
|
|
; NZ - ERROR (NO ENOUGHT SPACE)
|
|
; A: 1 - ln not valid
|
|
; 2 - index fatality
|
|
; 3 - ln already exists
|
|
; 255 - unknown error
|
|
; Z - SUCCESS
|
|
MKFILE EQU CORE+57
|
|
|
|
;i: HL - DirName(1-255,0)
|
|
;o: NZ - ERROR
|
|
; A: 1 - ln not valid
|
|
; 2 - index fatality
|
|
; 3 - ln already exists
|
|
; 255 - unknown error
|
|
; Z - SUCCESS
|
|
MKDIR EQU CORE+60
|
|
|
|
;i: HL - flag(1),name(1-255),0
|
|
;o: Z - NOT FOUND
|
|
; NZ - FILE DELETED
|
|
DELFL EQU CORE+63
|
|
|
|
;i: HL - flag(1),oldname(1-255),0
|
|
; DE - newname(1-255),0
|
|
;o: Z - NOT FOUND
|
|
; NZ - SUCCESS
|
|
RENAM EQU CORE+66
|
|
|
|
;Search for entry in current DIR
|
|
;i: HL - flag(1),name(1-255),0
|
|
;o: Z - NOT FOUND
|
|
; NZ - [DE,HL] - file length
|
|
; SEEK0 is automatically called
|
|
FENTRY EQU CORE+78
|
|
|
|
;Seek/Skip N sectors
|
|
;i: B - Number of sectors to process
|
|
LOADNON EQU CORE+84
|
|
|
|
;GetNextEntryFromActiveDir
|
|
;i: DE - Addres
|
|
;o: DE - New Value
|
|
; Z - EndOfDir
|
|
; NZ - OK
|
|
;
|
|
;STRUCTURE:
|
|
;fclus(4),size(4),date(2),time(2),
|
|
;!flag(1),name(1-255),#00
|
|
NXTETY EQU CORE+87
|
|
|
|
;Set DIR found by ENTRY active
|
|
SETDIR EQU CORE+93
|
|
|
|
;Set ROOT DIR active
|
|
SETROOT EQU CORE+96
|
|
|
|
SEEK0 EQU CORE+99
|
|
;-------
|
|
VAGA INCB "WDFCVBI"
|
|
VAGAE
|
|
;---------------------------------------
|