2018-11-29 21:18:47 +00:00
|
|
|
|
|
|
|
; Maak een LIBrary aan van files
|
|
|
|
|
|
|
|
; org #0100
|
|
|
|
|
|
|
|
bdos .equ #05
|
|
|
|
setdta .equ 26 ; zet lees/schrijf-adres
|
|
|
|
open_file .equ 15 ; open file
|
|
|
|
close_file .equ 16 ; sluit file
|
|
|
|
create_file .equ 22 ; maak file aan
|
|
|
|
read_block .equ 39 ; laad van disk
|
|
|
|
write_block .equ 38 ; schrijf naar disk
|
2018-12-24 23:48:51 +00:00
|
|
|
term_error .equ 0x62
|
2018-11-29 21:18:47 +00:00
|
|
|
|
|
|
|
entry_length .equ 11 + 2 + 3
|
|
|
|
|
|
|
|
.area _CODE
|
|
|
|
|
|
|
|
call count_files ; tel aantal files
|
|
|
|
ld (files),bc
|
|
|
|
|
|
|
|
call calc_length ; bereken lengte
|
|
|
|
; directory
|
|
|
|
ld (dir_length),hl
|
|
|
|
|
|
|
|
call make_dir ; maak directory
|
|
|
|
|
|
|
|
call save_dir ; bewaar directory
|
|
|
|
|
|
|
|
call store_files ; bewaar files
|
|
|
|
|
|
|
|
ld de,#fcb2
|
|
|
|
ld c,#close_file
|
|
|
|
call bdos ; klaar!
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Tel aantal files
|
|
|
|
; In: -
|
|
|
|
; Uit: BC: aantal files
|
|
|
|
; Verandert: AF,BC,DE,HL
|
|
|
|
count_files: ld hl,#file_names
|
|
|
|
ld bc,#0
|
|
|
|
ld de,#11
|
|
|
|
|
|
|
|
count_files1: ld a,(hl)
|
|
|
|
or a
|
|
|
|
ret z
|
|
|
|
inc bc
|
|
|
|
add hl,de
|
|
|
|
jr count_files1
|
|
|
|
|
|
|
|
; Bereken lengte directory
|
|
|
|
; In: BC: aantal files
|
|
|
|
; Uit: HL: lengte directory
|
|
|
|
; Verandert: AF, BC, DE, HL
|
|
|
|
calc_length: ld hl,#3
|
|
|
|
ld de,#entry_length
|
|
|
|
|
|
|
|
calc_length1: ld a,b
|
|
|
|
or c
|
|
|
|
ret z
|
|
|
|
add hl,de
|
|
|
|
dec bc
|
|
|
|
jr calc_length1
|
|
|
|
|
|
|
|
; Maak directory
|
|
|
|
; In: HL: lengte directory
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: alles
|
|
|
|
make_dir: ld (getal1),hl
|
|
|
|
ld hl,#0
|
|
|
|
ld (getal1+2),hl
|
|
|
|
|
|
|
|
ld hl,#file_names
|
|
|
|
ld de,#directory
|
|
|
|
ld bc,(files)
|
|
|
|
|
|
|
|
make_dir1: push bc
|
|
|
|
|
|
|
|
push hl
|
|
|
|
push de
|
|
|
|
|
|
|
|
ld bc,#11
|
|
|
|
ld de,#fname1
|
|
|
|
ldir ; filenaam naar FCB
|
|
|
|
|
|
|
|
pop de
|
|
|
|
pop hl
|
|
|
|
ld bc,#11
|
|
|
|
ldir ; filenaam naar directory
|
|
|
|
|
|
|
|
push hl
|
|
|
|
|
|
|
|
push de
|
|
|
|
ld de,#fcb1
|
|
|
|
ld c,#open_file
|
|
|
|
call bdos
|
|
|
|
ld de,#fcb1
|
|
|
|
ld c,#close_file
|
|
|
|
call bdos
|
|
|
|
pop de
|
|
|
|
ld hl,(length1)
|
|
|
|
|
|
|
|
ld a,l
|
|
|
|
ld (de),a
|
|
|
|
inc de
|
|
|
|
ld a,h
|
|
|
|
ld (de),a
|
|
|
|
inc de
|
|
|
|
|
|
|
|
ld ix,#getal1 ; bewaar positie in file
|
|
|
|
ld a,(IX)
|
|
|
|
ld (de),a
|
|
|
|
inc de
|
|
|
|
ld a,(IX)
|
|
|
|
ld (de),a
|
|
|
|
inc de
|
|
|
|
ld a,(IX)
|
|
|
|
ld (de),a
|
|
|
|
inc de
|
|
|
|
|
|
|
|
push de
|
|
|
|
|
|
|
|
ld iy,#getal2
|
|
|
|
ld (IY),l
|
|
|
|
ld (IY),h
|
|
|
|
ld ix,#getal1
|
|
|
|
call add_32bit
|
|
|
|
|
|
|
|
pop de
|
|
|
|
pop hl
|
|
|
|
pop bc
|
|
|
|
dec bc
|
|
|
|
ld a,b
|
|
|
|
or c
|
|
|
|
jp nz,make_dir1
|
|
|
|
xor a
|
|
|
|
ld (de),a
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Bewaar directory
|
|
|
|
; In: -
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: alles
|
|
|
|
save_dir: ld hl,#lib_name
|
|
|
|
ld de,#fname2
|
|
|
|
ld bc,#11
|
|
|
|
ldir
|
|
|
|
|
|
|
|
ld de,#fcb2
|
|
|
|
ld c,#create_file
|
|
|
|
call bdos ; cre er file
|
|
|
|
|
|
|
|
call intfcb2
|
|
|
|
|
|
|
|
ld de,#files
|
|
|
|
ld c,#setdta
|
|
|
|
call bdos
|
|
|
|
|
|
|
|
ld de,#fcb2
|
|
|
|
ld c,#write_block
|
|
|
|
ld hl,(dir_length)
|
|
|
|
call bdos ; schrijf directory weg
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Bewaar files in .LIB-file
|
|
|
|
; In: -
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: AF, BC, DE, HL
|
|
|
|
store_files: ld bc,(files)
|
|
|
|
ld hl,#file_names
|
|
|
|
|
|
|
|
store_files1: push bc
|
|
|
|
|
|
|
|
ld bc,#11
|
|
|
|
ld de,#fname1
|
|
|
|
ldir
|
|
|
|
|
|
|
|
PUSH HL
|
|
|
|
|
|
|
|
LD HL,#fname1
|
|
|
|
LD B,#11
|
|
|
|
CALL PUT_TXT
|
|
|
|
|
|
|
|
POP HL
|
|
|
|
PUSH HL
|
|
|
|
|
|
|
|
call clrfcb1
|
|
|
|
|
|
|
|
ld c,#open_file
|
|
|
|
ld de,#fcb1
|
|
|
|
call bdos
|
|
|
|
|
2018-12-24 23:48:51 +00:00
|
|
|
cp #0
|
|
|
|
jr z,store_open_f
|
|
|
|
|
|
|
|
LD HL,#FILE_ERROR
|
|
|
|
LD B,#10
|
|
|
|
CALL PUT_TXT
|
|
|
|
|
|
|
|
store_open_f:
|
|
|
|
|
|
|
|
LD HL,#RETTXT
|
|
|
|
LD B,#2
|
|
|
|
CALL PUT_TXT
|
|
|
|
|
2018-11-29 21:18:47 +00:00
|
|
|
call intfcb1
|
|
|
|
|
|
|
|
ld hl,(length1)
|
|
|
|
call copy_file ; kopieer file
|
|
|
|
|
|
|
|
ld de,#fcb1
|
|
|
|
ld c,#close_file
|
|
|
|
call bdos
|
|
|
|
|
|
|
|
pop hl
|
|
|
|
pop bc
|
|
|
|
dec bc
|
|
|
|
ld a,b
|
|
|
|
or c
|
|
|
|
jp nz,store_files1
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Copieer file naar .LIB-file
|
|
|
|
; In: HL: lengte file
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: AF, BC, DE, HL
|
|
|
|
copy_file: push hl
|
|
|
|
ld c,#setdta
|
|
|
|
ld de,#directory
|
|
|
|
call bdos
|
|
|
|
pop hl
|
|
|
|
|
|
|
|
copy_file1: ld de,#32768
|
|
|
|
xor a
|
|
|
|
sbc hl,de ; file >32768 bytes?
|
|
|
|
jp c,copy_file2 ; Nee, copieer rest
|
|
|
|
|
|
|
|
push hl
|
|
|
|
ld hl,#32768
|
|
|
|
ld de,#fcb1
|
|
|
|
ld c,#read_block
|
|
|
|
call bdos
|
|
|
|
|
|
|
|
ld hl,#32768
|
|
|
|
ld de,#fcb2
|
|
|
|
ld c,#write_block
|
|
|
|
call bdos
|
|
|
|
pop hl
|
|
|
|
jp copy_file1
|
|
|
|
|
|
|
|
copy_file2: add hl,de
|
|
|
|
push hl
|
|
|
|
ld de,#fcb1
|
|
|
|
ld c,#read_block
|
|
|
|
call bdos
|
|
|
|
pop hl
|
|
|
|
ld de,#fcb2
|
|
|
|
ld c,#write_block
|
|
|
|
call bdos
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Tel twee 32-bits getallen op
|
|
|
|
; In: IX: adres getal 1
|
|
|
|
; IY: adres getal 2
|
|
|
|
; Uit: getal 1 gevuld met resultaat
|
|
|
|
; Verandert: BC,DE,HL
|
|
|
|
add_32bit: ld l,(IX)
|
|
|
|
ld h,(IX)
|
|
|
|
|
|
|
|
ld e,(IY)
|
|
|
|
ld d,(IY)
|
|
|
|
|
|
|
|
ld c,(IX)
|
|
|
|
ld b,(IX)
|
|
|
|
add hl,de
|
|
|
|
jr nc,add_32bit1
|
|
|
|
inc bc
|
|
|
|
add_32bit1: ld (IX),l
|
|
|
|
ld (IX),h
|
|
|
|
|
|
|
|
ld l,(IY)
|
|
|
|
ld h,(IY)
|
|
|
|
add hl,bc
|
|
|
|
ld (IX),l
|
|
|
|
ld (IX),h
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Maak FCB 1 schoon
|
|
|
|
; In: -
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: AF, BC, DE, HL
|
|
|
|
clrfcb1: ld hl,#fcbdat1
|
|
|
|
ld bc,#25
|
|
|
|
xor a
|
|
|
|
ld (hl),a
|
|
|
|
ld de,#fcbdat1 + 1
|
|
|
|
ldir
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Initialiseer FCB 1
|
|
|
|
; In: -
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: AF, HL
|
|
|
|
intfcb1: ld hl,#0
|
|
|
|
ld (fcb1 + 12),hl
|
|
|
|
ld (fcb1 + 33),hl
|
|
|
|
ld (fcb1 + 35),hl
|
|
|
|
xor a
|
|
|
|
ld (fcb1 + 32),a
|
|
|
|
inc hl
|
|
|
|
ld (fcb1 + 14),hl
|
|
|
|
ret
|
|
|
|
|
|
|
|
; Initialiseer FCB 2
|
|
|
|
; In: -
|
|
|
|
; Uit: -
|
|
|
|
; Verandert: AF, HL
|
|
|
|
intfcb2: ld hl,#0
|
|
|
|
ld (fcb2 + 12),hl
|
|
|
|
ld (fcb2 + 33),hl
|
|
|
|
ld (fcb2 + 35),hl
|
|
|
|
xor a
|
|
|
|
ld (fcb2 + 32),a
|
|
|
|
inc hl
|
|
|
|
ld (fcb2 + 14),hl
|
|
|
|
ret
|
|
|
|
; HL=TXT
|
|
|
|
; B=LENGHTE
|
|
|
|
|
|
|
|
PUT_TXT:
|
|
|
|
LD A,(HL)
|
|
|
|
LD E,A
|
|
|
|
LD C,#2
|
|
|
|
PUSH HL
|
|
|
|
PUSH BC
|
|
|
|
CALL bdos
|
|
|
|
POP BC
|
|
|
|
POP HL
|
|
|
|
INC HL
|
|
|
|
DJNZ PUT_TXT
|
|
|
|
RET
|
|
|
|
|
|
|
|
RETTXT: .db 0x0A,0x0D
|
2018-12-24 23:48:51 +00:00
|
|
|
FILE_ERROR: .str " NOT FOUND" ; 10 len
|
2018-11-29 21:18:47 +00:00
|
|
|
|
|
|
|
getal1: .dw 0,0 ; opslagplaats voor de twee
|
|
|
|
getal2: .dw 0,0 ; 32-bits getallen
|
|
|
|
|
|
|
|
dir_length: .dw 0 ; lengte van directory
|
|
|
|
|
|
|
|
; Het eerste FCB
|
|
|
|
fcb1: .db 0 ; drive (0=default, 1 = A:)
|
|
|
|
fname1: .str " "
|
|
|
|
fcbdat1: .db 0,0,0,0
|
|
|
|
length1: .db 0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
.db 0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
|
|
|
|
; Het tweede FCB
|
|
|
|
fcb2: .db 0 ; drive (0=default, 2 = B:)
|
|
|
|
fname2: .str " "
|
|
|
|
.db 0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
.db 0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
|
|
|
|
; Naam van de te maken .LIB-file
|
|
|
|
lib_name: .str "DOME 000"
|
|
|
|
|
|
|
|
; Lijst met files die in de .LIB-file moeten
|
|
|
|
file_names:
|
|
|
|
.str "BIOS DAT"
|
|
|
|
.str "LOADER DAT"
|
|
|
|
.str "WAVEDRV COM"
|
|
|
|
|
|
|
|
.str "PARAGON ZOP"
|
|
|
|
.str "PRESENTSZOP"
|
|
|
|
.str "DOME ZOP"
|
|
|
|
|
|
|
|
.str "MMENU DAT"
|
|
|
|
.str "ST_MENU1ZOP" ; GFX START MENU
|
|
|
|
.str "ST_MENU2ZOP" ; GFX START MENU_ROOD
|
|
|
|
|
|
|
|
|
|
|
|
.str "UNITTOT ZOP" ; GFX UNITS
|
|
|
|
.str "PAGE5 ZOP" ; GFX BUILDINGS
|
2018-12-24 23:48:51 +00:00
|
|
|
.str "BALKEN4 ZOP" ; GFX ACHTERGROND
|
2018-11-29 21:18:47 +00:00
|
|
|
.str "DOME DAT" ; DOME ENGINE
|
|
|
|
|
|
|
|
.str "MENU DAT" ; DOME_MENU_CALL CODE
|
|
|
|
.str "MENU ZOP" ; DOME_MENU_CALL GFX
|
|
|
|
;DB "CHOOSE DAT" ; LEVEL CHOOSER CODE
|
|
|
|
;DB "CHOOSE1 ZOP" ; LEVEL CHOOSEE GFX1
|
|
|
|
;DB "CHOOSE2 ZOP" ; LEVEL CHOOSER GFX2
|
|
|
|
|
|
|
|
.str "BRIEF ZOP"
|
|
|
|
|
|
|
|
.str "VELD 001"
|
|
|
|
.str "TANKTAB 001"
|
|
|
|
.str "CODE 001" ; MAXIMAAL 999 VELDEN
|
|
|
|
|
|
|
|
.str "VELD 002"
|
|
|
|
.str "TANKTAB 002"
|
|
|
|
.str "CODE 002"
|
|
|
|
.db 0
|
|
|
|
|
2018-12-24 23:48:51 +00:00
|
|
|
|
2018-11-29 21:18:47 +00:00
|
|
|
; 0 = laatste gehad
|
|
|
|
|
|
|
|
files: .dw 0 ; bewaarplaats aantal files
|
|
|
|
directory: nop
|
|
|
|
|
|
|
|
.area _DATA
|