1; GEOS KERNAL by Berkeley Softworks
2; reverse engineered by Maciej Witkowiak, Michael Steil
3;
4; BAM/VLIR filesystem driver
5
6.include "const.inc"
7.include "geossym.inc"
8.include "geosmac.inc"
9.include "config.inc"
10.include "gkernal.inc"
11.include "c64.inc"
12
13.import Add2
14
15.global _BldGDirEntry
16
17.segment "files9"
18
19_BldGDirEntry:
20	ldy #$1d
21	lda #0
22@1:	sta dirEntryBuf,y
23	dey
24	bpl @1
25.ifdef wheels
26	ldy #1
27	lda (r9),y
28	sta r3H
29	dey
30	lda (r9),y
31	sta r3L
32@2:	lda (r3),y
33	beq @3
34	sta dirEntryBuf+OFF_FNAME,y
35	iny
36	cpy #16
37	bcc @2
38	bcs @5
39@3:	lda #$a0
40@4:	sta dirEntryBuf+OFF_FNAME,y
41	iny
42	cpy #16
43	bcc @4
44.else
45	tay
46	lda (r9),y
47	sta r3L
48	iny
49	lda (r9),y
50	sta r3H
51	sty r1H
52	dey
53	ldx #OFF_FNAME
54@2:	lda (r3),y
55	bne @4
56	sta r1H
57@3:	lda #$a0
58@4:	sta dirEntryBuf,x
59	inx
60	iny
61	cpy #16
62	beq @5
63	lda r1H
64	bne @2
65	beq @3
66.endif
67@5:	ldy #O_GHCMDR_TYPE
68	lda (r9),y
69	sta dirEntryBuf+OFF_CFILE_TYPE
70.ifndef wheels
71	ldy #O_GHSTR_TYPE
72	lda (r9),y
73	sta dirEntryBuf+OFF_GSTRUC_TYPE
74.endif
75	ldy #NULL
76	sty fileHeader
77	dey
78	sty fileHeader+1
79	MoveW fileTrScTab, dirEntryBuf+OFF_GHDR_PTR
80	jsr Add2
81	MoveW fileTrScTab+2, dirEntryBuf+OFF_DE_TR_SC
82.ifdef wheels
83	ldy #O_GHSTR_TYPE
84	lda (r9),y
85	sta dirEntryBuf+OFF_GSTRUC_TYPE
86	cmp #VLIR
87.else
88	CmpBI dirEntryBuf+OFF_GSTRUC_TYPE, VLIR
89.endif
90	bne @6
91	jsr Add2
92@6:	ldy #O_GHGEOS_TYPE
93	lda (r9),y
94	sta dirEntryBuf+OFF_GFILE_TYPE
95	MoveW r2, dirEntryBuf+OFF_SIZE
96	rts
97
98