Files
2026-08-31 21:04:48 +03:00

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
;---------------------------------------