Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
############################################################################### ## IAR Z80/64180 C-Compiler V4.06A/W32 ## ## Compile time = 13/Jun/2024 01:06:14 ## Target option = Z80 ## Memory model = large ## Source file = cgets.c ## List file = ./obj/cgets.lst ## Object file = ./obj/cgets.r01 ## ASM file = ./obj/cgets.s01 ## Command line = -v0 -S -ml -uu -b -q -x -K -gA -z7 -t4 -T -O./obj/ ## -L./obj/ -A./obj/ -I../../../iar/inc/ cgets.c ## ## Copyright 2001 IAR Systems. All rights reserved. ###############################################################################\ 0000 MODULE cgets(16)\ 0000 RSEG CODE(0)\ 0000 RSEG UDATA0(0)\ 0000 EXTERN OS_GETXY\ 0000 EXTERN OS_PRATTR\ 0000 EXTERN OS_SETXY\ 0000 PUBLIC cxy\ 0000 EXTERN getchar\ 0000 PUBLIC gets\ 0000 EXTERN putchar\ 0000 EXTERN ?CLZ80L_4_06_L00\ 0000 EXTERN ?C_V_SWITCH_L06\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09\ 0000 EXTERN ?LEAVE_DIRECT_L09\ 0000 EXTERN ?STRCPY_L11\ 0000 EXTERN ?STRLEN_L11\ 0000 RSEG CODE1 #include <oscalls.h>2 #include <stdio.h>3 #include <string.h>45 union{6 unsigned int w;7 struct{8 unsigned char x;9 unsigned char y;10 }xy;11 }cxy;12\ 0000 gets:\ 0000 CD0000 CALL ?ENT_AUTO_DIRECT_L09\ 0003 FEFF DEFW -2\ 0005 FDE5 PUSH IY13 char * gets(char *str) {14 char * pstr;\ 0007 DD36FE00 LD (IX-2),015 char curs = 0;16 char ch;\ 000B CD0000 CALL OS_GETXY\ 000E 220000 LD (cxy),HL17 cxy.w = OS_GETXY();\ 0011 DD6E02 LD L,(IX+2)\ 0014 DD6603 LD H,(IX+3)\ 0017 3600 LD (HL),0\ 0019 ?0011:18 *str=0x00;\ 0019 AF XOR A\ 001A 3C INC A\ 001B ?0037:\ 001B ?0012:19 while(1)20 {\ 001B ED4B0100 LD BC,(cxy+1)\ 001F ED5B0000 LD DE,(cxy)\ 0023 CD0000 CALL OS_SETXY21 OS_SETXY(cxy.xy.x,cxy.xy.y);\ 0026 DD6E02 LD L,(IX+2)\ 0029 DD6603 LD H,(IX+3)\ 002C E5 PUSH HL\ 002D FDE1 POP IY\ 002F ?0014:22 pstr=str;\ 002F AF XOR A\ 0030 FDB600 OR (IY+0)\ 0033 280C JR Z,?0013\ 0035 ?0015:\ 0035 FD23 INC IY\ 0037 FD5EFF LD E,(IY-1)\ 003A 1600 LD D,0\ 003C CD0000 CALL putchar23 while(*pstr) putchar(*pstr++);\ 003F 18EE JR ?0014\ 0041 ?0013:\ 0041 112000 LD DE,32\ 0044 CD0000 CALL putchar24 putchar(' ');\ 0047 ED4B0100 LD BC,(cxy+1)\ 004B 3A0000 LD A,(cxy)\ 004E DD86FE ADD A,(IX-2)\ 0051 5F LD E,A\ 0052 CD0000 CALL OS_SETXY25 OS_SETXY(cxy.xy.x+curs,cxy.xy.y);\ 0055 1E2F LD E,47\ 0057 CD0000 CALL OS_PRATTR26 OS_PRATTR(INK_WHITE|PAPER_CYAN);\ 005A CD0000 CALL getchar\ 005D DD75FF LD (IX-1),L27 ch=getchar();\ 0060 1E07 LD E,7\ 0062 CD0000 CALL OS_PRATTR28 OS_PRATTR(INK_WHITE|PAPER_BLACK);\ 0065 DD5EFF LD E,(IX-1)\ 0068 CD0000 CALL ?C_V_SWITCH_L06\ 006B 0400 DEFW 4\ 006D 08 DEFB 8\ 006E 0D DEFB 13\ 006F F8 DEFB 248\ 0070 FB DEFB 251\ 0071 D300 DEFW ?0027\ 0073 BE00 DEFW ?0024\ 0075 B300 DEFW ?0021\ 0077 7B00 DEFW ?0017\ 0079 8A00 DEFW ?0018\ 007B ?0017:29 switch(ch){30 case 0x0d:\ 007B 110A00 LD DE,10\ 007E CD0000 CALL putchar31 putchar(0x0a);\ 0081 DD6E02 LD L,(IX+2)\ 0084 DD6603 LD H,(IX+3)32 return str;\ 0087 C33801 JP ?0035\ 008A ?0018:33 case 0x08:\ 008A AF XOR A\ 008B DDB6FE OR (IX-2)\ 008E 2889 JR Z,?0011\ 0090 ?0019:34 if(curs){\ 0090 DD4EFE LD C,(IX-2)\ 0093 0600 LD B,0\ 0095 DD6E02 LD L,(IX+2)\ 0098 DD6603 LD H,(IX+3)\ 009B 09 ADD HL,BC\ 009C EB EX DE,HL\ 009D DD4EFE LD C,(IX-2)\ 00A0 0600 LD B,0\ 00A2 0B DEC BC\ 00A3 DD6E02 LD L,(IX+2)\ 00A6 DD6603 LD H,(IX+3)\ 00A9 09 ADD HL,BC\ 00AA CD0000 CALL ?STRCPY_L1135 strcpy(str + curs - 1,str + curs);\ 00AD DD35FE DEC (IX-2)\ 00B0 ?0020:36 curs--;37 }\ 00B0 C31900 JP ?0011\ 00B3 ?0021:38 break;39 case 0xf8:\ 00B3 AF XOR A\ 00B4 DDB6FE OR (IX-2)\ 00B7 287C JR Z,?0029\ 00B9 ?0022:\ 00B9 DD35FE DEC (IX-2)\ 00BC ?0023:40 if(curs)curs--;\ 00BC 1877 JR ?0029\ 00BE ?0024:41 break;42 case 0xfb:\ 00BE DD4EFE LD C,(IX-2)\ 00C1 0600 LD B,0\ 00C3 DD6E02 LD L,(IX+2)\ 00C6 DD6603 LD H,(IX+3)\ 00C9 09 ADD HL,BC\ 00CA 7E LD A,(HL)\ 00CB B7 OR A\ 00CC 2867 JR Z,?0029\ 00CE ?0025:\ 00CE DD34FE INC (IX-2)\ 00D1 ?0026:43 if(*(str+curs))curs++;\ 00D1 1862 JR ?0029\ 00D3 ?0027:44 break;45 default:\ 00D3 DD4EFE LD C,(IX-2)\ 00D6 0600 LD B,0\ 00D8 DD6E02 LD L,(IX+2)\ 00DB DD6603 LD H,(IX+3)\ 00DE 09 ADD HL,BC\ 00DF CD0000 CALL ?STRLEN_L11\ 00E2 DD4EFE LD C,(IX-2)\ 00E5 0600 LD B,0\ 00E7 09 ADD HL,BC\ 00E8 DD4E02 LD C,(IX+2)\ 00EB DD4603 LD B,(IX+3)\ 00EE 09 ADD HL,BC\ 00EF E5 PUSH HL\ 00F0 FDE1 POP IY46 pstr = str + strlen(str+curs) + curs;\ 00F2 A7 AND A\ 00F3 ED42 SBC HL,BC\ 00F5 ED4B0000 LD BC,(cxy)\ 00F9 0600 LD B,0\ 00FB 09 ADD HL,BC\ 00FC 3E4E LD A,78\ 00FE AD XOR L\ 00FF B4 OR H\ 0100 2833 JR Z,?0029\ 0102 ?0028:\ 0102 ?0031:47 if(((pstr - str) + cxy.xy.x)!=78){\ 0102 AF XOR A\ 0103 3C INC A\ 0104 ?0036:\ 0104 ?0032:48 while(1){\ 0104 FD4600 LD B,(IY+0)\ 0107 FD7001 LD (IY+1),B49 pstr[1]=pstr[0];\ 010A DD4EFE LD C,(IX-2)\ 010D 0600 LD B,0\ 010F DD6E02 LD L,(IX+2)\ 0112 DD6603 LD H,(IX+3)\ 0115 09 ADD HL,BC\ 0116 FDE5 PUSH IY\ 0118 C1 POP BC\ 0119 A7 AND A\ 011A ED42 SBC HL,BC\ 011C 2804 JR Z,?0030\ 011E ?0033:\ 011E ?0034:50 if(pstr==(str+curs)) break;\ 011E FD2B DEC IY51 pstr--;52 }\ 0120 18E0 JR ?0028\ 0122 ?0030:\ 0122 DD4EFE LD C,(IX-2)\ 0125 0600 LD B,0\ 0127 DD6E02 LD L,(IX+2)\ 012A DD6603 LD H,(IX+3)\ 012D 09 ADD HL,BC\ 012E DD46FF LD B,(IX-1)\ 0131 70 LD (HL),B53 *(str+curs) = ch;\ 0132 DD34FE INC (IX-2)\ 0135 ?0029:54 curs++;55 }\ 0135 ?0016:56 break;57 }58 }\ 0135 C31900 JP ?0011\ 0138 ?0010:59 return str;\ 0138 ?0035:\ 0138 FDE1 POP IY\ 013A C30000 JP ?LEAVE_DIRECT_L0960 }\ 0000 RSEG UDATA0\ 0000 cxy:\ 0002 DEFS 2\ 0002 ENDS Y M B O L - T A B L E=======================#include file(s):[ 1] ./obj/cgets.r01Symbol Type Class Defline Refline(s)------ ---- ----- ------- ----------OS_GETXY function extern 17:1 17OS_PRATTR function extern 11:1 26 28OS_SETXY function extern 12:1 21 25cxy union public 11 17 21 21 2525 47errno char extern 75:1getchar function extern 29:2 27gets function public 13 36:2mouse_btns char extern 79:1mouse_x char extern 77:1mouse_y char extern 78:1mouse_yx u_int extern 76:1putchar function extern 28:2 23 24 31size_t u_short typedef 89:4 29:5 31:5 33:5 35:537:5 43:5 47:5 49:551:5 61:5 65:5 71:571:5strcpy function intrinsic 63:5 35strlen function intrinsic 47:5 46t1251to866 array extern 80:1va_list array typedef 141:3 31:2 33:2Errors: noneWarnings: noneCode size: 317Constant size: 0Static variable size: Data(2) Iram(0)