|
|
1.1 root 1: .file "hostcall.c"
2: .text
3: .p2align 4,,15
4: .globl time2dos
5: .type time2dos, @function
6: time2dos:
7: pushl %ebp
8: movl %esp, %ebp
9: leal 8(%ebp), %eax
10: subl $8, %esp
11: movl %eax, (%esp)
12: call localtime
13: movl %eax, %ecx
14: movl 4(%ecx), %edx
15: movl (%eax), %eax
16: sall $5, %edx
17: sarl %eax
18: orl %edx, %eax
19: movl 8(%ecx), %edx
20: movl %ebp, %esp
21: popl %ebp
22: sall $11, %edx
23: orl %edx, %eax
24: movzwl %ax, %eax
25: ret
26: .size time2dos, .-time2dos
27: .p2align 4,,15
28: .globl date2dos
29: .type date2dos, @function
30: date2dos:
31: pushl %ebp
32: movl %esp, %ebp
33: leal 8(%ebp), %eax
34: subl $8, %esp
35: movl %eax, (%esp)
36: call localtime
37: movl %eax, %ecx
38: movl 16(%eax), %eax
39: movzwl 12(%ecx), %edx
40: movl 20(%ecx), %ecx
41: incl %eax
42: sall $5, %eax
43: movl %ebp, %esp
44: subl $80, %ecx
45: popl %ebp
46: orl %edx, %eax
47: movl %ecx, %edx
48: shrl $31, %edx
49: decl %edx
50: andl %edx, %ecx
51: sall $9, %ecx
52: orl %ecx, %eax
53: movzwl %ax, %eax
54: ret
55: .size date2dos, .-date2dos
56: .p2align 4,,15
57: .globl GetFileInformation
58: .type GetFileInformation, @function
59: GetFileInformation:
60: pushl %ebp
61: movl %esp, %ebp
62: leal -104(%ebp), %eax
63: subl $120, %esp
64: movl %eax, 8(%esp)
65: movl 8(%ebp), %eax
66: movl %esi, -4(%ebp)
67: movl 12(%ebp), %esi
68: movl %ebx, -8(%ebp)
69: movl %eax, 4(%esp)
70: movl $3, (%esp)
71: call __xstat
72: xorl %edx, %edx
73: testl %eax, %eax
74: je .L8
75: .L4:
76: movl -8(%ebp), %ebx
77: movl %edx, %eax
78: movl -4(%ebp), %esi
79: movl %ebp, %esp
80: popl %ebp
81: ret
82: .p2align 4,,7
83: .L8:
84: leal -40(%ebp), %eax
85: movl %eax, (%esp)
86: call localtime
87: movzwl 12(%eax), %ebx
88: movl 16(%eax), %edx
89: movl 20(%eax), %ecx
90: andl $15, %edx
91: andl $31, %ebx
92: sall $5, %edx
93: subl $80, %ecx
94: orl %edx, %ebx
95: movl %ecx, %edx
96: shrl $31, %edx
97: decl %edx
98: andl %edx, %ecx
99: andl $127, %ecx
100: movl 4(%eax), %edx
101: sall $9, %ecx
102: orl %ecx, %ebx
103: andl $63, %edx
104: sall $5, %edx
105: movzwl (%eax), %ecx
106: movl 8(%eax), %eax
107: movw %bx, (%esi)
108: andl $31, %ecx
109: andl $31, %eax
110: orl %edx, %ecx
111: sall $11, %eax
112: orl %eax, %ecx
113: movw %cx, 2(%esi)
114: movl $1, %edx
115: jmp .L4
116: .size GetFileInformation, .-GetFileInformation
117: .section .rodata.str1.1,"aMS",@progbits,1
118: .LC0:
119: .string "%s/%s"
120: .text
121: .p2align 4,,15
122: .globl PopulateDTA
123: .type PopulateDTA, @function
124: PopulateDTA:
125: pushl %ebp
126: movl %esp, %ebp
127: subl $376, %esp
128: movl %esi, -4(%ebp)
129: movl 8(%ebp), %eax
130: movl 12(%ebp), %esi
131: movl %ebx, -8(%ebp)
132: movl $.LC0, %ebx
133: addl $11, %esi
134: movl %ebx, 4(%esp)
135: leal -264(%ebp), %ebx
136: movl %esi, 12(%esp)
137: movl %eax, 8(%esp)
138: movl %ebx, (%esp)
139: call sprintf
140: movl %ebx, 4(%esp)
141: leal -360(%ebp), %eax
142: movl %eax, 8(%esp)
143: movl $3, (%esp)
144: call __xstat
145: xorl %edx, %edx
146: testl %eax, %eax
147: jne .L9
148: movl pDTA, %ecx
149: testl %ecx, %ecx
150: jne .L16
151: .L9:
152: movl -8(%ebp), %ebx
153: movl %edx, %eax
154: movl -4(%ebp), %esi
155: movl %ebp, %esp
156: popl %ebp
157: ret
158: .p2align 4,,7
159: .L16:
160: movl %esi, (%esp)
161: call Misc_strupr
162: movl %esi, 4(%esp)
163: movl $14, %eax
164: movl %eax, 8(%esp)
165: movl pDTA, %eax
166: addl $30, %eax
167: movl %eax, (%esp)
168: call strncpy
169: movl pDTA, %ebx
170: movl -316(%ebp), %eax
171: #APP
172: bswap %eax
173:
174: #NO_APP
175: movl %eax, 26(%ebx)
176: movl -296(%ebp), %eax
177: movl %eax, (%esp)
178: call time2dos
179: movzwl %ax, %eax
180: #APP
181: xchgb %al,%ah
182: #NO_APP
183: movw %ax, 22(%ebx)
184: movl -296(%ebp), %eax
185: movl pDTA, %ebx
186: movl %eax, (%esp)
187: call date2dos
188: movzwl %ax, %eax
189: #APP
190: xchgb %al,%ah
191: #NO_APP
192: movw %ax, 24(%ebx)
193: movl -344(%ebp), %eax
194: movl pDTA, %ebx
195: movl %eax, (%esp)
196: call GemDOS_ConvertAttribute
197: movb %al, 21(%ebx)
198: movl $1, %edx
199: jmp .L9
200: .size PopulateDTA, .-PopulateDTA
201: .p2align 4,,15
202: .globl ClearInternalDTA
203: .type ClearInternalDTA, @function
204: ClearInternalDTA:
205: pushl %ebp
206: movl %esp, %ebp
207: pushl %ebx
208: subl $4, %esp
209: movl DTAIndex, %edx
210: movl %edx, %eax
211: movl %edx, %ecx
212: sall $4, %eax
213: addl %edx, %eax
214: sall $4, %eax
215: movl InternalDTAs+12(%eax), %ebx
216: testl %ebx, %ebx
217: je .L18
218: xorl %ebx, %ebx
219: cmpl InternalDTAs+4(%eax), %ebx
220: jl .L23
221: .L25:
222: movl %edx, %eax
223: sall $4, %eax
224: addl %edx, %eax
225: sall $4, %eax
226: movl InternalDTAs+12(%eax), %eax
227: movl %eax, (%esp)
228: call free
229: movl DTAIndex, %edx
230: .L18:
231: movl %edx, %eax
232: sall $4, %eax
233: addl %edx, %eax
234: sall $4, %eax
235: xorl %edx, %edx
236: movl %edx, InternalDTAs(%eax)
237: popl %eax
238: popl %ebx
239: popl %ebp
240: ret
241: .p2align 4,,7
242: .L23:
243: movl %ecx, %eax
244: sall $4, %eax
245: addl %ecx, %eax
246: sall $4, %eax
247: movl InternalDTAs+12(%eax), %eax
248: movl (%eax,%ebx,4), %eax
249: incl %ebx
250: movl %eax, (%esp)
251: call free
252: movl DTAIndex, %edx
253: movl %edx, %eax
254: movl %edx, %ecx
255: sall $4, %eax
256: addl %edx, %eax
257: sall $4, %eax
258: cmpl InternalDTAs+4(%eax), %ebx
259: jl .L23
260: jmp .L25
261: .size ClearInternalDTA, .-ClearInternalDTA
262: .p2align 4,,15
263: .type match, @function
264: match:
265: pushl %ebp
266: movl %esp, %ebp
267: leal -280(%ebp), %eax
268: pushl %edi
269: leal -536(%ebp), %edi
270: pushl %esi
271: pushl %ebx
272: subl $540, %esp
273: movl 12(%ebp), %esi
274: movl %eax, (%esp)
275: movl 8(%ebp), %ebx
276: movl %ebx, 4(%esp)
277: call strcpy
278: movl %esi, 4(%esp)
279: movl %edi, (%esp)
280: call strcpy
281: leal -280(%ebp), %eax
282: movl %eax, (%esp)
283: call Misc_strupr
284: movl %edi, (%esp)
285: call Misc_strupr
286: cmpb $46, (%esi)
287: je .L34
288: cmpb $42, (%ebx)
289: jne .L28
290: cmpb $46, 1(%ebx)
291: jne .L28
292: cmpb $42, 2(%ebx)
293: jne .L28
294: cmpb $0, 3(%ebx)
295: je .L59
296: .p2align 4,,15
297: .L28:
298: movl %esi, 4(%esp)
299: movl $1, %esi
300: movl %ebx, (%esp)
301: call strcasecmp
302: testl %eax, %eax
303: je .L26
304: movzbl -536(%ebp), %eax
305: leal -280(%ebp), %ebx
306: movl %edi, %ecx
307: testb %al, %al
308: je .L54
309: .p2align 4,,15
310: .L51:
311: movzbl (%ebx), %edx
312: cmpb $42, %dl
313: je .L60
314: cmpb $63, %dl
315: je .L61
316: .L48:
317: incl %ecx
318: incl %ebx
319: xorl %esi, %esi
320: cmpb %al, %dl
321: jne .L26
322: .L58:
323: movzbl (%ecx), %eax
324: .L37:
325: testb %al, %al
326: jne .L51
327: .L54:
328: cmpb $0, (%ebx)
329: jne .L34
330: .L59:
331: movl $1, %esi
332: .p2align 4,,15
333: .L26:
334: addl $540, %esp
335: movl %esi, %eax
336: popl %ebx
337: popl %esi
338: popl %edi
339: popl %ebp
340: ret
341: .p2align 4,,7
342: .L34:
343: xorl %esi, %esi
344: jmp .L26
345: .p2align 4,,7
346: .L61:
347: testb %al, %al
348: je .L48
349: incl %ecx
350: incl %ebx
351: jmp .L58
352: .p2align 4,,7
353: .L60:
354: testb %al, %al
355: je .L43
356: cmpb $46, %al
357: je .L43
358: .p2align 4,,15
359: .L46:
360: incl %ecx
361: movzbl (%ecx), %eax
362: testb %al, %al
363: je .L43
364: cmpb $46, %al
365: jne .L46
366: .L43:
367: incl %ebx
368: jmp .L37
369: .size match, .-match
370: .p2align 4,,15
371: .globl fsfirst_dirname
372: .type fsfirst_dirname, @function
373: fsfirst_dirname:
374: pushl %ebp
375: movl %esp, %ebp
376: pushl %edi
377: pushl %esi
378: pushl %ebx
379: subl $12, %esp
380: xorl %ebx, %ebx
381: movl 12(%ebp), %esi
382: movl 8(%ebp), %edi
383: movl %esi, (%esp)
384: movl %edi, 4(%esp)
385: call sprintf
386: movzbl (%esi), %eax
387: testb %al, %al
388: je .L77
389: .p2align 4,,15
390: .L67:
391: cmpb $92, %al
392: je .L82
393: .L66:
394: incl %ebx
395: movzbl (%ebx,%esi), %eax
396: testb %al, %al
397: jne .L67
398: .L77:
399: movzbl (%ebx,%edi), %eax
400: testb %al, %al
401: je .L79
402: .p2align 4,,15
403: .L71:
404: movb %al, (%ebx,%esi)
405: incl %ebx
406: movzbl (%ebx,%edi), %eax
407: testb %al, %al
408: jne .L71
409: .L79:
410: cmpb $47, (%ebx,%esi)
411: je .L81
412: .p2align 4,,15
413: .L75:
414: decl %ebx
415: cmpb $47, (%ebx,%esi)
416: jne .L75
417: .L81:
418: movb $0, (%ebx,%esi)
419: addl $12, %esp
420: popl %ebx
421: popl %esi
422: popl %edi
423: popl %ebp
424: ret
425: .p2align 4,,7
426: .L82:
427: movb $47, (%ebx,%esi)
428: jmp .L66
429: .size fsfirst_dirname, .-fsfirst_dirname
430: .p2align 4,,15
431: .globl fsfirst_dirmask
432: .type fsfirst_dirmask, @function
433: fsfirst_dirmask:
434: pushl %ebp
435: xorl %edx, %edx
436: movl %esp, %ebp
437: pushl %esi
438: movl 8(%ebp), %ecx
439: movl 12(%ebp), %esi
440: pushl %ebx
441: xorl %ebx, %ebx
442: cmpb $0, (%ecx)
443: je .L102
444: .p2align 4,,15
445: .L87:
446: incl %edx
447: movzbl (%edx,%ecx), %eax
448: testb %al, %al
449: jne .L87
450: .L97:
451: cmpb $47, %al
452: je .L99
453: .p2align 4,,15
454: .L91:
455: decl %edx
456: cmpb $47, (%edx,%ecx)
457: jne .L91
458: .L99:
459: incl %edx
460: cmpb $0, (%edx,%ecx)
461: je .L101
462: .p2align 4,,15
463: .L95:
464: movl %edx, %eax
465: incl %edx
466: movzbl (%eax,%ecx), %eax
467: movb %al, (%ebx,%esi)
468: incl %ebx
469: cmpb $0, (%edx,%ecx)
470: jne .L95
471: .L101:
472: movb $0, (%ebx,%esi)
473: popl %ebx
474: popl %esi
475: popl %ebp
476: ret
477: .L102:
478: movzbl (%ecx), %eax
479: jmp .L97
480: .size fsfirst_dirmask, .-fsfirst_dirmask
481: .p2align 4,,15
482: .globl GemDOS_Init
483: .type GemDOS_Init, @function
484: GemDOS_Init:
485: pushl %ebp
486: movl $8448, %eax
487: movl %esp, %ebp
488: subl $8, %esp
489: movl %eax, 4(%esp)
490: movl $FileHandles, (%esp)
491: call Memory_Clear
492: xorl %eax, %eax
493: movl $255, %edx
494: .p2align 4,,15
495: .L108:
496: xorl %ecx, %ecx
497: movl %ecx, InternalDTAs(%eax)
498: xorl %ecx, %ecx
499: movl %ecx, InternalDTAs+4(%eax)
500: xorl %ecx, %ecx
501: movl %ecx, InternalDTAs+12(%eax)
502: addl $272, %eax
503: decl %edx
504: jns .L108
505: xorl %eax, %eax
506: movl %eax, DTAIndex
507: leave
508: ret
509: .size GemDOS_Init, .-GemDOS_Init
510: .p2align 4,,15
511: .globl GemDOS_Reset
512: .type GemDOS_Reset, @function
513: GemDOS_Reset:
514: pushl %ebp
515: movl %esp, %ebp
516: pushl %esi
517: xorl %esi, %esi
518: pushl %ebx
519: subl $16, %esp
520: movl $31, %ebx
521: .p2align 4,,15
522: .L117:
523: movl FileHandles(%esi), %eax
524: testl %eax, %eax
525: jne .L127
526: .L116:
527: xorl %eax, %eax
528: movl %eax, FileHandles+4(%esi)
529: xorl %eax, %eax
530: movl %eax, FileHandles(%esi)
531: addl $264, %esi
532: decl %ebx
533: jns .L117
534: xorl %eax, %eax
535: movl $255, %ebx
536: .p2align 4,,15
537: .L122:
538: xorl %esi, %esi
539: xorl %ecx, %ecx
540: xorl %edx, %edx
541: movl %esi, InternalDTAs(%eax)
542: movl %ecx, InternalDTAs+4(%eax)
543: movl %edx, InternalDTAs+12(%eax)
544: addl $272, %eax
545: decl %ebx
546: jns .L122
547: xorl %eax, %eax
548: movl %eax, pDTA
549: xorl %eax, %eax
550: movl %eax, DTAIndex
551: addl $16, %esp
552: popl %ebx
553: popl %esi
554: popl %ebp
555: ret
556: .L127:
557: movl FileHandles+4(%esi), %eax
558: movl %eax, (%esp)
559: call fclose
560: jmp .L116
561: .size GemDOS_Reset, .-GemDOS_Reset
562: .p2align 4,,15
563: .globl GemDOS_InitDrives
564: .type GemDOS_InitDrives, @function
565: GemDOS_InitDrives:
566: pushl %ebp
567: movl $12078, %eax
568: movl %esp, %ebp
569: subl $8, %esp
570: movl $emudrive, (%esp)
571: movw %ax, emudrive
572: movb $0, emudrive+2
573: call File_CleanFileName
574: movl $2, %eax
575: movl %eax, emudrive+512
576: movl %ebp, %esp
577: popl %ebp
578: ret
579: .size GemDOS_InitDrives, .-GemDOS_InitDrives
580: .p2align 4,,15
581: .globl GemDOS_UnInitDrives
582: .type GemDOS_UnInitDrives, @function
583: GemDOS_UnInitDrives:
584: pushl %ebp
585: movl %esp, %ebp
586: popl %ebp
587: jmp GemDOS_Reset
588: .size GemDOS_UnInitDrives, .-GemDOS_UnInitDrives
589: .p2align 4,,15
590: .globl GemDOS_FindFreeFileHandle
591: .type GemDOS_FindFreeFileHandle, @function
592: GemDOS_FindFreeFileHandle:
593: pushl %ebp
594: xorl %eax, %eax
595: movl %esp, %ebp
596: movl $FileHandles, %edx
597: .p2align 4,,15
598: .L136:
599: movl (%edx), %ecx
600: testl %ecx, %ecx
601: je .L130
602: incl %eax
603: addl $264, %edx
604: cmpl $31, %eax
605: jle .L136
606: movl $-1, %eax
607: .L130:
608: popl %ebp
609: ret
610: .size GemDOS_FindFreeFileHandle, .-GemDOS_FindFreeFileHandle
611: .p2align 4,,15
612: .globl GemDOS_IsInvalidFileHandle
613: .type GemDOS_IsInvalidFileHandle, @function
614: GemDOS_IsInvalidFileHandle:
615: pushl %ebp
616: xorl %ecx, %ecx
617: movl %esp, %ebp
618: movl 8(%ebp), %edx
619: cmpl $31, %edx
620: ja .L143
621: movl %edx, %eax
622: sall $5, %eax
623: addl %edx, %eax
624: movl FileHandles(,%eax,8), %eax
625: testl %eax, %eax
626: jne .L141
627: .L143:
628: movl $1, %ecx
629: .L141:
630: popl %ebp
631: movl %ecx, %eax
632: ret
633: .size GemDOS_IsInvalidFileHandle, .-GemDOS_IsInvalidFileHandle
634: .p2align 4,,15
635: .globl baselen
636: .type baselen, @function
637: baselen:
638: pushl %ebp
639: movl $46, %eax
640: movl %esp, %ebp
641: subl $24, %esp
642: movl %ebx, -4(%ebp)
643: movl 8(%ebp), %ebx
644: movl %eax, 4(%esp)
645: movl %ebx, (%esp)
646: call strchr
647: testl %eax, %eax
648: je .L147
649: subl %ebx, %eax
650: movl -4(%ebp), %ebx
651: movl %ebp, %esp
652: popl %ebp
653: ret
654: .p2align 4,,7
655: .L147:
656: movl -4(%ebp), %ebx
657: movl %ebp, %esp
658: popl %ebp
659: jmp strlen
660: .size baselen, .-baselen
661: .section .rodata.str1.1
662: .LC2:
663: .string "%s%s"
664: .LC3:
665: .string "%s%c%s"
666: .LC4:
667: .string "no path for %s\n"
668: .text
669: .p2align 4,,15
670: .globl GemDOS_CreateHardDriveFileName
671: .type GemDOS_CreateHardDriveFileName, @function
672: GemDOS_CreateHardDriveFileName:
673: pushl %ebp
674: movl %esp, %ebp
675: pushl %edi
676: pushl %esi
677: pushl %ebx
678: subl $444, %esp
679: movl 12(%ebp), %edx
680: movzbl (%edx), %eax
681: testb %al, %al
682: je .L148
683: movl 16(%ebp), %ecx
684: xorl %edi, %edi
685: movl %edi, -384(%ebp)
686: movl %ecx, -380(%ebp)
687: cmpb $58, 1(%edx)
688: je .L200
689: cmpb $92, %al
690: je .L201
691: movl %edx, 12(%esp)
692: movl 16(%ebp), %ecx
693: movl $emudrive+256, %eax
694: movl %eax, 8(%esp)
695: movl $.LC2, %eax
696: movl %ecx, (%esp)
697: movl %eax, 4(%esp)
698: call sprintf
699: movl $emudrive+256, %ecx
700: .p2align 4,,15
701: .L154:
702: movl (%ecx), %eax
703: addl $4, %ecx
704: leal -16843009(%eax), %edx
705: notl %eax
706: andl %eax, %edx
707: andl $-2139062144, %edx
708: je .L154
709: testl $32896, %edx
710: jne .L156
711: shrl $16, %edx
712: addl $2, %ecx
713: .L156:
714: addb %dl, %dl
715: movl 16(%ebp), %eax
716: sbbl $3, %ecx
717: subl $emudrive+256, %ecx
718: leal -1(%ecx,%eax), %ecx
719: movl %ecx, -384(%ebp)
720: .p2align 4,,15
721: .L196:
722: movl -380(%ebp), %eax
723: movl $92, %esi
724: movl %esi, 4(%esp)
725: incl %eax
726: movl %eax, (%esp)
727: call strchr
728: movl %eax, -388(%ebp)
729: testl %eax, %eax
730: movl %eax, -380(%ebp)
731: je .L202
732: movl -384(%ebp), %eax
733: testl %eax, %eax
734: je .L169
735: movl -384(%ebp), %ecx
736: xorl %ebx, %ebx
737: movb $47, (%ecx)
738: incl %ecx
739: movl %ecx, -384(%ebp)
740: movzbl (%ecx), %eax
741: movb %al, -389(%ebp)
742: xorl %eax, %eax
743: movb $42, (%ecx)
744: incl %ecx
745: movl %ecx, -384(%ebp)
746: movzbl (%ecx), %edx
747: movb %dl, -390(%ebp)
748: movb $0, (%ecx)
749: leal -72(%ebp), %ecx
750: movl %eax, 8(%esp)
751: movl $8192, %eax
752: movl %eax, 4(%esp)
753: movl 16(%ebp), %eax
754: movl %ecx, 12(%esp)
755: movl %eax, (%esp)
756: call glob
757: movzbl -390(%ebp), %edx
758: movl -384(%ebp), %ecx
759: movb %dl, (%ecx)
760: decl %ecx
761: movzbl -389(%ebp), %eax
762: movl %ecx, -384(%ebp)
763: movb %al, (%ecx)
764: movl -388(%ebp), %edx
765: movb $0, (%edx)
766: movl 16(%ebp), %ecx
767: movl %ecx, (%esp)
768: call strlen
769: movl %eax, -404(%ebp)
770: movl -384(%ebp), %eax
771: movl %eax, (%esp)
772: call baselen
773: movl %eax, -400(%ebp)
774: movl -72(%ebp), %edi
775: xorl %eax, %eax
776: movl %eax, -396(%ebp)
777: cmpl %edi, %ebx
778: jae .L191
779: .p2align 4,,15
780: .L168:
781: cmpl $7, -400(%ebp)
782: jg .L166
783: movl 16(%ebp), %edx
784: movl -68(%ebp), %esi
785: movl %edx, 4(%esp)
786: movl (%esi,%ebx,4), %eax
787: movl %eax, (%esp)
788: call strcasecmp
789: .L197:
790: testl %eax, %eax
791: jne .L163
792: movl -388(%ebp), %eax
793: movl $47, %edi
794: leal -328(%ebp), %edx
795: movl %edi, 12(%esp)
796: incl %eax
797: movl %eax, 16(%esp)
798: movl (%esi,%ebx,4), %eax
799: movl $.LC3, %ebx
800: movl %ebx, 4(%esp)
801: movl %edx, (%esp)
802: movl %eax, 8(%esp)
803: call sprintf
804: movl 16(%ebp), %eax
805: leal -328(%ebp), %ecx
806: movl %ecx, 4(%esp)
807: movl %eax, (%esp)
808: call strcpy
809: movl -72(%ebp), %ebx
810: movl $1, %ecx
811: movl %ecx, -396(%ebp)
812: movl %ebx, %edi
813: .L163:
814: incl %ebx
815: cmpl %edi, %ebx
816: jb .L168
817: .L191:
818: leal -72(%ebp), %edx
819: movl %edx, (%esp)
820: call globfree
821: movl -396(%ebp), %edx
822: testl %edx, %edx
823: je .L203
824: .L169:
825: movl -388(%ebp), %edx
826: movl %edx, -384(%ebp)
827: jmp .L196
828: .L203:
829: movl -384(%ebp), %ecx
830: leal -72(%ebp), %eax
831: xorl %ebx, %ebx
832: movb $42, (%ecx)
833: incl %ecx
834: movl %ecx, -384(%ebp)
835: movb $0, (%ecx)
836: movl 16(%ebp), %edx
837: movl %eax, 12(%esp)
838: xorl %eax, %eax
839: movl %eax, 8(%esp)
840: xorl %eax, %eax
841: movl %edx, (%esp)
842: movl %eax, 4(%esp)
843: call glob
844: movzbl -390(%ebp), %ecx
845: movl -384(%ebp), %eax
846: movb %cl, (%eax)
847: movzbl -389(%ebp), %edx
848: movb %dl, -1(%eax)
849: movl -72(%ebp), %edi
850: cmpl %edi, -396(%ebp)
851: jae .L193
852: .p2align 4,,15
853: .L175:
854: movl -404(%ebp), %ecx
855: movl 16(%ebp), %eax
856: movl -68(%ebp), %esi
857: movl %ecx, 8(%esp)
858: movl %eax, 4(%esp)
859: movl (%esi,%ebx,4), %eax
860: movl %eax, (%esp)
861: call strncasecmp
862: testl %eax, %eax
863: je .L204
864: .L172:
865: incl %ebx
866: cmpl %edi, %ebx
867: jb .L175
868: .L193:
869: leal -72(%ebp), %edx
870: movl %edx, (%esp)
871: call globfree
872: movl -396(%ebp), %eax
873: testl %eax, %eax
874: jne .L169
875: movl -388(%ebp), %ecx
876: movl $.LC4, %edi
877: movb $47, (%ecx)
878: movl 16(%ebp), %eax
879: movl %edi, 4(%esp)
880: movl %eax, 8(%esp)
881: movl stderr, %eax
882: movl %eax, (%esp)
883: call fprintf
884: jmp .L169
885: .L204:
886: movl -388(%ebp), %eax
887: leal -328(%ebp), %edx
888: incl %eax
889: movl %eax, 16(%esp)
890: movl $47, %eax
891: movl %eax, 12(%esp)
892: movl (%esi,%ebx,4), %eax
893: movl %edx, (%esp)
894: movl %eax, 8(%esp)
895: movl $.LC3, %eax
896: movl %eax, 4(%esp)
897: call sprintf
898: movl 16(%ebp), %eax
899: leal -328(%ebp), %ecx
900: movl %ecx, 4(%esp)
901: movl %eax, (%esp)
902: call strcpy
903: movl -72(%ebp), %ebx
904: movl $1, %eax
905: movl %eax, -396(%ebp)
906: movl %ebx, %edi
907: jmp .L172
908: .p2align 4,,7
909: .L166:
910: movl 16(%ebp), %eax
911: movl -404(%ebp), %ecx
912: movl -68(%ebp), %esi
913: movl %eax, 4(%esp)
914: movl %ecx, 8(%esp)
915: movl (%esi,%ebx,4), %eax
916: movl %eax, (%esp)
917: call strncasecmp
918: jmp .L197
919: .L202:
920: movl -384(%ebp), %ebx
921: testl %ebx, %ebx
922: je .L205
923: .L189:
924: movl -384(%ebp), %eax
925: movb $47, (%eax)
926: incl %eax
927: movl %eax, -384(%ebp)
928: movzbl (%eax), %edx
929: testb %dl, %dl
930: movb %dl, -405(%ebp)
931: je .L148
932: movl %eax, (%esp)
933: movl $63, %edx
934: movl %edx, 4(%esp)
935: call strchr
936: testl %eax, %eax
937: je .L206
938: .L148:
939: addl $444, %esp
940: popl %ebx
941: popl %esi
942: popl %edi
943: popl %ebp
944: ret
945: .L206:
946: movl -384(%ebp), %ecx
947: movl $42, %eax
948: movl %eax, 4(%esp)
949: movl %ecx, (%esp)
950: call strchr
951: testl %eax, %eax
952: jne .L148
953: movl -384(%ebp), %eax
954: leal -376(%ebp), %edx
955: xorl %esi, %esi
956: movb $42, (%eax)
957: incl %eax
958: movl %eax, -384(%ebp)
959: movzbl (%eax), %ebx
960: movb $0, (%eax)
961: movl 16(%ebp), %ecx
962: xorl %eax, %eax
963: movl %eax, 8(%esp)
964: xorl %eax, %eax
965: movl %edx, 12(%esp)
966: movl %ecx, (%esp)
967: movl %eax, 4(%esp)
968: call glob
969: movl -384(%ebp), %eax
970: movb %bl, (%eax)
971: decl %eax
972: movzbl -405(%ebp), %edx
973: movl %eax, -384(%ebp)
974: movb %dl, (%eax)
975: movl 16(%ebp), %ecx
976: movl %ecx, (%esp)
977: call strlen
978: movl %eax, -416(%ebp)
979: movl -384(%ebp), %eax
980: movl %eax, (%esp)
981: call baselen
982: movl %eax, -412(%ebp)
983: movl -376(%ebp), %edi
984: cmpl %edi, %esi
985: jae .L195
986: .L188:
987: cmpl $7, -412(%ebp)
988: jg .L186
989: movl 16(%ebp), %edx
990: movl -372(%ebp), %ebx
991: movl %edx, 4(%esp)
992: movl (%ebx,%esi,4), %eax
993: movl %eax, (%esp)
994: call strcasecmp
995: .L199:
996: testl %eax, %eax
997: jne .L183
998: movl (%ebx,%esi,4), %eax
999: movl 16(%ebp), %edx
1000: movl %eax, 4(%esp)
1001: movl %edx, (%esp)
1002: call strcpy
1003: movl -376(%ebp), %esi
1004: movl %esi, %edi
1005: .L183:
1006: incl %esi
1007: cmpl %edi, %esi
1008: jb .L188
1009: .L195:
1010: leal -376(%ebp), %ecx
1011: movl %ecx, (%esp)
1012: call globfree
1013: jmp .L148
1014: .L186:
1015: movl 16(%ebp), %eax
1016: movl -416(%ebp), %ecx
1017: movl -372(%ebp), %ebx
1018: movl %eax, 4(%esp)
1019: movl %ecx, 8(%esp)
1020: movl (%ebx,%esi,4), %eax
1021: movl %eax, (%esp)
1022: call strncasecmp
1023: jmp .L199
1024: .L205:
1025: movl $47, %ecx
1026: movl %ecx, 4(%esp)
1027: movl 16(%ebp), %ecx
1028: movl %ecx, (%esp)
1029: call strrchr
1030: movl %eax, -384(%ebp)
1031: testl %eax, %eax
1032: jne .L189
1033: jmp .L148
1034: .L201:
1035: movl %edx, 12(%esp)
1036: movl $emudrive, %ecx
1037: movl $.LC2, %edx
1038: movl %edx, 4(%esp)
1039: movl 16(%ebp), %edx
1040: movl %ecx, 8(%esp)
1041: movl %edx, (%esp)
1042: .L198:
1043: call sprintf
1044: jmp .L196
1045: .L200:
1046: movl %edx, (%esp)
1047: movl $emudrive, %esi
1048: movl $.LC2, %ebx
1049: call File_RemoveFileNameDrive
1050: movl %eax, 12(%esp)
1051: movl 16(%ebp), %eax
1052: movl %esi, 8(%esp)
1053: movl %ebx, 4(%esp)
1054: movl %eax, (%esp)
1055: jmp .L198
1056: .size GemDOS_CreateHardDriveFileName, .-GemDOS_CreateHardDriveFileName
1057: .p2align 4,,15
1058: .globl GemDOS_ConvertAttribute
1059: .type GemDOS_ConvertAttribute, @function
1060: GemDOS_ConvertAttribute:
1061: pushl %ebp
1062: xorl %edx, %edx
1063: movl %esp, %ebp
1064: movl 8(%ebp), %eax
1065: andl $61440, %eax
1066: cmpl $16384, %eax
1067: je .L209
1068: .L208:
1069: popl %ebp
1070: movzbl %dl, %eax
1071: ret
1072: .p2align 4,,7
1073: .L209:
1074: movb $16, %dl
1075: jmp .L208
1076: .size GemDOS_ConvertAttribute, .-GemDOS_ConvertAttribute
1077: .p2align 4,,15
1078: .globl GemDOS_SetDTA
1079: .type GemDOS_SetDTA, @function
1080: GemDOS_SetDTA:
1081: pushl %ebp
1082: movl %esp, %ebp
1083: subl $8, %esp
1084: movl $15, (%esp)
1085: call GetReg
1086: movl %eax, (%esp)
1087: call MemReadLong
1088: movl STRam, %edx
1089: andl $16777215, %eax
1090: addl %edx, %eax
1091: movl %eax, pDTA
1092: movl %ebp, %esp
1093: popl %ebp
1094: ret
1095: .size GemDOS_SetDTA, .-GemDOS_SetDTA
1096: .section .rodata.str1.1
1097: .LC5:
1098: .string "w+"
1099: .LC6:
1100: .string "wb"
1101: .text
1102: .p2align 4,,15
1103: .globl GemDOS_Create
1104: .type GemDOS_Create, @function
1105: GemDOS_Create:
1106: pushl %ebp
1107: movl $.LC5, %eax
1108: movl %esp, %ebp
1109: pushl %edi
1110: pushl %esi
1111: pushl %ebx
1112: subl $300, %esp
1113: movl %eax, -288(%ebp)
1114: movl $.LC6, %eax
1115: movl %eax, -284(%ebp)
1116: movl $15, (%esp)
1117: call GetReg
1118: movl %eax, %esi
1119: subl $2, %esi
1120: leal 2(%esi), %eax
1121: movl %eax, (%esp)
1122: call MemReadLong
1123: movl %eax, %ebx
1124: movl STRam, %eax
1125: andl $16777215, %ebx
1126: addl %eax, %ebx
1127: leal 6(%esi), %eax
1128: movl %eax, (%esp)
1129: call MemReadWord
1130: movl %ebx, 4(%esp)
1131: movswl %ax,%esi
1132: leal -280(%ebp), %eax
1133: movl %eax, 8(%esp)
1134: movl $2, (%esp)
1135: call GemDOS_CreateHardDriveFileName
1136: call GemDOS_FindFreeFileHandle
1137: cmpl $-1, %eax
1138: movl %eax, %ebx
1139: je .L217
1140: sall $5, %eax
1141: andl $1, %esi
1142: addl %ebx, %eax
1143: leal 0(,%eax,8), %edi
1144: leal -288(%ebp), %eax
1145: movl (%eax,%esi,4), %eax
1146: movl %eax, 4(%esp)
1147: leal -280(%ebp), %eax
1148: movl %eax, (%esp)
1149: call fopen
1150: movl %eax, FileHandles+4(%edi)
1151: testl %eax, %eax
1152: je .L214
1153: movl $1, %esi
1154: leal 64(%ebx), %eax
1155: movl %esi, FileHandles(%edi)
1156: movl %eax, 4(%esp)
1157: .L216:
1158: movl $0, (%esp)
1159: call SetReg
1160: addl $300, %esp
1161: popl %ebx
1162: popl %esi
1163: popl %edi
1164: popl %ebp
1165: ret
1166: .p2align 4,,7
1167: .L214:
1168: movl $-33, %ecx
1169: movl %ecx, 4(%esp)
1170: jmp .L216
1171: .p2align 4,,7
1172: .L217:
1173: movl $-35, %edi
1174: movl %edi, 4(%esp)
1175: jmp .L216
1176: .size GemDOS_Create, .-GemDOS_Create
1177: .section .rodata.str1.1
1178: .LC7:
1179: .string "rb"
1180: .LC8:
1181: .string "r+"
1182: .LC9:
1183: .string "%s"
1184: .text
1185: .p2align 4,,15
1186: .globl GemDOS_Open
1187: .type GemDOS_Open, @function
1188: GemDOS_Open:
1189: pushl %ebp
1190: movl $.LC7, %eax
1191: movl %esp, %ebp
1192: pushl %edi
1193: pushl %esi
1194: pushl %ebx
1195: subl $300, %esp
1196: movl %eax, -296(%ebp)
1197: movl $.LC6, %eax
1198: movl %eax, -292(%ebp)
1199: movl $.LC8, %eax
1200: movl %eax, -288(%ebp)
1201: movl $15, (%esp)
1202: call GetReg
1203: movl %eax, %esi
1204: subl $2, %esi
1205: leal 2(%esi), %eax
1206: movl %eax, (%esp)
1207: call MemReadLong
1208: movl STRam, %edi
1209: movl %eax, %ebx
1210: leal 6(%esi), %eax
1211: movl %eax, (%esp)
1212: andl $16777215, %ebx
1213: addl %edi, %ebx
1214: call MemReadWord
1215: movl %ebx, 4(%esp)
1216: movswl %ax,%edi
1217: leal -280(%ebp), %eax
1218: movl %eax, 8(%esp)
1219: movl $2, (%esp)
1220: call GemDOS_CreateHardDriveFileName
1221: call GemDOS_FindFreeFileHandle
1222: cmpl $-1, %eax
1223: movl %eax, %esi
1224: je .L223
1225: sall $5, %eax
1226: andl $3, %edi
1227: addl %esi, %eax
1228: leal 0(,%eax,8), %ebx
1229: movl -296(%ebp,%edi,4), %eax
1230: movl %eax, 4(%esp)
1231: leal -280(%ebp), %eax
1232: movl %eax, (%esp)
1233: call fopen
1234: movl %eax, FileHandles+4(%ebx)
1235: movl $.LC9, %edx
1236: leal -280(%ebp), %eax
1237: movl %eax, 8(%esp)
1238: leal FileHandles+8(%ebx), %eax
1239: movl %edx, 4(%esp)
1240: movl %eax, (%esp)
1241: call sprintf
1242: movl FileHandles+4(%ebx), %eax
1243: testl %eax, %eax
1244: je .L220
1245: movl $1, %eax
1246: movl %eax, FileHandles(%ebx)
1247: leal 64(%esi), %eax
1248: .L222:
1249: movl %eax, 4(%esp)
1250: .L221:
1251: movl $0, (%esp)
1252: call SetReg
1253: addl $300, %esp
1254: popl %ebx
1255: popl %esi
1256: popl %edi
1257: popl %ebp
1258: ret
1259: .p2align 4,,7
1260: .L220:
1261: movl $-33, %eax
1262: jmp .L222
1263: .p2align 4,,7
1264: .L223:
1265: movl $-35, %ecx
1266: movl %ecx, 4(%esp)
1267: jmp .L221
1268: .size GemDOS_Open, .-GemDOS_Open
1269: .p2align 4,,15
1270: .globl GemDOS_Close
1271: .type GemDOS_Close, @function
1272: GemDOS_Close:
1273: pushl %ebp
1274: movl %esp, %ebp
1275: subl $24, %esp
1276: movl $15, (%esp)
1277: movl %esi, -4(%ebp)
1278: movl %ebx, -8(%ebp)
1279: call GetReg
1280: movl %eax, (%esp)
1281: call MemReadWord
1282: cwtl
1283: leal -64(%eax), %esi
1284: movl %esi, (%esp)
1285: call GemDOS_IsInvalidFileHandle
1286: testl %eax, %eax
1287: je .L227
1288: .L224:
1289: movl -8(%ebp), %ebx
1290: movl -4(%ebp), %esi
1291: movl %ebp, %esp
1292: popl %ebp
1293: ret
1294: .p2align 4,,7
1295: .L227:
1296: movl %esi, %ebx
1297: sall $5, %ebx
1298: addl %esi, %ebx
1299: sall $3, %ebx
1300: movl FileHandles+4(%ebx), %eax
1301: movl %eax, (%esp)
1302: call fclose
1303: movl $0, (%esp)
1304: xorl %eax, %eax
1305: movl %eax, FileHandles(%ebx)
1306: xorl %eax, %eax
1307: movl %eax, 4(%esp)
1308: call SetReg
1309: jmp .L224
1310: .size GemDOS_Close, .-GemDOS_Close
1311: .p2align 4,,15
1312: .globl GemDOS_Read
1313: .type GemDOS_Read, @function
1314: GemDOS_Read:
1315: pushl %ebp
1316: movl %esp, %ebp
1317: pushl %edi
1318: pushl %esi
1319: pushl %ebx
1320: subl $28, %esp
1321: movl $15, (%esp)
1322: call GetReg
1323: movl %eax, %ebx
1324: subl $2, %ebx
1325: leal 2(%ebx), %eax
1326: movl %eax, (%esp)
1327: call MemReadWord
1328: cwtl
1329: leal -64(%eax), %esi
1330: leal 4(%ebx), %eax
1331: movl %eax, (%esp)
1332: call MemReadLong
1333: movl %eax, -16(%ebp)
1334: leal 8(%ebx), %eax
1335: movl %eax, (%esp)
1336: call MemReadLong
1337: movl %esi, (%esp)
1338: movl %eax, %edi
1339: movl STRam, %eax
1340: andl $16777215, %edi
1341: addl %eax, %edi
1342: call GemDOS_IsInvalidFileHandle
1343: testl %eax, %eax
1344: je .L235
1345: .L228:
1346: addl $28, %esp
1347: popl %ebx
1348: popl %esi
1349: popl %edi
1350: popl %ebp
1351: ret
1352: .p2align 4,,7
1353: .L235:
1354: movl %esi, %eax
1355: sall $5, %eax
1356: addl %esi, %eax
1357: sall $3, %eax
1358: xorl %esi, %esi
1359: movl %eax, -20(%ebp)
1360: movl FileHandles+4(%eax), %eax
1361: movl %eax, (%esp)
1362: call ftell
1363: movl %esi, 4(%esp)
1364: movl -20(%ebp), %edx
1365: movl %eax, %ebx
1366: movl $2, %eax
1367: movl %eax, 8(%esp)
1368: movl FileHandles+4(%edx), %eax
1369: movl %eax, (%esp)
1370: call fseek
1371: movl -20(%ebp), %edx
1372: movl FileHandles+4(%edx), %eax
1373: movl %eax, (%esp)
1374: call ftell
1375: movl %ebx, 4(%esp)
1376: movl -20(%ebp), %edx
1377: movl %eax, %esi
1378: xorl %ecx, %ecx
1379: movl %ecx, 8(%esp)
1380: movl FileHandles+4(%edx), %eax
1381: movl %eax, (%esp)
1382: call fseek
1383: cmpl %ebx, %esi
1384: je .L236
1385: cmpl %esi, -16(%ebp)
1386: jbe .L233
1387: movl %esi, -16(%ebp)
1388: .L233:
1389: movl %edi, (%esp)
1390: movl -20(%ebp), %edx
1391: movl FileHandles+4(%edx), %eax
1392: movl %eax, 12(%esp)
1393: movl -16(%ebp), %eax
1394: movl %eax, 8(%esp)
1395: movl $1, %eax
1396: movl %eax, 4(%esp)
1397: call fread
1398: movl %eax, 4(%esp)
1399: .L234:
1400: movl $0, (%esp)
1401: call SetReg
1402: jmp .L228
1403: .L236:
1404: xorl %edx, %edx
1405: movl %edx, 4(%esp)
1406: jmp .L234
1407: .size GemDOS_Read, .-GemDOS_Read
1408: .p2align 4,,15
1409: .globl GemDOS_Write
1410: .type GemDOS_Write, @function
1411: GemDOS_Write:
1412: pushl %ebp
1413: movl %esp, %ebp
1414: subl $40, %esp
1415: movl $15, (%esp)
1416: movl %ebx, -12(%ebp)
1417: movl %esi, -8(%ebp)
1418: movl %edi, -4(%ebp)
1419: call GetReg
1420: movl %eax, %ebx
1421: subl $2, %ebx
1422: leal 2(%ebx), %eax
1423: movl %eax, (%esp)
1424: call MemReadWord
1425: cwtl
1426: leal -64(%eax), %esi
1427: leal 4(%ebx), %eax
1428: movl %eax, (%esp)
1429: call MemReadLong
1430: movl %eax, %edi
1431: leal 8(%ebx), %eax
1432: movl %eax, (%esp)
1433: call MemReadLong
1434: movl %esi, (%esp)
1435: movl %eax, %ebx
1436: movl STRam, %eax
1437: andl $16777215, %ebx
1438: addl %eax, %ebx
1439: call GemDOS_IsInvalidFileHandle
1440: testl %eax, %eax
1441: je .L242
1442: .L237:
1443: movl -12(%ebp), %ebx
1444: movl -8(%ebp), %esi
1445: movl -4(%ebp), %edi
1446: movl %ebp, %esp
1447: popl %ebp
1448: ret
1449: .p2align 4,,7
1450: .L242:
1451: movl %edi, 8(%esp)
1452: movl %esi, %eax
1453: sall $5, %eax
1454: movl %ebx, (%esp)
1455: addl %esi, %eax
1456: movl FileHandles+4(,%eax,8), %eax
1457: movl %eax, 12(%esp)
1458: movl $1, %eax
1459: movl %eax, 4(%esp)
1460: call fwrite
1461: movl %eax, 4(%esp)
1462: movl $0, (%esp)
1463: call SetReg
1464: jmp .L237
1465: .size GemDOS_Write, .-GemDOS_Write
1466: .p2align 4,,15
1467: .globl GemDOS_UnLink
1468: .type GemDOS_UnLink, @function
1469: GemDOS_UnLink:
1470: pushl %ebp
1471: movl %esp, %ebp
1472: subl $280, %esp
1473: movl $15, (%esp)
1474: movl %ebx, -4(%ebp)
1475: leal -264(%ebp), %ebx
1476: call GetReg
1477: movl %eax, (%esp)
1478: call MemReadLong
1479: movl %ebx, 8(%esp)
1480: movl STRam, %edx
1481: andl $16777215, %eax
1482: movl $2, (%esp)
1483: addl %edx, %eax
1484: movl %eax, 4(%esp)
1485: call GemDOS_CreateHardDriveFileName
1486: movl %ebx, (%esp)
1487: call unlink
1488: testl %eax, %eax
1489: jne .L244
1490: xorl %eax, %eax
1491: .L247:
1492: movl %eax, 4(%esp)
1493: movl $0, (%esp)
1494: call SetReg
1495: movl -4(%ebp), %ebx
1496: movl %ebp, %esp
1497: popl %ebp
1498: ret
1499: .p2align 4,,7
1500: .L244:
1501: movl $-33, %eax
1502: jmp .L247
1503: .size GemDOS_UnLink, .-GemDOS_UnLink
1504: .section .rodata.str1.1
1505: .LC10:
1506: .string "\tError setting DTA.\n"
1507: .text
1508: .p2align 4,,15
1509: .globl GemDOS_SNext
1510: .type GemDOS_SNext, @function
1511: GemDOS_SNext:
1512: pushl %ebp
1513: movl %esp, %ebp
1514: subl $24, %esp
1515: movl $15, (%esp)
1516: call GetReg
1517: movl pDTA, %edx
1518: movl 2(%edx), %eax
1519: #APP
1520: bswap %eax
1521:
1522: #NO_APP
1523: cmpl $311964790, %eax
1524: je .L255
1525: .L248:
1526: movl %ebp, %esp
1527: popl %ebp
1528: ret
1529: .p2align 4,,7
1530: .L255:
1531: movzwl (%edx), %eax
1532: #APP
1533: xchgb %al,%ah
1534: #NO_APP
1535: movzbl %al, %eax
1536: movl %eax, %edx
1537: sall $4, %edx
1538: addl %eax, %edx
1539: sall $4, %edx
1540: movl InternalDTAs+8(%edx), %ecx
1541: cmpl InternalDTAs+4(%edx), %ecx
1542: jl .L252
1543: movl $-49, %eax
1544: movl %eax, 4(%esp)
1545: .L254:
1546: movl $0, (%esp)
1547: call SetReg
1548: jmp .L248
1549: .p2align 4,,7
1550: .L252:
1551: movl InternalDTAs+12(%edx), %eax
1552: movl (%eax,%ecx,4), %eax
1553: movl %eax, 4(%esp)
1554: leal 1(%ecx), %eax
1555: movl %eax, InternalDTAs+8(%edx)
1556: leal InternalDTAs+16(%edx), %eax
1557: movl %eax, (%esp)
1558: call PopulateDTA
1559: testl %eax, %eax
1560: jne .L253
1561: movl $.LC10, (%esp)
1562: movl stderr, %eax
1563: movl %eax, 12(%esp)
1564: movl $20, %eax
1565: movl %eax, 8(%esp)
1566: movl $1, %eax
1567: movl %eax, 4(%esp)
1568: call fwrite
1569: jmp .L248
1570: .L253:
1571: xorl %ecx, %ecx
1572: movl %ecx, 4(%esp)
1573: jmp .L254
1574: .size GemDOS_SNext, .-GemDOS_SNext
1575: .p2align 4,,15
1576: .globl GemDOS_SFirst
1577: .type GemDOS_SFirst, @function
1578: GemDOS_SFirst:
1579: pushl %ebp
1580: movl %esp, %ebp
1581: pushl %edi
1582: leal -280(%ebp), %edi
1583: pushl %esi
1584: pushl %ebx
1585: subl $556, %esp
1586: movl $15, (%esp)
1587: call GetReg
1588: movl %eax, %esi
1589: subl $2, %esi
1590: leal 2(%esi), %eax
1591: movl %eax, (%esp)
1592: call MemReadLong
1593: movl STRam, %ecx
1594: movl %eax, %ebx
1595: andl $16777215, %ebx
1596: leal 6(%esi), %eax
1597: addl %ecx, %ebx
1598: movl %eax, (%esp)
1599: call MemReadWord
1600: movl %edi, 8(%esp)
1601: movzwl %ax, %esi
1602: movl %ebx, 4(%esp)
1603: movl $2, (%esp)
1604: call GemDOS_CreateHardDriveFileName
1605: movzwl DTAIndex, %eax
1606: #APP
1607: xchgb %al,%ah
1608: #NO_APP
1609: movl pDTA, %edx
1610: movw %ax, (%edx)
1611: movl $311964790, %eax
1612: #APP
1613: bswap %eax
1614:
1615: #NO_APP
1616: movl %eax, 2(%edx)
1617: movl DTAIndex, %ecx
1618: movl %ecx, %eax
1619: sall $4, %eax
1620: addl %ecx, %eax
1621: sall $4, %eax
1622: cmpl $1, InternalDTAs(%eax)
1623: je .L286
1624: .L259:
1625: movl %ecx, %eax
1626: movl $1, %edx
1627: sall $4, %eax
1628: addl %ecx, %eax
1629: sall $4, %eax
1630: andl $8, %esi
1631: movl %edx, InternalDTAs(%eax)
1632: je .L260
1633: movl pDTA, %eax
1634: movl $1280658757, 30(%eax)
1635: movl $1145394241, 34(%eax)
1636: movl $825241646, 38(%eax)
1637: movb $0, 42(%eax)
1638: xorl %eax, %eax
1639: .L285:
1640: movl %eax, 4(%esp)
1641: movl $0, (%esp)
1642: call SetReg
1643: .L256:
1644: addl $556, %esp
1645: popl %ebx
1646: popl %esi
1647: popl %edi
1648: popl %ebp
1649: ret
1650: .p2align 4,,7
1651: .L260:
1652: movl %edi, (%esp)
1653: addl $InternalDTAs+16, %eax
1654: movl %eax, 4(%esp)
1655: call fsfirst_dirname
1656: movl DTAIndex, %edx
1657: movl %edx, %eax
1658: sall $4, %eax
1659: addl %edx, %eax
1660: sall $4, %eax
1661: addl $InternalDTAs+16, %eax
1662: movl %eax, (%esp)
1663: call opendir
1664: testl %eax, %eax
1665: je .L287
1666: movl %eax, (%esp)
1667: xorl %esi, %esi
1668: call closedir
1669: movl %esi, 8(%esp)
1670: movl DTAIndex, %eax
1671: movl %eax, %ebx
1672: sall $4, %ebx
1673: addl %eax, %ebx
1674: movl $alphasort, %eax
1675: movl %eax, 12(%esp)
1676: sall $4, %ebx
1677: leal -540(%ebp), %eax
1678: movl %eax, 4(%esp)
1679: leal InternalDTAs+16(%ebx), %eax
1680: movl %eax, (%esp)
1681: call scandir
1682: movl %eax, InternalDTAs+4(%ebx)
1683: movl DTAIndex, %edx
1684: movl %edx, %eax
1685: sall $4, %eax
1686: addl %edx, %eax
1687: sall $4, %eax
1688: movl InternalDTAs+4(%eax), %ecx
1689: testl %ecx, %ecx
1690: js .L283
1691: movl %edi, (%esp)
1692: xorl %edx, %edx
1693: xorl %esi, %esi
1694: movl %edx, InternalDTAs+8(%eax)
1695: xorl %edi, %edi
1696: leal -536(%ebp), %eax
1697: movl %eax, 4(%esp)
1698: call fsfirst_dirmask
1699: movl DTAIndex, %ecx
1700: movl %ecx, %eax
1701: sall $4, %eax
1702: addl %ecx, %eax
1703: sall $4, %eax
1704: cmpl InternalDTAs+4(%eax), %edi
1705: jge .L256
1706: .p2align 4,,15
1707: .L268:
1708: movl -540(%ebp), %eax
1709: movl (%eax,%esi,4), %eax
1710: addl $11, %eax
1711: movl %eax, 4(%esp)
1712: leal -536(%ebp), %eax
1713: movl %eax, (%esp)
1714: call match
1715: testl %eax, %eax
1716: je .L265
1717: incl %edi
1718: .L265:
1719: movl DTAIndex, %ecx
1720: incl %esi
1721: movl %ecx, %eax
1722: sall $4, %eax
1723: leal (%ecx,%eax), %ebx
1724: sall $4, %ebx
1725: cmpl InternalDTAs+4(%ebx), %esi
1726: jl .L268
1727: testl %edi, %edi
1728: je .L256
1729: leal 0(,%edi,4), %eax
1730: xorl %esi, %esi
1731: movl %eax, (%esp)
1732: call malloc
1733: movl %eax, InternalDTAs+12(%ebx)
1734: movl DTAIndex, %ecx
1735: xorl %ebx, %ebx
1736: movl %ecx, %eax
1737: sall $4, %eax
1738: addl %ecx, %eax
1739: sall $4, %eax
1740: cmpl InternalDTAs+4(%eax), %esi
1741: jl .L275
1742: .L280:
1743: movl %ecx, %eax
1744: sall $4, %eax
1745: addl %ecx, %eax
1746: sall $4, %eax
1747: testl %edi, %edi
1748: movl %edi, InternalDTAs+4(%eax)
1749: jne .L276
1750: .L283:
1751: movl $-33, %eax
1752: jmp .L285
1753: .L276:
1754: movl $0, (%esp)
1755: call GemDOS_SNext
1756: movl DTAIndex, %ecx
1757: incl %ecx
1758: movzbl %cl,%eax
1759: movl %eax, DTAIndex
1760: jmp .L256
1761: .p2align 4,,7
1762: .L275:
1763: movl -540(%ebp), %eax
1764: movl (%eax,%esi,4), %eax
1765: addl $11, %eax
1766: movl %eax, 4(%esp)
1767: leal -536(%ebp), %eax
1768: movl %eax, (%esp)
1769: call match
1770: testl %eax, %eax
1771: je .L281
1772: movl DTAIndex, %ecx
1773: movl %ecx, %eax
1774: sall $4, %eax
1775: addl %ecx, %eax
1776: sall $4, %eax
1777: movl InternalDTAs+12(%eax), %edx
1778: movl -540(%ebp), %eax
1779: movl (%eax,%esi,4), %eax
1780: movl %eax, (%edx,%ebx,4)
1781: incl %ebx
1782: .L272:
1783: movl %ecx, %eax
1784: incl %esi
1785: sall $4, %eax
1786: addl %ecx, %eax
1787: sall $4, %eax
1788: cmpl InternalDTAs+4(%eax), %esi
1789: jl .L275
1790: jmp .L280
1791: .L281:
1792: movl DTAIndex, %ecx
1793: jmp .L272
1794: .L287:
1795: movl $-34, %eax
1796: jmp .L285
1797: .p2align 4,,7
1798: .L286:
1799: call ClearInternalDTA
1800: movl DTAIndex, %ecx
1801: jmp .L259
1802: .size GemDOS_SFirst, .-GemDOS_SFirst
1803: .p2align 4,,15
1804: .globl Call_Memset
1805: .type Call_Memset, @function
1806: Call_Memset:
1807: pushl %ebp
1808: movl %esp, %ebp
1809: subl $24, %esp
1810: movl $15, (%esp)
1811: movl %ebx, -8(%ebp)
1812: movl %esi, -4(%ebp)
1813: call GetReg
1814: movl %eax, %esi
1815: subl $2, %esi
1816: leal 2(%esi), %eax
1817: movl %eax, (%esp)
1818: call MemReadLong
1819: movl %eax, %ebx
1820: leal 6(%esi), %eax
1821: movl %eax, (%esp)
1822: call MemReadLong
1823: movl %ebx, 8(%esp)
1824: movl STRam, %esi
1825: xorl %ebx, %ebx
1826: movl %ebx, 4(%esp)
1827: addl %esi, %eax
1828: movl %eax, (%esp)
1829: call memset
1830: movl -8(%ebp), %ebx
1831: movl -4(%ebp), %esi
1832: movl %ebp, %esp
1833: popl %ebp
1834: ret
1835: .size Call_Memset, .-Call_Memset
1836: .p2align 4,,15
1837: .globl Call_MemsetBlue
1838: .type Call_MemsetBlue, @function
1839: Call_MemsetBlue:
1840: pushl %ebp
1841: movl %esp, %ebp
1842: subl $24, %esp
1843: movl $15, (%esp)
1844: movl %ebx, -8(%ebp)
1845: movl %esi, -4(%ebp)
1846: call GetReg
1847: movl %eax, %esi
1848: subl $2, %esi
1849: leal 2(%esi), %eax
1850: movl %eax, (%esp)
1851: call MemReadLong
1852: movl %eax, %ebx
1853: leal 6(%esi), %eax
1854: movl %eax, (%esp)
1855: call MemReadLong
1856: movl %ebx, 8(%esp)
1857: movl STRam, %edx
1858: movl $14, %ecx
1859: movl %ecx, 4(%esp)
1860: addl %edx, %eax
1861: movl %eax, (%esp)
1862: call memset
1863: movl -8(%ebp), %ebx
1864: movl -4(%ebp), %esi
1865: movl %ebp, %esp
1866: popl %ebp
1867: ret
1868: .size Call_MemsetBlue, .-Call_MemsetBlue
1869: .p2align 4,,15
1870: .globl Call_Memcpy
1871: .type Call_Memcpy, @function
1872: Call_Memcpy:
1873: pushl %ebp
1874: movl %esp, %ebp
1875: subl $24, %esp
1876: movl $15, (%esp)
1877: movl %ebx, -12(%ebp)
1878: movl %esi, -8(%ebp)
1879: movl %edi, -4(%ebp)
1880: call GetReg
1881: movl %eax, %esi
1882: subl $2, %esi
1883: leal 2(%esi), %eax
1884: movl %eax, (%esp)
1885: call MemReadLong
1886: movl %eax, %edi
1887: leal 6(%esi), %eax
1888: movl %eax, (%esp)
1889: call MemReadLong
1890: movl %eax, %ebx
1891: leal 10(%esi), %eax
1892: movl %eax, (%esp)
1893: call MemReadLong
1894: movl %eax, 8(%esp)
1895: movl STRam, %edx
1896: leal (%edi,%edx), %ecx
1897: movl %ecx, (%esp)
1898: addl %ebx, %edx
1899: movl %edx, 4(%esp)
1900: call memcpy
1901: movl -12(%ebp), %ebx
1902: movl -8(%ebp), %esi
1903: movl -4(%ebp), %edi
1904: movl %ebp, %esp
1905: popl %ebp
1906: ret
1907: .size Call_Memcpy, .-Call_Memcpy
1908: .section .rodata
1909: .align 32
1910: .type mouse_bmp, @object
1911: .size mouse_bmp, 256
1912: mouse_bmp:
1913: .byte 0
1914: .byte 0
1915: .byte -1
1916: .byte -1
1917: .byte -1
1918: .byte -1
1919: .byte -1
1920: .byte -1
1921: .byte -1
1922: .byte -1
1923: .byte -1
1924: .byte -1
1925: .byte -1
1926: .byte -1
1927: .byte -1
1928: .byte -1
1929: .byte 0
1930: .byte 15
1931: .byte 0
1932: .byte -1
1933: .byte -1
1934: .byte -1
1935: .byte -1
1936: .byte -1
1937: .byte -1
1938: .byte -1
1939: .byte -1
1940: .byte -1
1941: .byte -1
1942: .byte -1
1943: .byte -1
1944: .byte -1
1945: .byte 0
1946: .byte 15
1947: .byte 15
1948: .byte 0
1949: .byte -1
1950: .byte -1
1951: .byte -1
1952: .byte -1
1953: .byte -1
1954: .byte -1
1955: .byte -1
1956: .byte -1
1957: .byte -1
1958: .byte -1
1959: .byte -1
1960: .byte -1
1961: .byte 0
1962: .byte 15
1963: .byte 15
1964: .byte 15
1965: .byte 0
1966: .byte -1
1967: .byte -1
1968: .byte -1
1969: .byte -1
1970: .byte -1
1971: .byte -1
1972: .byte -1
1973: .byte -1
1974: .byte -1
1975: .byte -1
1976: .byte -1
1977: .byte 0
1978: .byte 15
1979: .byte 15
1980: .byte 15
1981: .byte 15
1982: .byte 0
1983: .byte -1
1984: .byte -1
1985: .byte -1
1986: .byte -1
1987: .byte -1
1988: .byte -1
1989: .byte -1
1990: .byte -1
1991: .byte -1
1992: .byte -1
1993: .byte 0
1994: .byte 15
1995: .byte 15
1996: .byte 15
1997: .byte 15
1998: .byte 15
1999: .byte 0
2000: .byte -1
2001: .byte -1
2002: .byte -1
2003: .byte -1
2004: .byte -1
2005: .byte -1
2006: .byte -1
2007: .byte -1
2008: .byte -1
2009: .byte 0
2010: .byte 15
2011: .byte 15
2012: .byte 15
2013: .byte 15
2014: .byte 0
2015: .byte -1
2016: .byte -1
2017: .byte -1
2018: .byte -1
2019: .byte -1
2020: .byte -1
2021: .byte -1
2022: .byte -1
2023: .byte -1
2024: .byte -1
2025: .byte 0
2026: .byte 15
2027: .byte 15
2028: .byte 15
2029: .byte 15
2030: .byte 0
2031: .byte -1
2032: .byte -1
2033: .byte -1
2034: .byte -1
2035: .byte -1
2036: .byte -1
2037: .byte -1
2038: .byte -1
2039: .byte -1
2040: .byte -1
2041: .byte 0
2042: .byte 15
2043: .byte 0
2044: .byte 15
2045: .byte 15
2046: .byte 15
2047: .byte 0
2048: .byte -1
2049: .byte -1
2050: .byte -1
2051: .byte -1
2052: .byte -1
2053: .byte -1
2054: .byte -1
2055: .byte -1
2056: .byte -1
2057: .byte 0
2058: .byte 0
2059: .byte -1
2060: .byte 0
2061: .byte 15
2062: .byte 15
2063: .byte 0
2064: .byte -1
2065: .byte -1
2066: .byte -1
2067: .byte -1
2068: .byte -1
2069: .byte -1
2070: .byte -1
2071: .byte -1
2072: .byte -1
2073: .byte -1
2074: .byte -1
2075: .byte -1
2076: .byte 0
2077: .byte 15
2078: .byte 15
2079: .byte 15
2080: .byte 0
2081: .byte -1
2082: .byte -1
2083: .byte -1
2084: .byte -1
2085: .byte -1
2086: .byte -1
2087: .byte -1
2088: .byte -1
2089: .byte -1
2090: .byte -1
2091: .byte -1
2092: .byte -1
2093: .byte 0
2094: .byte 15
2095: .byte 15
2096: .byte 0
2097: .byte -1
2098: .byte -1
2099: .byte -1
2100: .byte -1
2101: .byte -1
2102: .byte -1
2103: .byte -1
2104: .byte -1
2105: .byte -1
2106: .byte -1
2107: .byte -1
2108: .byte -1
2109: .byte 0
2110: .byte 15
2111: .byte 15
2112: .byte 15
2113: .byte 0
2114: .byte -1
2115: .byte -1
2116: .byte -1
2117: .byte -1
2118: .byte -1
2119: .byte -1
2120: .byte -1
2121: .byte -1
2122: .byte -1
2123: .byte -1
2124: .byte -1
2125: .byte -1
2126: .byte 0
2127: .byte 15
2128: .byte 0
2129: .byte -1
2130: .byte -1
2131: .byte -1
2132: .byte -1
2133: .byte -1
2134: .byte -1
2135: .byte -1
2136: .byte -1
2137: .byte -1
2138: .byte -1
2139: .byte -1
2140: .byte -1
2141: .byte -1
2142: .byte -1
2143: .byte 0
2144: .byte -1
2145: .byte -1
2146: .byte -1
2147: .byte -1
2148: .byte -1
2149: .byte -1
2150: .byte -1
2151: .byte -1
2152: .byte -1
2153: .byte -1
2154: .byte -1
2155: .byte -1
2156: .byte -1
2157: .byte -1
2158: .byte -1
2159: .byte -1
2160: .byte -1
2161: .byte -1
2162: .byte -1
2163: .byte -1
2164: .byte -1
2165: .byte -1
2166: .byte -1
2167: .byte -1
2168: .byte -1
2169: .text
2170: .p2align 4,,15
2171: .globl Call_BlitCursor
2172: .type Call_BlitCursor, @function
2173: Call_BlitCursor:
2174: pushl %ebp
2175: movl %esp, %ebp
2176: pushl %edi
2177: pushl %esi
2178: movl $mouse_bmp, %esi
2179: pushl %ebx
2180: subl $28, %esp
2181: movl $15, (%esp)
2182: call GetReg
2183: movl %eax, %ebx
2184: subl $2, %ebx
2185: leal 2(%ebx), %eax
2186: movl %eax, (%esp)
2187: call MemReadLong
2188: movl %eax, %edi
2189: leal 6(%ebx), %eax
2190: movl %eax, (%esp)
2191: call MemReadLong
2192: movl %eax, -20(%ebp)
2193: leal 10(%ebx), %eax
2194: movl $under_mouse, %ebx
2195: movl %eax, (%esp)
2196: call MemReadLong
2197: movl $0, -16(%ebp)
2198: movl STRam, %ecx
2199: addl %ecx, %eax
2200: movl -20(%ebp), %ecx
2201: leal (%ecx,%ecx,4), %edx
2202: sall $6, %edx
2203: addl %edx, %eax
2204: addl %edi, %eax
2205: movl %eax, -24(%ebp)
2206: .L304:
2207: movl -16(%ebp), %eax
2208: movl -20(%ebp), %edx
2209: addl %edx, %eax
2210: cmpl $200, %eax
2211: jg .L293
2212: movl -24(%ebp), %edx
2213: xorl %ecx, %ecx
2214: leal 320(%edx), %eax
2215: movl %eax, -24(%ebp)
2216: .p2align 4,,15
2217: .L303:
2218: leal (%edi,%ecx), %eax
2219: cmpl $319, %eax
2220: jle .L308
2221: .L299:
2222: incl %ecx
2223: incl %edx
2224: incl %esi
2225: incl %ebx
2226: cmpl $15, %ecx
2227: jle .L303
2228: incl -16(%ebp)
2229: cmpl $15, -16(%ebp)
2230: jle .L304
2231: .L293:
2232: addl $28, %esp
2233: popl %ebx
2234: popl %esi
2235: popl %edi
2236: popl %ebp
2237: ret
2238: .p2align 4,,7
2239: .L308:
2240: movzbl (%edx), %eax
2241: movb %al, (%ebx)
2242: movzbl (%esi), %eax
2243: cmpb $-1, %al
2244: je .L299
2245: movb %al, (%edx)
2246: jmp .L299
2247: .size Call_BlitCursor, .-Call_BlitCursor
2248: .p2align 4,,15
2249: .globl Call_RestoreUnderCursor
2250: .type Call_RestoreUnderCursor, @function
2251: Call_RestoreUnderCursor:
2252: pushl %ebp
2253: movl %esp, %ebp
2254: pushl %edi
2255: xorl %edi, %edi
2256: pushl %esi
2257: pushl %ebx
2258: subl $12, %esp
2259: movl $15, (%esp)
2260: call GetReg
2261: movl %eax, %ebx
2262: subl $2, %ebx
2263: leal 2(%ebx), %eax
2264: movl %eax, (%esp)
2265: call MemReadLong
2266: movl %eax, %esi
2267: leal 6(%ebx), %eax
2268: movl %eax, (%esp)
2269: call MemReadLong
2270: movl %eax, -16(%ebp)
2271: leal 10(%ebx), %eax
2272: movl %eax, (%esp)
2273: call MemReadLong
2274: movl -16(%ebp), %ecx
2275: movl STRam, %ebx
2276: leal (%ecx,%ecx,4), %edx
2277: addl %ebx, %eax
2278: sall $6, %edx
2279: addl %edx, %eax
2280: addl %esi, %eax
2281: movl $under_mouse, %ebx
2282: movl %eax, -20(%ebp)
2283: .L322:
2284: movl -16(%ebp), %edx
2285: leal (%edx,%edi), %eax
2286: cmpl $200, %eax
2287: jg .L311
2288: movl -20(%ebp), %edx
2289: leal 320(%edx), %ecx
2290: movl %ecx, -20(%ebp)
2291: xorl %ecx, %ecx
2292: .p2align 4,,15
2293: .L321:
2294: leal (%esi,%ecx), %eax
2295: cmpl $319, %eax
2296: jle .L326
2297: .L317:
2298: incl %ecx
2299: incl %edx
2300: incl %ebx
2301: cmpl $15, %ecx
2302: jle .L321
2303: incl %edi
2304: cmpl $15, %edi
2305: jle .L322
2306: .L311:
2307: addl $12, %esp
2308: popl %ebx
2309: popl %esi
2310: popl %edi
2311: popl %ebp
2312: ret
2313: .p2align 4,,7
2314: .L326:
2315: movzbl (%ebx), %eax
2316: cmpb $-1, %al
2317: je .L317
2318: movb %al, (%edx)
2319: jmp .L317
2320: .size Call_RestoreUnderCursor, .-Call_RestoreUnderCursor
2321: .p2align 4,,15
2322: .globl Call_PutPix
2323: .type Call_PutPix, @function
2324: Call_PutPix:
2325: pushl %ebp
2326: movl %esp, %ebp
2327: subl $24, %esp
2328: movl $15, (%esp)
2329: movl %ebx, -8(%ebp)
2330: movl %esi, -4(%ebp)
2331: call GetReg
2332: movl %eax, (%esp)
2333: call MemReadWord
2334: movl $4, (%esp)
2335: movswl %ax,%ebx
2336: sarl $2, %ebx
2337: call GetReg
2338: movl $11, (%esp)
2339: movzwl %ax, %esi
2340: call GetReg
2341: testl $1048576, %eax
2342: je .L328
2343: leal -1048576(%eax,%eax), %eax
2344: .L329:
2345: movl STRam, %edx
2346: addl %edx, %eax
2347: movb %bl, (%esi,%eax)
2348: movl -8(%ebp), %ebx
2349: movl -4(%ebp), %esi
2350: movl %ebp, %esp
2351: popl %ebp
2352: ret
2353: .p2align 4,,7
2354: .L328:
2355: leal -983040(%eax,%eax), %eax
2356: jmp .L329
2357: .size Call_PutPix, .-Call_PutPix
2358: .p2align 4,,15
2359: .globl Call_FillLine
2360: .type Call_FillLine, @function
2361: Call_FillLine:
2362: pushl %ebp
2363: movl %esp, %ebp
2364: pushl %ebx
2365: subl $4, %esp
2366: movl $15, (%esp)
2367: call GetReg
2368: movl %eax, (%esp)
2369: call MemReadWord
2370: movl $4, (%esp)
2371: movswl %ax,%ebx
2372: sarl $2, %ebx
2373: call GetReg
2374: movl $5, (%esp)
2375: call GetReg
2376: movl $11, (%esp)
2377: call GetReg
2378: testl $1048576, %eax
2379: je .L331
2380: leal -1048576(%eax,%eax), %eax
2381: .L332:
2382: movl STRam, %edx
2383: addl %edx, %eax
2384: movl $319, %edx
2385: .p2align 4,,15
2386: .L336:
2387: movb %bl, (%eax)
2388: decl %edx
2389: incl %eax
2390: cmpl $-1, %edx
2391: jne .L336
2392: popl %ecx
2393: popl %ebx
2394: popl %ebp
2395: ret
2396: .L331:
2397: leal -983040(%eax,%eax), %eax
2398: jmp .L332
2399: .size Call_FillLine, .-Call_FillLine
2400: .p2align 4,,15
2401: .globl Call_BackHLine
2402: .type Call_BackHLine, @function
2403: Call_BackHLine:
2404: pushl %ebp
2405: movl %esp, %ebp
2406: pushl %edi
2407: pushl %esi
2408: pushl %ebx
2409: subl $12, %esp
2410: movl $15, (%esp)
2411: call GetReg
2412: movl %eax, (%esp)
2413: call MemReadWord
2414: movl $11, (%esp)
2415: movswl %ax,%edi
2416: sarl $2, %edi
2417: call GetReg
2418: movl $7, (%esp)
2419: movl %eax, %esi
2420: call GetReg
2421: testl $1048576, %esi
2422: movzwl %ax, %ebx
2423: je .L340
2424: leal -1048576(%esi,%esi), %esi
2425: .L341:
2426: movl STRam, %edx
2427: movl $15, %ecx
2428: addl %esi, %edx
2429: .p2align 4,,15
2430: .L347:
2431: movl %ebx, %eax
2432: sarl %cl, %eax
2433: testb $1, %al
2434: je .L346
2435: cmpb $0, (%edx)
2436: jne .L346
2437: movl %edi, %eax
2438: movb %al, (%edx)
2439: .p2align 4,,15
2440: .L346:
2441: incl %edx
2442: decl %ecx
2443: jns .L347
2444: addl $12, %esp
2445: popl %ebx
2446: popl %esi
2447: popl %edi
2448: popl %ebp
2449: ret
2450: .L340:
2451: leal -983040(%esi,%esi), %esi
2452: jmp .L341
2453: .size Call_BackHLine, .-Call_BackHLine
2454: .p2align 4,,15
2455: .globl Call_OldHLine
2456: .type Call_OldHLine, @function
2457: Call_OldHLine:
2458: pushl %ebp
2459: movl %esp, %ebp
2460: pushl %edi
2461: pushl %esi
2462: pushl %ebx
2463: subl $12, %esp
2464: movl $15, (%esp)
2465: call GetReg
2466: movl %eax, (%esp)
2467: call MemReadWord
2468: movl $4, (%esp)
2469: movswl %ax,%esi
2470: sarl $2, %esi
2471: call GetReg
2472: movl $5, (%esp)
2473: movzwl %ax, %edi
2474: call GetReg
2475: movl $11, (%esp)
2476: movzwl %ax, %ebx
2477: call GetReg
2478: testl $1048576, %eax
2479: leal -1048576(%eax,%eax), %edx
2480: jne .L352
2481: leal -983040(%eax,%eax), %edx
2482: .L352:
2483: movl %ebx, %eax
2484: movl STRam, %ecx
2485: shrl $31, %eax
2486: addl %eax, %ebx
2487: sarl %ebx
2488: addl %ecx, %edx
2489: decl %ebx
2490: leal (%edi,%edx), %eax
2491: cmpl $-1, %ebx
2492: je .L358
2493: .p2align 4,,15
2494: .L356:
2495: movl %esi, %edx
2496: decl %ebx
2497: movb %dl, (%eax)
2498: incl %eax
2499: cmpl $-1, %ebx
2500: jne .L356
2501: .L358:
2502: addl $12, %esp
2503: popl %ebx
2504: popl %esi
2505: popl %edi
2506: popl %ebp
2507: ret
2508: .size Call_OldHLine, .-Call_OldHLine
2509: .p2align 4,,15
2510: .globl Call_HLine
2511: .type Call_HLine, @function
2512: Call_HLine:
2513: pushl %ebp
2514: movl %esp, %ebp
2515: pushl %edi
2516: pushl %esi
2517: pushl %ebx
2518: subl $12, %esp
2519: movl $1, (%esp)
2520: call GetReg
2521: movl $4, (%esp)
2522: movzwl %ax,%esi
2523: sarl $2, %esi
2524: call GetReg
2525: movl $5, (%esp)
2526: movzwl %ax,%edi
2527: call GetReg
2528: movl $11, (%esp)
2529: movzwl %ax,%ebx
2530: decl %ebx
2531: call GetReg
2532: movl STRam, %edx
2533: addl %edx, %eax
2534: addl %edi, %eax
2535: cmpl $-1, %ebx
2536: je .L365
2537: .p2align 4,,15
2538: .L363:
2539: movl %esi, %edx
2540: decl %ebx
2541: movb %dl, (%eax)
2542: incl %eax
2543: cmpl $-1, %ebx
2544: jne .L363
2545: .L365:
2546: addl $12, %esp
2547: popl %ebx
2548: popl %esi
2549: popl %edi
2550: popl %ebp
2551: ret
2552: .size Call_HLine, .-Call_HLine
2553: .p2align 4,,15
2554: .globl Call_BlitBmp
2555: .type Call_BlitBmp, @function
2556: Call_BlitBmp:
2557: pushl %ebp
2558: movl %esp, %ebp
2559: pushl %edi
2560: pushl %esi
2561: pushl %ebx
2562: subl $60, %esp
2563: movl $15, (%esp)
2564: call GetReg
2565: movl %eax, %esi
2566: subl $2, %esi
2567: leal 2(%esi), %eax
2568: movl %eax, (%esp)
2569: call MemReadWord
2570: cwtl
2571: movl %eax, -16(%ebp)
2572: leal 4(%esi), %eax
2573: movl %eax, (%esp)
2574: call MemReadWord
2575: cwtl
2576: movl %eax, -20(%ebp)
2577: leal 6(%esi), %eax
2578: movl %eax, (%esp)
2579: call MemReadWord
2580: cwtl
2581: movl %eax, -24(%ebp)
2582: leal 8(%esi), %eax
2583: movl %eax, (%esp)
2584: call MemReadWord
2585: movswl %ax,%edi
2586: leal 10(%esi), %eax
2587: movl %eax, (%esp)
2588: call MemReadLong
2589: movl %eax, %ebx
2590: leal 14(%esi), %eax
2591: movl %eax, (%esp)
2592: call MemReadLong
2593: movl STRam, %edx
2594: movl -24(%ebp), %esi
2595: leal 4(%ebx,%edx), %ebx
2596: movl %ebx, -28(%ebp)
2597: addl %eax, %edx
2598: movl -24(%ebp), %ebx
2599: leal (%edi,%edi,4), %eax
2600: sall $6, %eax
2601: addl %eax, %edx
2602: addl %esi, %edx
2603: testl %ebx, %ebx
2604: movl %edx, -32(%ebp)
2605: js .L366
2606: testl %edi, %edi
2607: js .L366
2608: cmpl $200, -20(%ebp)
2609: jg .L366
2610: cmpl $320, -16(%ebp)
2611: jg .L366
2612: movl -20(%ebp), %eax
2613: movl -16(%ebp), %ecx
2614: imull %ecx, %eax
2615: addl %eax, %eax
2616: movl %eax, -56(%ebp)
2617: movl -20(%ebp), %eax
2618: decl %eax
2619: movl %eax, -40(%ebp)
2620: incl %eax
2621: je .L366
2622: .L388:
2623: movl -32(%ebp), %esi
2624: movl -16(%ebp), %eax
2625: leal 320(%esi), %edx
2626: movl %edx, -32(%ebp)
2627: testl %eax, %eax
2628: movl %eax, -36(%ebp)
2629: je .L391
2630: movl -56(%ebp), %edx
2631: leal (%edx,%edx,2), %edx
2632: movl %edx, -60(%ebp)
2633: .L387:
2634: movl -28(%ebp), %edx
2635: xorl %ebx, %ebx
2636: movzwl (%edx), %eax
2637: #APP
2638: xchgb %al,%ah
2639: #NO_APP
2640: cwtl
2641: movl %eax, -44(%ebp)
2642: movl -56(%ebp), %eax
2643: addl %eax, %edx
2644: movzwl (%edx), %eax
2645: #APP
2646: xchgb %al,%ah
2647: #NO_APP
2648: movl %edx, -28(%ebp)
2649: cwtl
2650: movl %eax, -48(%ebp)
2651: movl -56(%ebp), %eax
2652: addl %eax, %edx
2653: movzwl (%edx), %eax
2654: #APP
2655: xchgb %al,%ah
2656: #NO_APP
2657: movl %edx, -28(%ebp)
2658: cwtl
2659: movl %eax, -52(%ebp)
2660: movl -56(%ebp), %eax
2661: addl %eax, %edx
2662: movzwl (%edx), %eax
2663: movl %edx, -28(%ebp)
2664: #APP
2665: xchgb %al,%ah
2666: #NO_APP
2667: movswl %ax,%edi
2668: .p2align 4,,15
2669: .L386:
2670: movl -44(%ebp), %eax
2671: movl $15, %ecx
2672: subl %ebx, %ecx
2673: incl %ebx
2674: sarl %cl, %eax
2675: movb %al, %dl
2676: movl -48(%ebp), %eax
2677: andb $1, %dl
2678: sarl %cl, %eax
2679: andl $1, %eax
2680: addl %eax, %eax
2681: orb %al, %dl
2682: movl -52(%ebp), %eax
2683: sarl %cl, %eax
2684: andl $1, %eax
2685: sall $2, %eax
2686: orb %al, %dl
2687: movl %edi, %eax
2688: sarl %cl, %eax
2689: andl $1, %eax
2690: sall $3, %eax
2691: orb %al, %dl
2692: movb %dl, (%esi)
2693: incl %esi
2694: cmpl $15, %ebx
2695: jle .L386
2696: movl -60(%ebp), %edx
2697: subl %edx, -28(%ebp)
2698: addl $2, -28(%ebp)
2699: decl -36(%ebp)
2700: jne .L387
2701: .L391:
2702: decl -40(%ebp)
2703: cmpl $-1, -40(%ebp)
2704: jne .L388
2705: .L366:
2706: addl $60, %esp
2707: popl %ebx
2708: popl %esi
2709: popl %edi
2710: popl %ebp
2711: ret
2712: .size Call_BlitBmp, .-Call_BlitBmp
2713: .p2align 4,,15
2714: .globl Call_DrawStrShadowed
2715: .type Call_DrawStrShadowed, @function
2716: Call_DrawStrShadowed:
2717: pushl %ebp
2718: movl %esp, %ebp
2719: subl $40, %esp
2720: movl $8, (%esp)
2721: movl %ebx, -12(%ebp)
2722: movl %esi, -8(%ebp)
2723: movl %edi, -4(%ebp)
2724: call GetReg
2725: movl $0, (%esp)
2726: movl STRam, %ecx
2727: movl %eax, %ebx
2728: addl %ecx, %ebx
2729: call GetReg
2730: movl $2, (%esp)
2731: movl %eax, %edi
2732: call GetReg
2733: movl $1, (%esp)
2734: movl %eax, %esi
2735: call GetReg
2736: movl %eax, (%esp)
2737: movl $1, %edx
2738: movl %edx, 16(%esp)
2739: movl %ebx, 12(%esp)
2740: movl %edi, 8(%esp)
2741: movl %esi, 4(%esp)
2742: call DrawStr
2743: movl %eax, 4(%esp)
2744: movl $1, (%esp)
2745: call SetReg
2746: movl -12(%ebp), %ebx
2747: movl -8(%ebp), %esi
2748: movl -4(%ebp), %edi
2749: movl %ebp, %esp
2750: popl %ebp
2751: ret
2752: .size Call_DrawStrShadowed, .-Call_DrawStrShadowed
2753: .p2align 4,,15
2754: .globl Call_DrawStr
2755: .type Call_DrawStr, @function
2756: Call_DrawStr:
2757: pushl %ebp
2758: movl %esp, %ebp
2759: subl $40, %esp
2760: movl $8, (%esp)
2761: movl %ebx, -12(%ebp)
2762: movl %esi, -8(%ebp)
2763: movl %edi, -4(%ebp)
2764: call GetReg
2765: movl $0, (%esp)
2766: movl STRam, %ecx
2767: movl %eax, %ebx
2768: addl %ecx, %ebx
2769: call GetReg
2770: movl $2, (%esp)
2771: movl %eax, %edi
2772: call GetReg
2773: movl $1, (%esp)
2774: movl %eax, %esi
2775: call GetReg
2776: movl %eax, (%esp)
2777: xorl %edx, %edx
2778: movl %edx, 16(%esp)
2779: movl %ebx, 12(%esp)
2780: movl %edi, 8(%esp)
2781: movl %esi, 4(%esp)
2782: call DrawStr
2783: movl %eax, 4(%esp)
2784: movl $1, (%esp)
2785: call SetReg
2786: movl -12(%ebp), %ebx
2787: movl -8(%ebp), %esi
2788: movl -4(%ebp), %edi
2789: movl %ebp, %esp
2790: popl %ebp
2791: ret
2792: .size Call_DrawStr, .-Call_DrawStr
2793: .p2align 4,,15
2794: .globl Call_SetMainPalette
2795: .type Call_SetMainPalette, @function
2796: Call_SetMainPalette:
2797: pushl %ebp
2798: movl %esp, %ebp
2799: pushl %esi
2800: xorl %esi, %esi
2801: pushl %ebx
2802: subl $16, %esp
2803: movl $15, (%esp)
2804: call GetReg
2805: movl %eax, (%esp)
2806: call MemReadLong
2807: movl %eax, %ebx
2808: .p2align 4,,15
2809: .L401:
2810: movl %ebx, (%esp)
2811: addl $2, %ebx
2812: call MemReadWord
2813: movw %ax, MainPalette(%esi,%esi)
2814: incl %esi
2815: cmpl $15, %esi
2816: jle .L401
2817: addl $16, %esp
2818: popl %ebx
2819: popl %esi
2820: popl %ebp
2821: ret
2822: .size Call_SetMainPalette, .-Call_SetMainPalette
2823: .p2align 4,,15
2824: .globl Call_SetCtrlPalette
2825: .type Call_SetCtrlPalette, @function
2826: Call_SetCtrlPalette:
2827: pushl %ebp
2828: movl %esp, %ebp
2829: pushl %esi
2830: xorl %esi, %esi
2831: pushl %ebx
2832: subl $16, %esp
2833: movl $15, (%esp)
2834: call GetReg
2835: movl %eax, (%esp)
2836: call MemReadLong
2837: movl %eax, %ebx
2838: .p2align 4,,15
2839: .L409:
2840: movl %ebx, (%esp)
2841: addl $2, %ebx
2842: call MemReadWord
2843: movw %ax, CtrlPalette(%esi,%esi)
2844: incl %esi
2845: cmpl $15, %esi
2846: jle .L409
2847: addl $16, %esp
2848: popl %ebx
2849: popl %esi
2850: popl %ebp
2851: ret
2852: .size Call_SetCtrlPalette, .-Call_SetCtrlPalette
2853: .p2align 4,,15
2854: .globl Call_InformScreens
2855: .type Call_InformScreens, @function
2856: Call_InformScreens:
2857: pushl %ebp
2858: movl %esp, %ebp
2859: subl $8, %esp
2860: movl $15, (%esp)
2861: movl %ebx, -4(%ebp)
2862: call GetReg
2863: movl %eax, %ebx
2864: subl $2, %ebx
2865: leal 2(%ebx), %eax
2866: movl %eax, (%esp)
2867: call MemReadLong
2868: movl %eax, physcreen2
2869: leal 6(%ebx), %eax
2870: movl %eax, (%esp)
2871: call MemReadLong
2872: movl %eax, logscreen2
2873: leal 10(%ebx), %eax
2874: movl %eax, (%esp)
2875: call MemReadLong
2876: movl %eax, physcreen
2877: leal 14(%ebx), %eax
2878: movl %eax, (%esp)
2879: call MemReadLong
2880: movl %eax, logscreen
2881: movl -4(%ebp), %ebx
2882: movl %ebp, %esp
2883: popl %ebp
2884: ret
2885: .size Call_InformScreens, .-Call_InformScreens
2886: .p2align 4,,15
2887: .globl Call_SetScreenBase
2888: .type Call_SetScreenBase, @function
2889: Call_SetScreenBase:
2890: pushl %ebp
2891: movl %esp, %ebp
2892: pushl %ebx
2893: subl $4, %esp
2894: movl $15, (%esp)
2895: call GetReg
2896: movl %eax, (%esp)
2897: call MemReadLong
2898: movl %eax, VideoBase
2899: movl STRam, %edx
2900: movl len_working_ext_pal, %ecx
2901: addl %edx, %eax
2902: xorl %edx, %edx
2903: cmpl %ecx, %edx
2904: movl %eax, VideoRaster
2905: jge .L420
2906: movl $MainPalette, %ebx
2907: .p2align 4,,15
2908: .L418:
2909: movzwl working_ext_pal(%edx,%edx), %eax
2910: movw %ax, 32(%ebx,%edx,2)
2911: incl %edx
2912: cmpl %ecx, %edx
2913: jl .L418
2914: .L420:
2915: leal 16(%ecx), %eax
2916: movl %eax, len_main_palette
2917: popl %ebx
2918: popl %ebx
2919: popl %ebp
2920: ret
2921: .size Call_SetScreenBase, .-Call_SetScreenBase
2922: .p2align 4,,15
2923: .globl Call_MakeExtPalette
2924: .type Call_MakeExtPalette, @function
2925: Call_MakeExtPalette:
2926: pushl %ebp
2927: movl %esp, %ebp
2928: pushl %edi
2929: pushl %esi
2930: xorl %esi, %esi
2931: pushl %ebx
2932: subl $12, %esp
2933: movl $15, (%esp)
2934: call GetReg
2935: movl %eax, (%esp)
2936: call MemReadLong
2937: movl %eax, (%esp)
2938: movl %eax, %ebx
2939: addl $2, %ebx
2940: call MemReadWord
2941: movswl %ax,%edi
2942: sarl $2, %edi
2943: cmpl %edi, %esi
2944: movl %edi, len_working_ext_pal
2945: jl .L426
2946: .L428:
2947: addl $12, %esp
2948: popl %ebx
2949: popl %esi
2950: popl %edi
2951: popl %ebp
2952: ret
2953: .p2align 4,,7
2954: .L426:
2955: movl %ebx, (%esp)
2956: addl $2, %ebx
2957: call MemReadWord
2958: movw %ax, working_ext_pal(%esi,%esi)
2959: incl %esi
2960: movl %ebx, (%esp)
2961: call MemReadWord
2962: movl %ebx, (%esp)
2963: cwtl
2964: addl $64, %eax
2965: movl %eax, 4(%esp)
2966: addl $2, %ebx
2967: call MemWriteWord
2968: cmpl %edi, %esi
2969: jl .L426
2970: jmp .L428
2971: .size Call_MakeExtPalette, .-Call_MakeExtPalette
2972: .section .rodata.str1.1
2973: .LC11:
2974: .string "D: "
2975: .LC12:
2976: .string "$%x "
2977: .LC13:
2978: .string "A: "
2979: .text
2980: .p2align 4,,15
2981: .globl Call_DumpRegs
2982: .type Call_DumpRegs, @function
2983: Call_DumpRegs:
2984: pushl %ebp
2985: movl %esp, %ebp
2986: pushl %ebx
2987: subl $20, %esp
2988: xorl %ebx, %ebx
2989: movl $.LC11, (%esp)
2990: call printf
2991: .p2align 4,,15
2992: .L434:
2993: movl %ebx, (%esp)
2994: incl %ebx
2995: call GetReg
2996: movl %eax, 4(%esp)
2997: movl $.LC12, (%esp)
2998: call printf
2999: cmpl $7, %ebx
3000: jle .L434
3001: movl $10, (%esp)
3002: xorl %ebx, %ebx
3003: call putchar
3004: movl $.LC13, (%esp)
3005: call printf
3006: .p2align 4,,15
3007: .L439:
3008: leal 8(%ebx), %eax
3009: incl %ebx
3010: movl %eax, (%esp)
3011: call GetReg
3012: movl %eax, 4(%esp)
3013: movl $.LC12, (%esp)
3014: call printf
3015: cmpl $7, %ebx
3016: jle .L439
3017: movl $10, (%esp)
3018: call putchar
3019: addl $20, %esp
3020: popl %ebx
3021: popl %ebp
3022: ret
3023: .size Call_DumpRegs, .-Call_DumpRegs
3024: .p2align 4,,15
3025: .globl Call_NotifyOfScrFlip
3026: .type Call_NotifyOfScrFlip, @function
3027: Call_NotifyOfScrFlip:
3028: pushl %ebp
3029: movl $1, %ecx
3030: movl %esp, %ebp
3031: popl %ebp
3032: movl %ecx, bScreenContentsChanged
3033: ret
3034: .size Call_NotifyOfScrFlip, .-Call_NotifyOfScrFlip
3035: .p2align 4,,15
3036: .globl Call_NotifyMousePos
3037: .type Call_NotifyMousePos, @function
3038: Call_NotifyMousePos:
3039: pushl %ebp
3040: movl %esp, %ebp
3041: popl %ebp
3042: ret
3043: .size Call_NotifyMousePos, .-Call_NotifyMousePos
3044: .p2align 4,,15
3045: .globl Call_DrawQuad
3046: .type Call_DrawQuad, @function
3047: Call_DrawQuad:
3048: pushl %ebp
3049: movl %esp, %ebp
3050: pushl %esi
3051: pushl %ebx
3052: subl $48, %esp
3053: movl $0, (%esp)
3054: call GetReg
3055: pushl %eax
3056: fildl (%esp)
3057: addl $4, %esp
3058: movl $1, (%esp)
3059: fstps -40(%ebp)
3060: call GetReg
3061: pushl %eax
3062: fildl (%esp)
3063: addl $4, %esp
3064: movl $2, (%esp)
3065: fstps -36(%ebp)
3066: call GetReg
3067: pushl %eax
3068: fildl (%esp)
3069: addl $4, %esp
3070: movl $3, (%esp)
3071: fstps -32(%ebp)
3072: call GetReg
3073: pushl %eax
3074: fildl (%esp)
3075: addl $4, %esp
3076: movl $4, (%esp)
3077: fstps -28(%ebp)
3078: call GetReg
3079: pushl %eax
3080: fildl (%esp)
3081: addl $4, %esp
3082: movl $5, (%esp)
3083: fstps -24(%ebp)
3084: call GetReg
3085: pushl %eax
3086: fildl (%esp)
3087: addl $4, %esp
3088: movl $6, (%esp)
3089: fstps -20(%ebp)
3090: call GetReg
3091: pushl %eax
3092: fildl (%esp)
3093: addl $4, %esp
3094: movl $7, (%esp)
3095: fstps -16(%ebp)
3096: call GetReg
3097: pushl %eax
3098: xorl %edx, %edx
3099: fld1
3100: fildl (%esp)
3101: addl $4, %esp
3102: fstps -12(%ebp)
3103: .p2align 4,,15
3104: .L462:
3105: xorl %ecx, %ecx
3106: movl $-1, %ebx
3107: xorl %esi, %esi
3108: .p2align 4,,15
3109: .L460:
3110: cmpl %esi, %edx
3111: je .L453
3112: flds -36(%ebp,%edx,8)
3113: flds -36(%ebp,%esi,8)
3114: fxch %st(1)
3115: fucom %st(1)
3116: fnstsw %ax
3117: sahf
3118: jbe .L456
3119: incl %ecx
3120: .L456:
3121: fucompp
3122: fnstsw %ax
3123: sahf
3124: jne .L453
3125: jp .L453
3126: movl %esi, %ebx
3127: .p2align 4,,15
3128: .L453:
3129: incl %esi
3130: cmpl $3, %esi
3131: jle .L460
3132: cmpl $2, %ecx
3133: je .L467
3134: .L449:
3135: incl %edx
3136: cmpl $3, %edx
3137: jle .L462
3138: fstp %st(0)
3139: .L448:
3140: movl $8, (%esp)
3141: call GetReg
3142: testl %eax, %eax
3143: js .L468
3144: .L463:
3145: sarl $2, %eax
3146: movl $4, %ebx
3147: movl %eax, 8(%esp)
3148: leal -40(%ebp), %eax
3149: movl %ebx, 4(%esp)
3150: movl %eax, (%esp)
3151: call DrawPoly
3152: addl $48, %esp
3153: popl %ebx
3154: popl %esi
3155: popl %ebp
3156: ret
3157: .L468:
3158: addl $3, %eax
3159: jmp .L463
3160: .L467:
3161: cmpl $-1, %ebx
3162: je .L449
3163: flds -36(%ebp,%ebx,8)
3164: fsub %st(1), %st
3165: fstps -36(%ebp,%ebx,8)
3166: flds -36(%ebp,%edx,8)
3167: fsubp %st, %st(1)
3168: fstps -36(%ebp,%edx,8)
3169: jmp .L448
3170: .size Call_DrawQuad, .-Call_DrawQuad
3171: .p2align 4,,15
3172: .globl Call_DrawTriangle
3173: .type Call_DrawTriangle, @function
3174: Call_DrawTriangle:
3175: pushl %ebp
3176: movl %esp, %ebp
3177: pushl %edi
3178: pushl %esi
3179: pushl %ebx
3180: subl $44, %esp
3181: movl $8, (%esp)
3182: call GetReg
3183: cwtl
3184: testl %eax, %eax
3185: js .L471
3186: .L470:
3187: movl $5, (%esp)
3188: sarl $2, %eax
3189: movl %eax, -16(%ebp)
3190: call GetReg
3191: movl $4, (%esp)
3192: cwtl
3193: movl %eax, -20(%ebp)
3194: call GetReg
3195: movl $3, (%esp)
3196: cwtl
3197: movl %eax, -24(%ebp)
3198: call GetReg
3199: movl $2, (%esp)
3200: movswl %ax,%ebx
3201: call GetReg
3202: movl $1, (%esp)
3203: movswl %ax,%edi
3204: call GetReg
3205: movl $0, (%esp)
3206: movswl %ax,%esi
3207: call GetReg
3208: movl %ebx, 12(%esp)
3209: movl -16(%ebp), %edx
3210: cwtl
3211: movl %edi, 8(%esp)
3212: movl %esi, 4(%esp)
3213: movl %edx, 24(%esp)
3214: movl -20(%ebp), %edx
3215: movl %eax, (%esp)
3216: movl %edx, 20(%esp)
3217: movl -24(%ebp), %edx
3218: movl %edx, 16(%esp)
3219: call DrawTriangle
3220: addl $44, %esp
3221: popl %ebx
3222: popl %esi
3223: popl %edi
3224: popl %ebp
3225: ret
3226: .p2align 4,,7
3227: .L471:
3228: addl $3, %eax
3229: jmp .L470
3230: .size Call_DrawTriangle, .-Call_DrawTriangle
3231: .p2align 4,,15
3232: .globl Call_HostUpdate
3233: .type Call_HostUpdate, @function
3234: Call_HostUpdate:
3235: pushl %ebp
3236: movl %esp, %ebp
3237: subl $8, %esp
3238: call Keymap_DebounceAllKeys
3239: call ShortCut_CheckKeys
3240: movl %ebp, %esp
3241: popl %ebp
3242: jmp Main_EventHandler
3243: .size Call_HostUpdate, .-Call_HostUpdate
3244: .p2align 4,,15
3245: .type SetExceptionHandler, @function
3246: SetExceptionHandler:
3247: pushl %ebp
3248: movl %esp, %ebp
3249: subl $8, %esp
3250: movl $0, (%esp)
3251: movl %ebx, -4(%ebp)
3252: call GetReg
3253: movl $8, (%esp)
3254: movl %eax, %ebx
3255: andl $31, %ebx
3256: call GetReg
3257: movl %eax, exception_handlers(,%ebx,4)
3258: movl -4(%ebp), %ebx
3259: movl %ebp, %esp
3260: popl %ebp
3261: ret
3262: .size SetExceptionHandler, .-SetExceptionHandler
3263: .section .rodata.str1.32,"aMS",@progbits,1
3264: .align 32
3265: .LC16:
3266: .string " $%x $%x $%x $%x $%x $%x $%x $%x*$%x $%x $%x $%x $%x $%x $%x $%x:%d\n"
3267: .text
3268: .p2align 4,,15
3269: .globl DumpMess
3270: .type DumpMess, @function
3271: DumpMess:
3272: pushl %ebp
3273: movl %esp, %ebp
3274: pushl %edi
3275: pushl %esi
3276: pushl %ebx
3277: subl $124, %esp
3278: cmpb $0, X
3279: jne .L485
3280: .L475:
3281: cmpb $0, Z
3282: jne .L486
3283: .L477:
3284: cmpb $0, N
3285: jne .L487
3286: .L479:
3287: cmpb $0, V
3288: jne .L488
3289: .L481:
3290: cmpb $0, C
3291: jne .L489
3292: .L483:
3293: movl $15, (%esp)
3294: call GetReg
3295: movl %eax, -16(%ebp)
3296: movl $14, (%esp)
3297: call GetReg
3298: movl %eax, -20(%ebp)
3299: movl $13, (%esp)
3300: call GetReg
3301: movl %eax, -24(%ebp)
3302: movl $12, (%esp)
3303: call GetReg
3304: movl %eax, -28(%ebp)
3305: movl $11, (%esp)
3306: call GetReg
3307: movl %eax, -32(%ebp)
3308: movl $10, (%esp)
3309: call GetReg
3310: movl %eax, -36(%ebp)
3311: movl $9, (%esp)
3312: call GetReg
3313: movl %eax, -40(%ebp)
3314: movl $8, (%esp)
3315: call GetReg
3316: movl %eax, -44(%ebp)
3317: movl $7, (%esp)
3318: call GetReg
3319: movl %eax, -48(%ebp)
3320: movl $6, (%esp)
3321: call GetReg
3322: movl %eax, -52(%ebp)
3323: movl $5, (%esp)
3324: call GetReg
3325: movl %eax, -56(%ebp)
3326: movl $4, (%esp)
3327: call GetReg
3328: movl %eax, -60(%ebp)
3329: movl $3, (%esp)
3330: call GetReg
3331: movl $2, (%esp)
3332: movl %eax, %edi
3333: call GetReg
3334: movl $1, (%esp)
3335: movl %eax, %esi
3336: call GetReg
3337: movl $0, (%esp)
3338: movl %eax, %ebx
3339: call GetReg
3340: movl %eax, 4(%esp)
3341: movl line_no, %edx
3342: movl %edi, 16(%esp)
3343: movl %esi, 12(%esp)
3344: movl %edx, 68(%esp)
3345: movl -16(%ebp), %edx
3346: movl %ebx, 8(%esp)
3347: movl $.LC16, (%esp)
3348: movl %edx, 64(%esp)
3349: movl -20(%ebp), %edx
3350: movl %edx, 60(%esp)
3351: movl -24(%ebp), %edx
3352: movl %edx, 56(%esp)
3353: movl -28(%ebp), %edx
3354: movl %edx, 52(%esp)
3355: movl -32(%ebp), %edx
3356: movl %edx, 48(%esp)
3357: movl -36(%ebp), %edx
3358: movl %edx, 44(%esp)
3359: movl -40(%ebp), %edx
3360: movl %edx, 40(%esp)
3361: movl -44(%ebp), %edx
3362: movl %edx, 36(%esp)
3363: movl -48(%ebp), %edx
3364: movl %edx, 32(%esp)
3365: movl -52(%ebp), %edx
3366: movl %edx, 28(%esp)
3367: movl -56(%ebp), %edx
3368: movl %edx, 24(%esp)
3369: movl -60(%ebp), %edx
3370: movl %edx, 20(%esp)
3371: call printf
3372: addl $124, %esp
3373: popl %ebx
3374: popl %esi
3375: popl %edi
3376: popl %ebp
3377: ret
3378: .p2align 4,,7
3379: .L489:
3380: movl $67, (%esp)
3381: movl stdout, %eax
3382: movl %eax, 4(%esp)
3383: call _IO_putc
3384: jmp .L483
3385: .p2align 4,,7
3386: .L488:
3387: movl $86, (%esp)
3388: movl stdout, %eax
3389: movl %eax, 4(%esp)
3390: call _IO_putc
3391: jmp .L481
3392: .p2align 4,,7
3393: .L487:
3394: movl $78, (%esp)
3395: movl stdout, %eax
3396: movl %eax, 4(%esp)
3397: call _IO_putc
3398: jmp .L479
3399: .p2align 4,,7
3400: .L486:
3401: movl $90, (%esp)
3402: movl stdout, %eax
3403: movl %eax, 4(%esp)
3404: call _IO_putc
3405: jmp .L477
3406: .p2align 4,,7
3407: .L485:
3408: movl $88, (%esp)
3409: movl stdout, %eax
3410: movl %eax, 4(%esp)
3411: call _IO_putc
3412: jmp .L475
3413: .size DumpMess, .-DumpMess
3414: .local PrevRegs.0
3415: .comm PrevRegs.0,64,32
3416: .section .rodata.str1.1
3417: .LC17:
3418: .string " %c%d:%x"
3419: .LC18:
3420: .string "(%d)\n"
3421: .text
3422: .p2align 4,,15
3423: .globl DumpRegsChanged
3424: .type DumpRegsChanged, @function
3425: DumpRegsChanged:
3426: pushl %ebp
3427: movl %esp, %ebp
3428: pushl %esi
3429: xorl %esi, %esi
3430: pushl %ebx
3431: subl $16, %esp
3432: xorl %ebx, %ebx
3433: .p2align 4,,15
3434: .L510:
3435: movl %ebx, (%esp)
3436: call GetReg
3437: cmpl %eax, PrevRegs.0(,%ebx,4)
3438: je .L493
3439: testl %esi, %esi
3440: jne .L496
3441: cmpb $0, Z
3442: jne .L514
3443: .L497:
3444: cmpb $0, V
3445: jne .L515
3446: .L499:
3447: cmpb $0, C
3448: jne .L516
3449: .L501:
3450: cmpb $0, N
3451: jne .L517
3452: .L503:
3453: cmpb $0, X
3454: jne .L518
3455: .L505:
3456: movl $1, %esi
3457: .L496:
3458: movl %ebx, (%esp)
3459: call GetReg
3460: movl %eax, 12(%esp)
3461: cmpl $7, %ebx
3462: movl %ebx, %eax
3463: jle .L507
3464: leal -8(%ebx), %eax
3465: .L507:
3466: movl %eax, 8(%esp)
3467: xorl %eax, %eax
3468: cmpl $7, %ebx
3469: setle %al
3470: movl $.LC17, (%esp)
3471: leal 97(%eax,%eax,2), %eax
3472: movl %eax, 4(%esp)
3473: call printf
3474: movl %ebx, (%esp)
3475: call GetReg
3476: movl %eax, PrevRegs.0(,%ebx,4)
3477: .L493:
3478: incl %ebx
3479: cmpl $15, %ebx
3480: jle .L510
3481: testl %esi, %esi
3482: jne .L519
3483: .L490:
3484: addl $16, %esp
3485: popl %ebx
3486: popl %esi
3487: popl %ebp
3488: ret
3489: .L519:
3490: movl $.LC18, (%esp)
3491: movl line_no, %eax
3492: movl %eax, 4(%esp)
3493: call printf
3494: jmp .L490
3495: .p2align 4,,7
3496: .L518:
3497: movl $88, (%esp)
3498: movl stdout, %eax
3499: movl %eax, 4(%esp)
3500: call _IO_putc
3501: jmp .L505
3502: .p2align 4,,7
3503: .L517:
3504: movl $78, (%esp)
3505: movl stdout, %eax
3506: movl %eax, 4(%esp)
3507: call _IO_putc
3508: jmp .L503
3509: .p2align 4,,7
3510: .L516:
3511: movl $67, (%esp)
3512: movl stdout, %eax
3513: movl %eax, 4(%esp)
3514: call _IO_putc
3515: jmp .L501
3516: .p2align 4,,7
3517: .L515:
3518: movl $86, (%esp)
3519: movl stdout, %eax
3520: movl %eax, 4(%esp)
3521: call _IO_putc
3522: jmp .L499
3523: .p2align 4,,7
3524: .L514:
3525: movl $90, (%esp)
3526: movl stdout, %eax
3527: movl %eax, 4(%esp)
3528: call _IO_putc
3529: jmp .L497
3530: .size DumpRegsChanged, .-DumpRegsChanged
3531: .globl hcalls
3532: .data
3533: .align 32
3534: .type hcalls, @object
3535: .size hcalls, 324
3536: hcalls:
3537: .long SetExceptionHandler
3538: .long Call_Memset
3539: .long Call_MemsetBlue
3540: .long Call_BlitCursor
3541: .long Call_RestoreUnderCursor
3542: .long Call_BlitBmp
3543: .long Call_OldHLine
3544: .long Call_HostUpdate
3545: .long Call_Memcpy
3546: .long Call_PutPix
3547: .long Call_BackHLine
3548: .long Call_FillLine
3549: .long Call_SetMainPalette
3550: .long Call_SetCtrlPalette
3551: .long Call_SetScreenBase
3552: .long Screen_Draw
3553: .long Call_DumpRegs
3554: .long Call_MakeExtPalette
3555: .long Call_PlaySFX
3556: .long Call_GetMouseInput
3557: .long Call_GetKeyboardEvent
3558: .long 0
3559: .long Call_HLine
3560: .long Call_NotifyOfScrFlip
3561: .long Call_NotifyMousePos
3562: .long Call_InformScreens
3563: .long GemDOS_SetDTA
3564: .long Call_DrawStrShadowed
3565: .long Call_DrawStr
3566: .long Call_DrawTriangle
3567: .long Call_DrawQuad
3568: .long 0
3569: .long 0
3570: .long 0
3571: .long 0
3572: .long 0
3573: .long 0
3574: .long 0
3575: .long 0
3576: .long 0
3577: .long 0
3578: .long 0
3579: .long 0
3580: .long 0
3581: .long 0
3582: .long 0
3583: .long 0
3584: .long 0
3585: .long 0
3586: .long 0
3587: .long 0
3588: .long 0
3589: .long 0
3590: .long 0
3591: .long 0
3592: .long 0
3593: .long 0
3594: .long 0
3595: .long 0
3596: .long 0
3597: .long GemDOS_Create
3598: .long GemDOS_Open
3599: .long GemDOS_Close
3600: .long GemDOS_Read
3601: .long GemDOS_Write
3602: .long GemDOS_UnLink
3603: .long 0
3604: .long 0
3605: .long 0
3606: .long 0
3607: .long 0
3608: .long 0
3609: .long 0
3610: .long 0
3611: .long 0
3612: .long 0
3613: .long 0
3614: .long 0
3615: .long GemDOS_SFirst
3616: .long GemDOS_SNext
3617: .long 0
3618: .comm emudrive,516,32
3619: .comm FileHandles,8448,32
3620: .comm InternalDTAs,69632,32
3621: .comm DTAIndex,4,4
3622: .comm pDTA,4,4
3623: .comm under_mouse,256,32
3624: .comm len_working_ext_pal,4,4
3625: .comm working_ext_pal,480,32
3626: .section .note.GNU-stack,"",@progbits
3627: .ident "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-8)"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.