417
edits
(Added info about Nick Sonneveld's IDA databases.) |
(Added AGIOBJS.OVL's disassembly.) |
||
Line 10: | Line 10: | ||
Thanks Nick. You can check out the disassemblies if you're interested at the | Thanks Nick. You can check out the disassemblies if you're interested at the | ||
[http://www.agidev.com/projects/nagi/dev.php AGI Development Site]. | [http://www.agidev.com/projects/nagi/dev.php AGI Development Site]. | ||
==Differences between AGI256 and AGI256-2's files== | |||
The only coded changes are in AGIOBJS.OVL. Data files have more differences though. | |||
===Disassembly of AGIOBJS.OVL showing differences between AGI256 and AGI256-2=== | |||
This disassembly is from AGI256-2's AGIOBJS.OVL. | |||
Comments show what the lines were in AGI256 so you can compare them more easily. | |||
I've used the asterisk character in the comments to designate that the previous | |||
instruction is continued in that position too. | |||
The comments aren't very up to date. So they may be plain wrong sometimes as | |||
I've partially guessed them at the time I wrote them. See the C version of this | |||
subroutine to better understand it. | |||
<pre> | |||
seg000:0000 ; Segment type: Pure code | |||
seg000:0000 seg000 segment byte public 'CODE' use16 | |||
seg000:0000 assume cs:seg000 | |||
seg000:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing | |||
seg000:0000 jmp loc_9 | |||
seg000:0003 ; --------------------------------------------------------------------------- | |||
seg000:0003 jmp loc_48 | |||
seg000:0006 ; --------------------------------------------------------------------------- | |||
seg000:0006 jmp loc_85 | |||
seg000:0009 ; --------------------------------------------------------------------------- | |||
seg000:0009 | |||
seg000:0009 loc_9: ; CODE XREF: seg000:0000�j | |||
seg000:0009 push si | |||
seg000:000A push di | |||
seg000:000B push bp | |||
seg000:000C mov bp, sp | |||
seg000:000E sub sp, 2 | |||
seg000:0011 mov bp, [bp+8] | |||
seg000:0014 mov al, [bp+8] | |||
seg000:0017 mov ah, [bp+6] | |||
seg000:001A call near ptr 0B8B6h | |||
seg000:001D mov si, di | |||
seg000:001F mov ah, [bp+0Ch] | |||
seg000:0022 mov al, [bp+0Ah] | |||
seg000:0025 mov di, [bp+0Eh] | |||
seg000:0028 push ds | |||
seg000:0029 mov ds, ds:136Fh | |||
seg000:002D xor dx, dx | |||
seg000:002F mov cx, dx | |||
seg000:0031 jmp loc_155 | |||
seg000:0034 ; --------------------------------------------------------------------------- | |||
seg000:0034 nop | |||
seg000:0035 nop | |||
seg000:0036 | |||
seg000:0036 loc_36: ; CODE XREF: seg000:003E�j | |||
seg000:0036 ; seg000:0175�j | |||
seg000:0036 mov cl, al | |||
seg000:0038 repe movsb | |||
seg000:003A add si, dx | |||
seg000:003C dec ah | |||
seg000:003E jnz loc_36 | |||
seg000:0040 pop ds | |||
seg000:0041 add sp, 2 | |||
seg000:0044 pop bp | |||
seg000:0045 pop di | |||
seg000:0046 pop si | |||
seg000:0047 retn | |||
seg000:0048 ; --------------------------------------------------------------------------- | |||
seg000:0048 | |||
seg000:0048 loc_48: ; CODE XREF: seg000:0003�j | |||
seg000:0048 push si | |||
seg000:0049 push di | |||
seg000:004A push bp | |||
seg000:004B mov bp, sp | |||
seg000:004D sub sp, 2 | |||
seg000:0050 mov bp, [bp+8] | |||
seg000:0053 mov al, [bp+8] | |||
seg000:0056 mov ah, [bp+6] | |||
seg000:0059 call near ptr 0B8B6h | |||
seg000:005C mov si, [bp+0Eh] | |||
seg000:005F mov ah, [bp+0Ch] | |||
seg000:0062 mov al, [bp+0Ah] | |||
seg000:0065 push es | |||
seg000:0066 mov es, ds:136Fh | |||
seg000:006A xor dx, dx | |||
seg000:006C mov cx, dx | |||
seg000:006E jmp loc_161 | |||
seg000:0071 ; --------------------------------------------------------------------------- | |||
seg000:0071 nop | |||
seg000:0072 nop | |||
seg000:0073 | |||
seg000:0073 loc_73: ; CODE XREF: seg000:007B�j | |||
seg000:0073 ; seg000:016E�j | |||
seg000:0073 mov cl, al | |||
seg000:0075 repe movsb | |||
seg000:0077 add di, dx | |||
seg000:0079 dec ah | |||
seg000:007B jnz loc_73 | |||
seg000:007D pop es | |||
seg000:007E add sp, 2 | |||
seg000:0081 pop bp | |||
seg000:0082 pop di | |||
seg000:0083 pop si | |||
seg000:0084 retn | |||
seg000:0085 ; --------------------------------------------------------------------------- | |||
seg000:0085 | |||
seg000:0085 loc_85: ; CODE XREF: seg000:0006�j | |||
seg000:0085 push si | |||
seg000:0086 push di | |||
seg000:0087 push bp | |||
seg000:0088 mov bp, sp | |||
seg000:008A sub sp, 2 | |||
seg000:008D mov bp, [bp+8] | |||
seg000:0090 mov al, [bp+2] | |||
seg000:0093 push ax | |||
seg000:0094 mov si, [bp+10h] | |||
seg000:0097 test byte ptr [si+2], 80h | |||
seg000:009B jmp short loc_A5 ; jz loc_A5 (Was mirror testing, now we ignore mirroring) | |||
seg000:009D ; --------------------------------------------------------------------------- | |||
seg000:009D push bp | |||
seg000:009E nop ; call near ptr 0BACDh (Was _BlitMirrorCell, now not used) | |||
seg000:009F nop ; * | |||
seg000:00A0 nop ; * | |||
seg000:00A1 pop bp ; * | |||
seg000:00A2 mov si, [bp+10h] | |||
seg000:00A5 | |||
seg000:00A5 loc_A5: ; CODE XREF: seg000:009B�j | |||
seg000:00A5 inc si | |||
seg000:00A6 lodsw | |||
seg000:00A7 mov dx, ax | |||
seg000:00A9 mov ah, [bp+3] | |||
seg000:00AC mov al, [bp+5] | |||
seg000:00AF sub al, dl | |||
seg000:00B1 inc al | |||
seg000:00B3 call near ptr 0B8B6h | |||
seg000:00B6 nop ; shl dh, 1 | |||
seg000:00B7 nop ; * | |||
seg000:00B8 nop ; shl dh, 1 | |||
seg000:00B9 nop ; * | |||
seg000:00BA nop ; shl dh, 1 | |||
seg000:00BB nop ; * | |||
seg000:00BC nop ; shl dh, 1 | |||
seg000:00BD nop ; * | |||
seg000:00BD ; (These were probably for putting color info into upper nibble) | |||
seg000:00BE push es | |||
seg000:00BF mov es, ds:136Fh | |||
seg000:00C3 mov bl, 1 | |||
seg000:00C5 mov bh, [bp+24h] | |||
seg000:00C8 shl bh, 1 | |||
seg000:00CA shl bh, 1 | |||
seg000:00CC shl bh, 1 | |||
seg000:00CE shl bh, 1 | |||
seg000:00D0 mov bp, di | |||
seg000:00D2 xor cx, cx | |||
seg000:00D4 jmp short loc_DA | |||
seg000:00D6 ; --------------------------------------------------------------------------- | |||
seg000:00D6 nop | |||
seg000:00D7 | |||
seg000:00D7 loc_D7: ; CODE XREF: seg000:00E6�j | |||
seg000:00D7 cbw | |||
seg000:00D8 add di, ax | |||
seg000:00DA | |||
seg000:00DA loc_DA: ; CODE XREF: seg000:00D4�j | |||
seg000:00DA ; seg000:0108�j ... | |||
seg000:00DA lodsb | |||
seg000:00DB or al, al | |||
seg000:00DD jz loc_10A | |||
seg000:00DF mov ah, al | |||
seg000:00E1 mov al, 1 ; and ax, 0F00Fh | |||
seg000:00E3 nop ; * | |||
seg000:00E3 ; (Was probably for checking run length... now not needed, always 1) | |||
seg000:00E4 cmp ah, dh | |||
seg000:00E6 jz loc_D7 | |||
seg000:00E8 mov cl, 1 ; mov cl, al (Was for run length, now always 1) | |||
seg000:00EA nop ; shr ah, 1 | |||
seg000:00EB nop ; * | |||
seg000:00EC nop ; shr ah, 1 | |||
seg000:00ED nop ; * | |||
seg000:00EE nop ; shr ah, 1 | |||
seg000:00EF nop ; * | |||
seg000:00F0 nop ; shr ah, 1 | |||
seg000:00F1 nop ; * | |||
seg000:00F1 ; (These were probably for getting color info from upper to lower nibble) | |||
seg000:00F2 | |||
seg000:00F2 loc_F2: ; CODE XREF: seg000:0136�j | |||
seg000:00F2 mov al, es:[di] | |||
seg000:00F5 and al, 0F0h | |||
seg000:00F7 cmp al, 20h ; ' ' | |||
seg000:00F9 jbe loc_116 | |||
seg000:00FB cmp al, bh | |||
seg000:00FD ja loc_135 | |||
seg000:00FF mov al, ah ; mov al, bh ?? | |||
seg000:0101 | |||
seg000:0101 loc_101: ; CODE XREF: seg000:0133�j | |||
seg000:0101 mov al, ah ; or al, ah | |||
seg000:0103 jmp loc_178 | |||
seg000:0106 ; --------------------------------------------------------------------------- | |||
seg000:0106 | |||
seg000:0106 loc_106: ; CODE XREF: seg000:0185�j | |||
seg000:0106 nop ; loop loc_F2 | |||
seg000:0107 nop ; * | |||
seg000:0108 jmp short loc_DA | |||
seg000:010A ; --------------------------------------------------------------------------- | |||
seg000:010A | |||
seg000:010A loc_10A: ; CODE XREF: seg000:00DD�j | |||
seg000:010A dec dl | |||
seg000:010C jz loc_13A | |||
seg000:010E add bp, 140h | |||
seg000:0112 mov di, bp | |||
seg000:0114 jmp short loc_DA | |||
seg000:0116 ; --------------------------------------------------------------------------- | |||
seg000:0116 | |||
seg000:0116 loc_116: ; CODE XREF: seg000:00F9�j | |||
seg000:0116 push di | |||
seg000:0117 xor ch, ch | |||
seg000:0119 | |||
seg000:0119 loc_119: ; CODE XREF: seg000:012C�j | |||
seg000:0119 cmp di, 0D0C0h | |||
seg000:011D jnb loc_12E | |||
seg000:011F add di, 140h | |||
seg000:0123 mov ch, es:[di] | |||
seg000:0126 and ch, 0F0h | |||
seg000:0129 cmp ch, 20h ; ' ' | |||
seg000:012C jbe loc_119 | |||
seg000:012E | |||
seg000:012E loc_12E: ; CODE XREF: seg000:011D�j | |||
seg000:012E pop di | |||
seg000:012F cmp ch, bh | |||
seg000:0131 mov ch, 0 | |||
seg000:0133 jbe loc_101 ; or al, ah | |||
seg000:0135 | |||
seg000:0135 loc_135: ; CODE XREF: seg000:00FD�j | |||
seg000:0135 inc di | |||
seg000:0136 loop loc_F2 | |||
seg000:0138 jmp short loc_DA | |||
seg000:013A ; --------------------------------------------------------------------------- | |||
seg000:013A | |||
seg000:013A loc_13A: ; CODE XREF: seg000:010C�j | |||
seg000:013A pop es | |||
seg000:013B pop ax | |||
seg000:013C or al, al | |||
seg000:013E jnz loc_14E | |||
seg000:0140 mov al, 1 | |||
seg000:0142 test bl, bl | |||
seg000:0144 jnz loc_14B | |||
seg000:0146 call near ptr 0D744h | |||
seg000:0149 jmp short loc_14E | |||
seg000:014B ; --------------------------------------------------------------------------- | |||
seg000:014B | |||
seg000:014B loc_14B: ; CODE XREF: seg000:0144�j | |||
seg000:014B call near ptr 0D73Eh | |||
seg000:014E | |||
seg000:014E loc_14E: ; CODE XREF: seg000:013E�j | |||
seg000:014E ; seg000:0149�j | |||
seg000:014E add sp, 2 | |||
seg000:0151 pop bp | |||
seg000:0152 pop di | |||
seg000:0153 pop si | |||
seg000:0154 retn | |||
seg000:0155 ; --------------------------------------------------------------------------- | |||
seg000:0155 | |||
seg000:0155 loc_155: ; CODE XREF: seg000:0031�j | |||
seg000:0155 mov dx, 140h | |||
seg000:0158 push ax | |||
seg000:0159 xor ah, ah | |||
seg000:015B sub dx, ax | |||
seg000:015D pop ax | |||
seg000:015E jmp loc_171 | |||
seg000:0161 ; --------------------------------------------------------------------------- | |||
seg000:0161 | |||
seg000:0161 loc_161: ; CODE XREF: seg000:006E�j | |||
seg000:0161 mov dx, 140h | |||
seg000:0164 push ax | |||
seg000:0165 xor ah, ah | |||
seg000:0167 sub dx, ax | |||
seg000:0169 pop ax | |||
seg000:016A add di, 0A0h ; 'á' | |||
seg000:016E jmp loc_73 | |||
seg000:0171 ; --------------------------------------------------------------------------- | |||
seg000:0171 | |||
seg000:0171 loc_171: ; CODE XREF: seg000:015E�j | |||
seg000:0171 add si, 0A0h ; 'á' | |||
seg000:0175 jmp loc_36 | |||
seg000:0178 ; --------------------------------------------------------------------------- | |||
seg000:0178 | |||
seg000:0178 loc_178: ; CODE XREF: seg000:0103�j | |||
seg000:0178 add di, 0A0h ; 'á' | |||
seg000:017C and al, 0FFh ; and al, 0Fh | |||
seg000:017E stosb | |||
seg000:017F sub di, 0A0h ; 'á' | |||
seg000:0183 xor bl, bl | |||
seg000:0185 jmp loc_106 ; loop loc_F2 | |||
seg000:0185 ; --------------------------------------------------------------------------- | |||
seg000:0188 db 78h dup(0) | |||
seg000:0188 seg000 ends | |||
seg000:0188 | |||
seg000:0188 | |||
seg000:0188 end | |||
</pre> |
edits