1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
; Zilog eZ80 ANSI C Compiler Release 3.4
; -optsize -nomodsect -peephole -globalopt -localcse
; -const=ROM
FILE "..\FEOF.C"
.assume ADL=1
SEGMENT CODE
; 1 #include <stdio.h>
; 2 #include <fileioc.h>
; 3
; 4 int feof(FILE *stream) {
_feof:
LD HL,-7
CALL __frameset
; 5 char a;
; 6 int sz;
; 7
; 8 sz = fread(&a, 1, 1, stream);
LD BC,(IX+6)
PUSH BC
LD BC,1
PUSH BC
PUSH BC
PEA IX+-1
CALL _fread
POP BC
POP BC
POP BC
POP BC
; 9 fseek(stream, -sz, SEEK_CUR);
LD BC,HL
CALL __itol
LD (IX+-7),HL
LD HL,BC
LD E,A
CALL __lneg
LD C,E
LD DE,1
PUSH DE
LD B,0
PUSH BC
PUSH HL
LD BC,(IX+6)
PUSH BC
CALL _fseek
POP BC
POP BC
POP BC
POP BC
; 10 return !sz;
LD HL,(IX+-7)
CALL __icmpzero
JR NZ,L_1
; 11 }
LD BC,1
LD (IX+-4),BC
JR L_2
L_1:
LD BC,0
LD (IX+-4),BC
L_2:
LD HL,(IX+-4)
LD SP,IX
POP IX
RET
;**************************** _feof ***************************
;Name Addr/Register Size Type
;_fseek IMPORT ----- function
;_fread IMPORT ----- function
;sz IX-7 3 variable
;temp3 IX-4 3 variable
;a IX-1 1 variable
;stream IX+6 3 parameter
; Stack Frame Size: 16 (bytes)
; Spill Code: 0 (instruction)
XREF _fseek:ROM
XREF _fread:ROM
XREF __lneg:ROM
XREF __itol:ROM
XREF __frameset:ROM
XREF __icmpzero:ROM
XDEF _feof
END
|