From 60699af63f92f43cc4b4b9e3050fcdd2a8468281 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Wed, 10 Apr 2019 15:14:00 -0400 Subject: add opengl fronend, remove sdl frontend, refactor build system --- frontends/calculator/CEdev/lib/fileio/fclose.src | 53 ++++++++++ frontends/calculator/CEdev/lib/fileio/feof.src | 88 +++++++++++++++++ frontends/calculator/CEdev/lib/fileio/fgetc.src | 39 ++++++++ frontends/calculator/CEdev/lib/fileio/fgets.src | 121 +++++++++++++++++++++++ frontends/calculator/CEdev/lib/fileio/files.src | 13 +++ frontends/calculator/CEdev/lib/fileio/fopen.src | 71 +++++++++++++ frontends/calculator/CEdev/lib/fileio/fputc.src | 43 ++++++++ frontends/calculator/CEdev/lib/fileio/fputs.src | 101 +++++++++++++++++++ frontends/calculator/CEdev/lib/fileio/fread.src | 51 ++++++++++ frontends/calculator/CEdev/lib/fileio/fseek.src | 47 +++++++++ frontends/calculator/CEdev/lib/fileio/ftell.src | 43 ++++++++ frontends/calculator/CEdev/lib/fileio/fwrite.src | 51 ++++++++++ frontends/calculator/CEdev/lib/fileio/remove.src | 50 ++++++++++ 13 files changed, 771 insertions(+) create mode 100644 frontends/calculator/CEdev/lib/fileio/fclose.src create mode 100644 frontends/calculator/CEdev/lib/fileio/feof.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fgetc.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fgets.src create mode 100644 frontends/calculator/CEdev/lib/fileio/files.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fopen.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fputc.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fputs.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fread.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fseek.src create mode 100644 frontends/calculator/CEdev/lib/fileio/ftell.src create mode 100644 frontends/calculator/CEdev/lib/fileio/fwrite.src create mode 100644 frontends/calculator/CEdev/lib/fileio/remove.src (limited to 'frontends/calculator/CEdev/lib/fileio') diff --git a/frontends/calculator/CEdev/lib/fileio/fclose.src b/frontends/calculator/CEdev/lib/fileio/fclose.src new file mode 100644 index 0000000..c54496f --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fclose.src @@ -0,0 +1,53 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FCLOSE.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int fclose(FILE *stream) { +_fclose: + LD HL,-1 + CALL __frameset +; 5 ti_var_t slot = stream->slot; + LD IY,(IX+6) + LD A,(IY+0) + LD (IX+-1),A +; 6 __stdio_files[slot].slot = 0; + UEXT HL + LD L,A + LD BC,___stdio_files + ADD HL,BC + LD IY,HL + LD (IY+0),0 +; 7 return ti_Close(slot); + LD C,(IX+-1) + LD B,0 + PUSH BC + CALL _ti_Close + POP BC +; 8 } + LD SP,IX + POP IX + RET + + +;**************************** _fclose *************************** +;Name Addr/Register Size Type +;_ti_Close IMPORT ----- function +;___stdio_files IMPORT 5 variable +;slot IX-1 1 variable +;stream IX+6 3 parameter + + +; Stack Frame Size: 10 (bytes) +; Spill Code: 0 (instruction) + + + XREF ___stdio_files:ROM + XREF _ti_Close:ROM + XREF __frameset:ROM + XDEF _fclose + END diff --git a/frontends/calculator/CEdev/lib/fileio/feof.src b/frontends/calculator/CEdev/lib/fileio/feof.src new file mode 100644 index 0000000..595b256 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/feof.src @@ -0,0 +1,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 +; 2 #include +; 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 diff --git a/frontends/calculator/CEdev/lib/fileio/fgetc.src b/frontends/calculator/CEdev/lib/fileio/fgetc.src new file mode 100644 index 0000000..098b5ee --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fgetc.src @@ -0,0 +1,39 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FGETC.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int fgetc(FILE *stream) { +_fgetc: + CALL __frameset0 +; 5 return ti_GetC(stream->slot); + LD IY,(IX+6) + LD C,(IY+0) + LD B,0 + PUSH BC + CALL _ti_GetC + POP BC +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _fgetc *************************** +;Name Addr/Register Size Type +;_ti_GetC IMPORT ----- function +;stream IX+6 3 parameter + + +; Stack Frame Size: 9 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_GetC:ROM + XREF __frameset0:ROM + XDEF _fgetc + END diff --git a/frontends/calculator/CEdev/lib/fileio/fgets.src b/frontends/calculator/CEdev/lib/fileio/fgets.src new file mode 100644 index 0000000..22e9fbf --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fgets.src @@ -0,0 +1,121 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FGETS.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 char *fgets(char *str, int num, FILE *stream) { +_fgets: + LD HL,-9 + CALL __frameset +; 5 int c; +; 6 char *p = str; + LD BC,(IX+6) + LD (IX+-3),BC +; 7 +; 8 if (num == 1) { + LD HL,(IX+9) + LD BC,1 + OR A,A + SBC HL,BC + JR NZ,L_8 +; 9 *p = 0; + LD HL,(IX+6) + LD (HL),0 +; 10 return str; + LD HL,(IX+6) + JR L_13 +; 11 } +; 12 +; 13 for (; num > 1; num--) { +L_6: +; 14 if ((c = fgetc(stream)) == EOF) { + LD BC,(IX+12) + PUSH BC + CALL _fgetc + POP BC + LD (IX+-6),HL + LD BC,16777215 + OR A,A + SBC HL,BC + JR Z,L_11 +; 15 break; +; 16 } +; 17 *p++ = c; + LD BC,(IX+-3) + LD (IX+-9),BC + LD A,(IX+-6) + LD HL,BC + LD (HL),A + LD BC,(IX+-3) + INC BC + LD (IX+-3),BC +; 18 if (c == '\n') { + LD HL,(IX+-6) + OR A,A + LD BC,10 + SBC HL,BC + JR Z,L_11 + LD BC,(IX+9) + DEC BC + LD (IX+9),BC +; 19 break; +; 20 } +; 21 } +L_8: + LD BC,(IX+9) + LD HL,1 + OR A,A + SBC HL,BC + CALL __setflag + JP M,L_6 +L_11: +; 22 +; 23 if (p == str) { + LD BC,(IX+6) + LD HL,(IX+-3) + OR A,A + SBC HL,BC + JR NZ,L_12 + OR A,A +; 24 return NULL; + SBC HL,HL + JR L_13 +; 25 } +L_12: +; 26 +; 27 *p = 0; + LD HL,(IX+-3) + LD (HL),0 +; 28 +; 29 return str; + LD HL,(IX+6) +; 30 } +L_13: + LD SP,IX + POP IX + RET + + +;**************************** _fgets *************************** +;Name Addr/Register Size Type +;_fgetc IMPORT ----- function +;c IX-6 3 variable +;p IX-3 3 variable +;stream IX+12 3 parameter +;num IX+9 3 parameter +;str IX+6 3 parameter + + +; Stack Frame Size: 24 (bytes) +; Spill Code: 0 (instruction) + + + XREF _fgetc:ROM + XREF __frameset:ROM + XREF __setflag:ROM + XDEF _fgets + END diff --git a/frontends/calculator/CEdev/lib/fileio/files.src b/frontends/calculator/CEdev/lib/fileio/files.src new file mode 100644 index 0000000..ccfec99 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/files.src @@ -0,0 +1,13 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FILES.C" + .assume ADL=1 + SEGMENT BSS +___stdio_files: + DS 5 + XDEF ___stdio_files +; 1 #include +; 2 +; 3 FILE __stdio_files[FOPEN_MAX]; + END diff --git a/frontends/calculator/CEdev/lib/fileio/fopen.src b/frontends/calculator/CEdev/lib/fileio/fopen.src new file mode 100644 index 0000000..edf6196 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fopen.src @@ -0,0 +1,71 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FOPEN.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 FILE *fopen(const char *filename, const char *mode) { +_fopen: + LD HL,-1 + CALL __frameset +; 5 ti_var_t f = ti_Open(filename, mode); + LD BC,(IX+9) + PUSH BC + LD BC,(IX+6) + PUSH BC + CALL _ti_Open + POP BC + POP BC + LD (IX+-1),A +; 6 if (!f) { + OR A,A + JR NZ,L_1 + OR A,A +; 7 return NULL; + SBC HL,HL + JR L_2 +; 8 } +L_1: +; 9 __stdio_files[(unsigned char)f].slot = f; + LD A,(IX+-1) + UEXT HL + LD L,A + LD BC,___stdio_files + ADD HL,BC + LD IY,HL + LD A,(IX+-1) + LD (IY+0),A +; 10 +; 11 return &__stdio_files[f]; + LD A,(IX+-1) + UEXT HL + LD L,A + ADD HL,BC +; 12 } +L_2: + LD SP,IX + POP IX + RET + + +;**************************** _fopen *************************** +;Name Addr/Register Size Type +;___stdio_files IMPORT 5 variable +;_ti_Open IMPORT ----- function +;f IX-1 1 variable +;mode IX+9 3 parameter +;filename IX+6 3 parameter + + +; Stack Frame Size: 13 (bytes) +; Spill Code: 0 (instruction) + + + XREF ___stdio_files:ROM + XREF _ti_Open:ROM + XREF __frameset:ROM + XDEF _fopen + END diff --git a/frontends/calculator/CEdev/lib/fileio/fputc.src b/frontends/calculator/CEdev/lib/fileio/fputc.src new file mode 100644 index 0000000..0f3a059 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fputc.src @@ -0,0 +1,43 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FPUTC.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int fputc(int c, FILE *stream) { +_fputc: + CALL __frameset0 +; 5 return ti_PutC((char)c, stream->slot); + LD IY,(IX+9) + LD C,(IY+0) + LD B,0 + PUSH BC + LD C,(IX+6) + PUSH BC + CALL _ti_PutC + POP BC + POP BC +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _fputc *************************** +;Name Addr/Register Size Type +;_ti_PutC IMPORT ----- function +;stream IX+9 3 parameter +;c IX+6 3 parameter + + +; Stack Frame Size: 12 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_PutC:ROM + XREF __frameset0:ROM + XDEF _fputc + END diff --git a/frontends/calculator/CEdev/lib/fileio/fputs.src b/frontends/calculator/CEdev/lib/fileio/fputs.src new file mode 100644 index 0000000..fb82f47 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fputs.src @@ -0,0 +1,101 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FPUTS.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int fputs(const char *str, FILE *stream) { +_fputs: + LD HL,-5 + CALL __frameset +; 5 unsigned char slot = stream->slot; + LD IY,(IX+9) + LD A,(IY+0) + LD (IX+-1),A +; 6 unsigned int i = 0; + LD BC,0 + LD (IX+-4),BC +; 7 char c; +; 8 +; 9 while((c = str[i])) { + JR L_3 +L_4: +; 10 if(ti_PutC(c, slot) == EOF) { + LD C,(IX+-1) + LD B,0 + PUSH BC + LD C,(IX+-5) + PUSH BC + CALL _ti_PutC + POP BC + POP BC + LD BC,16777215 + OR A,A + SBC HL,BC + JR NZ,L_2 +; 11 return EOF; + LD HL,16777215 + JR L_8 +; 12 } +L_2: +; 13 i++; + LD BC,(IX+-4) + INC BC + LD (IX+-4),BC +; 14 } +L_3: + LD BC,(IX+-4) + LD HL,(IX+6) + ADD HL,BC + LD A,(HL) + LD (IX+-5),A + OR A,A + JR NZ,L_4 +; 15 if(ti_PutC('\n', slot) == EOF) { + LD C,(IX+-1) + LD B,0 + PUSH BC + LD BC,10 + PUSH BC + CALL _ti_PutC + POP BC + POP BC + LD BC,16777215 + OR A,A + SBC HL,BC + JR NZ,L_7 +; 16 return EOF; + LD HL,16777215 + JR L_8 +; 17 } +L_7: +; 18 return 1; + LD HL,1 +; 19 } +L_8: + LD SP,IX + POP IX + RET + + +;**************************** _fputs *************************** +;Name Addr/Register Size Type +;_ti_PutC IMPORT ----- function +;c IX-5 1 variable +;i IX-4 3 variable +;slot IX-1 1 variable +;stream IX+9 3 parameter +;str IX+6 3 parameter + + +; Stack Frame Size: 17 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_PutC:ROM + XREF __frameset:ROM + XDEF _fputs + END diff --git a/frontends/calculator/CEdev/lib/fileio/fread.src b/frontends/calculator/CEdev/lib/fileio/fread.src new file mode 100644 index 0000000..4e93f42 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fread.src @@ -0,0 +1,51 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FREAD.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 size_t fread(void *ptr, size_t size, size_t count, FILE *stream) { +_fread: + CALL __frameset0 +; 5 return ti_Read(ptr, size, count, stream->slot); + LD IY,(IX+15) + LD C,(IY+0) + LD B,0 + PUSH BC + LD BC,(IX+12) + PUSH BC + LD BC,(IX+9) + PUSH BC + LD BC,(IX+6) + PUSH BC + CALL _ti_Read + POP BC + POP BC + POP BC + POP BC +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _fread *************************** +;Name Addr/Register Size Type +;_ti_Read IMPORT ----- function +;stream IX+15 3 parameter +;count IX+12 3 parameter +;size IX+9 3 parameter +;ptr IX+6 3 parameter + + +; Stack Frame Size: 18 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_Read:ROM + XREF __frameset0:ROM + XDEF _fread + END diff --git a/frontends/calculator/CEdev/lib/fileio/fseek.src b/frontends/calculator/CEdev/lib/fileio/fseek.src new file mode 100644 index 0000000..b6d0b33 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fseek.src @@ -0,0 +1,47 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FSEEK.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int fseek(FILE *stream, long int offset, int origin) { +_fseek: + CALL __frameset0 +; 5 return ti_Seek((int)offset, origin, stream->slot); + LD IY,(IX+6) + LD C,(IY+0) + LD B,0 + PUSH BC + LD BC,(IX+15) + PUSH BC + LD BC,(IX+9) + PUSH BC + CALL _ti_Seek + POP BC + POP BC + POP BC +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _fseek *************************** +;Name Addr/Register Size Type +;_ti_Seek IMPORT ----- function +;origin IX+15 3 parameter +;offset IX+9 4 parameter +;stream IX+6 3 parameter + + +; Stack Frame Size: 18 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_Seek:ROM + XREF __frameset0:ROM + XDEF _fseek + END diff --git a/frontends/calculator/CEdev/lib/fileio/ftell.src b/frontends/calculator/CEdev/lib/fileio/ftell.src new file mode 100644 index 0000000..2f77607 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/ftell.src @@ -0,0 +1,43 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FTELL.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 long int ftell(FILE *stream) { +_ftell: + CALL __frameset0 +; 5 return (long int)ti_Tell(stream->slot); + LD IY,(IX+6) + LD C,(IY+0) + LD B,0 + PUSH BC + CALL _ti_Tell + POP BC + LD BC,HL + CALL __stoiu + LD E,0 +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _ftell *************************** +;Name Addr/Register Size Type +;_ti_Tell IMPORT ----- function +;stream IX+6 3 parameter + + +; Stack Frame Size: 9 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_Tell:ROM + XREF __stoiu:ROM + XREF __frameset0:ROM + XDEF _ftell + END diff --git a/frontends/calculator/CEdev/lib/fileio/fwrite.src b/frontends/calculator/CEdev/lib/fileio/fwrite.src new file mode 100644 index 0000000..7432016 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/fwrite.src @@ -0,0 +1,51 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\FWRITE.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream) { +_fwrite: + CALL __frameset0 +; 5 return ti_Write(ptr, size, count, stream->slot); + LD IY,(IX+15) + LD C,(IY+0) + LD B,0 + PUSH BC + LD BC,(IX+12) + PUSH BC + LD BC,(IX+9) + PUSH BC + LD BC,(IX+6) + PUSH BC + CALL _ti_Write + POP BC + POP BC + POP BC + POP BC +; 6 } + LD SP,IX + POP IX + RET + + +;**************************** _fwrite *************************** +;Name Addr/Register Size Type +;_ti_Write IMPORT ----- function +;stream IX+15 3 parameter +;count IX+12 3 parameter +;size IX+9 3 parameter +;ptr IX+6 3 parameter + + +; Stack Frame Size: 18 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_Write:ROM + XREF __frameset0:ROM + XDEF _fwrite + END diff --git a/frontends/calculator/CEdev/lib/fileio/remove.src b/frontends/calculator/CEdev/lib/fileio/remove.src new file mode 100644 index 0000000..7fb3763 --- /dev/null +++ b/frontends/calculator/CEdev/lib/fileio/remove.src @@ -0,0 +1,50 @@ +; Zilog eZ80 ANSI C Compiler Release 3.4 +; -optsize -nomodsect -peephole -globalopt -localcse +; -const=ROM + FILE "..\REMOVE.C" + .assume ADL=1 + SEGMENT CODE +; 1 #include +; 2 #include +; 3 +; 4 int remove(const char *filename) { +_remove: + LD HL,-3 + CALL __frameset +; 5 return !ti_Delete(filename); + LD BC,(IX+6) + PUSH BC + CALL _ti_Delete + POP BC + CALL __icmpzero + JR NZ,L_1 +; 6 } + LD BC,1 + LD (IX+-3),BC + JR L_2 +L_1: + LD BC,0 + LD (IX+-3),BC +L_2: + LD HL,(IX+-3) + LD SP,IX + POP IX + RET + + +;**************************** _remove *************************** +;Name Addr/Register Size Type +;_ti_Delete IMPORT ----- function +;temp3 IX-3 3 variable +;filename IX+6 3 parameter + + +; Stack Frame Size: 12 (bytes) +; Spill Code: 0 (instruction) + + + XREF _ti_Delete:ROM + XREF __frameset:ROM + XREF __icmpzero:ROM + XDEF _remove + END -- cgit v1.2.3-101-g0448