+forgotten IMAP4
[www.jankratochvil.net.git] / project / ShortRel / ShortRel.asm
1 ;DEBUG  equ     1
2
3         include "SSMac.h"
4
5         dv.l    FileStart
6         dv.l    Hunks
7         dv.l    OldKeepDebug
8         dv.l    RelocPool
9         dv.l    BackupA2
10         dv.l    FirstInsert
11         dv.l    LastInsert
12         dv.b    FlgBufEnd
13         dv.b    Advisory
14
15         start
16
17         get.l   Arg_File,a0
18         call    LoadFile
19         put.l   d0,FileStart
20         move.l  d0,a2
21         add.l   -(a2),d0
22         move.l  d0,d7
23         moveq   #20,d0
24         cmp.l   (a2)+,d0
25         bhi.s   InvalidNE1
26         lea     (a2,d0.l),a3
27         cmp.l   #HUNK_HEADER,(a2)+
28         bne.s   InvalidNE1
29         tst.l   (a2)+
30         bne.s   InvalidNE1
31         move.l  (a2)+,d2
32         beq     Invalid
33         tst.l   (a2)+
34         bne.s   InvalidNE1
35         move.l  (a2)+,d0
36         addq.l  #1,d0
37         cmp.l   d0,d2
38         bne.s   InvalidNE1
39         dtl     <hunk>,a6
40         bsr.s   CheckWordLimit
41         swap    d0
42         put.l   d0,Hunks
43         lsl.l   #3,d0
44         call    ss,TrackAllocPub
45         move.l  d0,a4
46         move.l  d2,d0
47         moveq   #0,d4
48         bsr     CopyLongs
49
50         moveq   #0,d3
51 MainHunkLoop
52         ifd     DEBUG
53         push    d4
54         push    d3
55         push    a2
56         dtl     <A2=%08lx, D3=%08lx, D4=%08lx - >,a0
57         move.l  sp,a1
58         call    ss,Printf
59         lea     12(sp),sp
60         endc
61         cmp.l   a2,d7
62         beq.s   FileEnd
63         move.l  (a2)+,d0
64         push    d0
65         ifd     DEBUG
66         dtl.l   <Got %08lx>,a0
67         move.l  sp,a1
68         call    Printf
69         move.l  (sp),d0
70         endc
71         bclr.l  #HUNKB_ADVISORY,d0
72         snev    Advisory
73         sub.w   #HUNK_NAME,d0
74         bcs.s   BadHunk
75         cmp.w   #HUNK_RELRELOC32-HUNK_NAME+1,d0
76         bcc.s   BadHunk
77         lsl.l   #1,d0
78         move.w  HunkTable(pc,d0.w),d1
79         swap    d0
80         lsl.w   #2,d0
81 InvalidNE1      bne     Invalid
82         pop     d0
83         jsr     HunkTable(pc,d1.w)
84         bra.s   MainHunkLoop
85
86 CheckWordLimit  swap    d0
87         tst.w   d0
88         beq     Return5
89         push    a0
90         dtl     <Too many %ss>,a0
91         bra     ErrorSSA1
92
93 BadHunk tstv.b  Advisory
94         beq     Invalid
95         tst.l   d4
96         bne.s   AdviSkip
97         move.l  d0,(a3)+
98 AdviSkip        bsr     GetLong
99
100 FileEnd tstv.l  Arg_NoEnd
101         beq.s   PatchNoEnd
102         addq    #4,a3
103 PatchNoEnd      geta    Arg_To,a0
104         move.l  (a0),d0
105         bne.s   ArgToSpecified
106         move.l  -4(a0),d0
107         move.l  d0,(a0)
108 ArgToSpecified  move.l  d0,a0
109         moveq   #OPEN_NEW,d0
110         call    ss,TrackOpen
111         move.l  d1,d2
112         get.l   FileStart,a2
113         move.l  -4(a2),d4
114         get.l   FirstInsert,d3
115         moveq   #0,d5
116
117 FlushLoop       tst.l   d3
118         beq.s   FlushNoInsertX
119         move.l  d3,a1
120         move.l  (a1)+,d1        ;Next
121         move.l  (a1)+,d0        ;Point
122         sub.l   a2,d0
123         bne.s   FlushNoInsert
124         move.l  d1,d3
125         move.l  (a1)+,d0        ;Length
126         bra.s   FlushSkip
127
128 hunk    macro   ;HUNK_#?[,<routine>]
129         ifne    _hunk-\1
130         fail    Mismatched hunk numbers!
131         endc
132         ifeq    NARG-1
133         dc.w    BadHunk-HunkTable
134         else
135         dc.w    hunk_\2-HunkTable
136         endc
137 _hunk   set     _hunk+1
138         endm
139 _hunk   set     1000
140 HunkTable
141         hunk    HUNK_NAME,skipcnt       ;1000
142         hunk    HUNK_CODE,main          ;1001
143         hunk    HUNK_DATA,main          ;1002
144         hunk    HUNK_BSS,bss            ;1003
145         hunk    HUNK_RELOC32,rel32      ;1004
146         hunk    HUNK_RELOC16            ;1005
147         hunk    HUNK_RELOC8             ;1006
148         hunk    HUNK_EXT                ;1007
149         hunk    HUNK_SYMBOL,symbol      ;1008
150         hunk    HUNK_DEBUG,skipcnt      ;1009
151         hunk    HUNK_END,end            ;1010
152         hunk    HUNK_HEADER             ;1011
153         hunk    1012                    ;????
154         hunk    HUNK_OVERLAY            ;1013
155         hunk    HUNK_BREAK              ;1014
156         hunk    HUNK_DREL32,rel16       ;1015
157         hunk    HUNK_DREL16             ;1016
158         hunk    HUNK_DREL8              ;1017
159         hunk    HUNK_LIB                ;1018
160         hunk    HUNK_INDEX              ;1019
161         hunk    HUNK_RELOC32SHORT,rel16 ;1020
162         hunk    HUNK_RELRELOC32,rrel16  ;1021
163         ifne    _hunk-HUNK_RELRELOC32-1
164         fail    Invalid number of hunks!
165         endc
166
167 FlushNoInsertX  move.l  a3,d0
168         sub.l   a2,d0
169 FlushNoInsert   move.l  a2,a1
170         add.l   d0,a2
171 FlushSkip       move.l  d2,a0
172         add.l   d0,d5
173         call    ss,ChkWrite
174         cmp.l   a2,a3
175         bne.s   FlushLoop
176
177         tstv.l  Arg_Quiet
178         bne.s   Return5
179
180         move.l  d5,d0
181         moveq   #100,d1
182         get.l   utilitybase,a0
183         jsr     _LVOUMult32(a0)
184         move.l  d4,d1
185         jsr     _LVOUDivMod32(a0)
186         pop     d1
187         move.w  d0,-(sp)
188         get.l   Arg_To,d3
189         get.l   Arg_File,d2
190         mpush   d1-d5
191         lea     4(sp),a1
192         dtl.l   <%s =',62,' %s: %lu =',62,' %lu (%u%%)>,a0
193         jump    Printf
194
195 hunk_rel16      moveq   #-31,d2
196         bra.s   HunkReloc
197
198 RelocRead16     moveq   #0,d0
199         move.w  (a2)+,d0
200 Return5 rts
201
202 hunk_rel32      moveq   #2,d2
203 HunkReloc       tst.l   d3
204         beq.s   InvalidEQ1
205 RelocLoop       bsr.s   RelocRead
206         beq.s   RelocReturn
207         move.l  d0,d1
208         bsr.s   RelocRead
209         vcmp.l  Hunks,d0
210         bcc     Invalid
211         lsl.l   #2,d0
212         lea     (a4,d0.l),a0
213         move.l  d1,d0
214         tst.l   d4
215         bne.s   RelocScan
216         lsl.l   #2,d0
217         move.l  (a0),a1
218         add.l   d0,(a0)
219         tst.l   d2
220         bmi.s   RelocCopy16
221         move.l  a2,a0
222         add.l   d0,a2
223         call    exec,CopyMemQuick
224         bra.s   RelocLoop
225
226 RelocCopy16     subq.l  #1,d1
227 RC16Loop        clr.w   (a1)+
228         move.w  (a2)+,(a1)+
229         dbra    d1,RC16Loop
230         bra.s   RelocLoop
231
232 RelocScan       add.l   d1,(a0)
233         rol.l   d2,d0
234         bsr     SkipBytes
235         bra.s   RelocLoop
236
237 RelocRead       cmp.l   a2,d7
238         beq     InvalidEnd
239         tst.l   d2
240         bmi.s   RelocRead16
241         move.l  (a2)+,d0
242         rts
243
244 RelocReturnRR   cmp.l   a3,d7
245         beq.s   InvalidEQ1
246         clr.w   (a3)
247         move.l  a3,d0
248         addq.l  #3,d0
249         and.w   #~3,d0
250         move.l  d0,a3
251 RelocReturn     move.l  a2,d0
252         addq.l  #3,d0
253         and.w   #~3,d0
254         move.l  d0,a2
255         rts
256
257 hunk_rrel16     tst.l   d3
258 InvalidEQ1      beq     Invalid
259         moveq   #-1,d2
260         tst.l   d4
261         bne.s   RRel16Loop
262         move.l  d0,(a3)+
263 RRel16Loop      bsr.s   RelocRead
264         tst.l   d4
265         bne.s   SkipCpNum16
266         move.w  d0,(a3)+
267 SkipCpNum16     tst.w   d0
268         beq.s   RelocReturnRR
269         addq.l  #1,d0
270         lsl.l   #1,d0
271         bsr.s   CopyBytes       ;or SkipBytes if d4\ne0
272         bra.s   RRel16Loop
273
274 hunk_skipcnt    bsr.s   SymInit
275         moveq   #0,d2
276         bsr.s   RelocRead
277         tst.l   d6
278         beq.s   SymbolSkip
279         move.l  d0,(a3)+
280 SymbolSkip      push    d4
281         move.l  d6,d4
282         subq.l  #1,d4
283         subx.l  d4,d4
284         bsr.s   CopyLongs
285         pop     d4
286 Return1 rts
287
288 SymInit get.l   Arg_KeepDebug,d6
289         beq.s   Return6
290 PutnRet move.l  d0,(a3)+
291 Return6 rts
292
293 hunk_symbol     moveq   #0,d2
294         bsr.s   SymInit
295 SkipSymbol      bsr.s   RelocRead
296         tst.l   d6
297         beq.s   KeepNull
298         move.l  d0,(a3)+
299 KeepNull        tst.l   d0
300         beq.s   Return1
301         addq.l  #1,d0
302         bsr.s   SymbolSkip
303         bra.s   SkipSymbol
304
305 CopyLongs       lsl.l   #2,d0
306 CopyBytes       tst.l   d4
307         bne     SkipBytes
308         move.l  d7,d1
309         sub.l   a2,d1
310         cmp.l   d0,d1
311         bcs     InvalidEnd
312         move.l  a2,a0
313         move.l  a3,a1
314         add.l   d0,a2
315         add.l   d0,a3
316         cmp.l   a0,a1
317         beq.s   Return1
318         cmp.l   a3,a0
319         bcc.s   JumpCopyMem
320         lsr.l   #2,d0
321         bcc.s   CopyQuad
322         move.w  (a0)+,(a1)+
323 CopyQuad        move.w  d0,d1
324         swap    d0
325         bra.s   MyCopyInto
326
327 MyCopyLoop      move.l  (a0)+,(a1)+
328 MyCopyInto      dbra    d1,MyCopyLoop
329         dbra    d0,MyCopyLoop
330         rts
331
332 JumpCopyMem     jump    exec,CopyMem
333
334 hunk_end        tst.l   d3
335         beq     Invalid
336 HunkEndJump     tst.l   d4
337         beq.s   Pass1Done
338         ifd     DEBUG
339         dtl     <HunkEnd - Pass 1>,a0
340         call    ss,PutsNL
341         endc
342         moveq   #64,d0
343         lsl.l   #4,d0
344         moveq   #96,d1
345         lsl.l   #3,d1
346         moveq   #0,d2
347         call    ss,TrackPool
348         put.l   d0,RelocPool
349         push    d3
350         move.l  d0,d3
351         get.l   Hunks,d2
352         move.l  d2,d0
353         lsl.l   #2,d0
354         lea     (a4,d0.l),a2
355         push    a4
356         bra.s   AllocRelocInto
357
358 AllocRelocLoop  move.l  (a4),d0
359         lsl.l   #2,d0
360         move.l  d0,(a2)+
361         beq.s   NoAllocReloc
362         move.l  d3,a0
363         call    PoolAlloc
364 NoAllocReloc    move.l  d0,(a4)+
365 AllocRelocInto  dbra    d2,AllocRelocLoop
366         pop     a4
367         pop     d3
368         move.l  d4,a2
369         moveq   #0,d4
370         vmovev.l OldKeepDebug,Arg_KeepDebug
371         rts
372
373 Pass1Done
374         ifd     DEBUG
375         push    d0
376         dtl     <HunkEnd - Pass 1 done>,a0
377         call    ss,PutsNL
378         pop     d0
379         endc
380         put.l   a2,BackupA2
381         mpush   d0/d7/a4
382         get.l   Hunks,d6
383         move.l  d6,d3
384         lsl.l   #2,d6
385         move.l  (v),a6
386         lea     (a4,d6.l),a2    ;A2=RelLengths, A4=RelEnds
387         moveq   #0,d4           ;define to 16 if at least 1 32bit
388         moveq   #0,d5           ;saved bytes by 16bit header
389         tstv.l  Arg_Reloc32
390         bne.s   Only32Fake
391         get.l   RelocPool,a0
392         move.l  d6,d0
393         call    PoolAlloc
394         push    a3
395         move.l  d0,a3
396         add.l   d6,a3
397         push    a3
398         bra.s   NormalPtrsInto
399
400 NormalPtrsLoop  move.l  (a2)+,d0
401         sub.l   d0,(a4)
402         move.l  d0,d7
403         move.l  (a4)+,a0
404         beq.s   EmptyHunk
405         move.l  a0,d2
406         lsr.l   #2,d0
407         call    SortLongs
408         moveq   #0,d0
409         move.l  d2,a0
410         move.l  d7,d1
411 EdgeLoop        move.l  d0,d2
412         add.l   d1,d2
413         lsr.l   #1,d2
414         and.w   #~3,d2
415         cmp.l   d0,d2
416         beq.s   EdgeFound
417         tst.w   (a0,d2.l)
418         bne.s   EdgeDown
419         move.l  d2,d0
420         move.l  d1,d2
421 EdgeDown        move.l  d2,d1
422         bra.s   EdgeLoop
423
424 Only32Fake      subq.l  #1,d3
425 Only32Loop      move.l  (a4),a0
426         move.l  (a2)+,d0
427         sub.l   d0,a0
428         move.l  a0,(a4)+
429         lsr.l   #2,d0
430         call    SortLongs
431         dbra    d3,Only32Loop
432         bra.s   FromFaked32
433
434 EdgeFound       tst.w   (a0,d0.l)
435         bne.s   EdgeFix
436         addq.l  #4,d0
437 EdgeFix add.l   d0,d5
438         addq.l  #8,d5
439 EmptyHunk       move.l  d0,-(a3)                ;real # of 16bit relocs
440         beq.s   NormalPtrsInto
441         moveq   #16,d4
442         subq.l  #8,d0
443         bhi.s   MoreThatTwo
444         sub.l   d0,d5
445         subq.l  #8,d5
446         subq.l  #8,d5
447         clr.l   (a3)
448 MoreThatTwo     sub.l   d4,d5
449 NormalPtrsInto  dbra    d3,NormalPtrsLoop       ;A2=TotalEnd, A4=RelLengths
450         mpop    a0/a3
451 FromFaked32     move.l  d6,d3
452         lsr.l   #2,d3
453         subq.l  #1,d3
454         sub.l   d6,a2
455         sub.l   d6,a2           ;A2=RelStarts, A4=RelLengths
456         sub.l   d4,d5
457         bmi.s   Hunks32
458         beq.s   Hunks32
459         tst.l   d4
460         beq.s   Hunks32
461         mpush   d3/a0/a2/a4
462         moveq   #8,d0
463 H16SizeLoop     move.l  -(a0),d1
464         beq.s   H16SizeSkip
465         lsr.l   #1,d1
466         addq.l  #4,d1
467         add.l   d1,d0
468 H16SizeSkip     dbra    d3,H16SizeLoop
469         and.w   #~3,d0
470         bsr     ReserveReloc
471         movem.l 4(sp),d3/a0/a2/a4
472         move.l  #HUNK_DREL32,(a3)+
473         dtl     <reloc>,a6
474 H16Loop move.l  -(a0),d0
475         sub.l   d0,(a4)+
476         lsr.l   #2,d0
477         move.l  (a2),a1
478         beq.s   H16SkipAll
479         move.w  d0,(a3)+
480         subq.w  #1,d0
481         move.w  6(sp),(a3)      ;Desthunk
482         sub.w   d3,(a3)+
483
484 H16InLoop       addq    #2,a1
485         move.w  (a1)+,(a3)+
486         dbra    d0,H16InLoop
487         bsr     CheckWordLimit          ;# of relocs>65535 ?!?
488 H16SkipAll      move.l  a1,(a2)+
489         dbra    d3,H16Loop
490         clr.w   (a3)+
491         move.w  a3,d0
492         ror.w   #2,d0
493         bcc.s   H16Aligned
494         clr.w   (a3)+
495 H16Aligned      pop     a3
496         mpop    d3/a0/a2/a4
497 Hunks32 moveq   #0,d0
498         move.l  d3,d2
499         push    a4
500 H32SizeLoop     move.l  (a4)+,d1
501         beq.s   H32SizeInto
502         addq.l  #8,d1
503         add.l   d1,d0
504 H32SizeInto     dbra    d2,H32SizeLoop
505         pop     a4
506         tst.l   d0
507         beq.s   HunksDone
508         addq.l  #8,d0
509         bsr.s   ReserveReloc
510         move.l  #HUNK_RELOC32,(a3)+
511         move.l  d3,d2
512         moveq   #0,d5           ;Current DestHunk
513 H32Loop move.l  (a2)+,a0
514         move.l  (a4)+,d0
515         beq.s   H32Skip
516         move.l  d0,d1
517         lsr.l   #2,d1
518         move.l  d1,(a3)+
519         move.l  d5,(a3)+
520         move.l  a3,a1
521         add.l   d0,a3
522         call    exec,CopyMemQuick
523 H32Skip addq.l  #1,d5
524         dbra    d2,H32Loop
525         clr.l   (a3)+
526         pop     a3
527 HunksDone       get.l   RelocPool,a0
528         call    ss,FreeObject
529         get.l   BackupA2,a2
530         moveq   #0,d3
531         moveq   #0,d4
532         pop     (a3)
533         tstv.l  Arg_NoEnd
534         bne.s   IsNoEnd
535         addq    #4,a3
536 IsNoEnd mpop    d7/a4
537 Return4 rts
538
539 ReserveReloc    add.l   a3,d0
540         vcmp.l  BackupA2,d0
541         bls.s   ReserveReturn
542         sub.l   a3,d0
543         push    d0
544         addq.l  #8,d0
545         addq.l  #4,d0
546         call    ss,TrackAllocPub
547         geta    FirstInsert,a0
548         get.l   LastInsert,d1
549         beq.s   NoLastInsert
550         move.l  d1,a0
551 NoLastInsert    move.l  d0,(a0)
552         put.l   d0,LastInsert
553         move.l  d0,a1
554         clr.l   (a1)+           ;^NextInsert
555         move.l  a3,(a1)+        ;^InsertPoint
556         pop     (a1)+           ;^InsertLength
557         move.l  a3,d0
558         move.l  a1,a3
559 ReserveReturn   move.l  (sp),a0
560         move.l  d0,(sp)
561         jmp     (a0)
562
563 hunk_main       bsr.s   HunkMainInit
564         push    a3
565         bsr.s   GetLong
566         move.l  d0,d2
567         bsr     CopyLongs
568         move.w  d2,d0
569         swap    d2
570         move.l  a3,d1
571         cmp.l   d0,d0           ;ZF=1
572         bra.s   SqueezeInto
573
574 GetLong cmp.l   a2,d7
575         beq.s   Invalid
576         move.l  (a2)+,d0
577         tst.l   d4
578         bne.s   Return2
579         move.l  d0,(a3)+
580 Return2 rts
581
582 HunkMainInit    tst.l   d3
583         beq.s   WereFree
584         push    d0
585         move.l  #HUNK_END,d0
586         bsr     HunkEndJump
587         pop     d0
588         tst.l   d3
589         bne.s   HMI_Skip
590 WereFree        tst.l   d4
591         beq     PutnRet
592 HMI_Skip        addq    #4,sp
593         rts
594
595 SqueezeLoop     tst.l   -(a3)
596 SqueezeInto     dbne    d0,SqueezeLoop
597         dbne    d2,SqueezeLoop
598         beq.s   TotalSqueeze
599         addq    #4,a3
600 TotalSqueeze    sub.l   a3,d1
601         lsr.l   #2,d1
602         pop     a0
603         sub.l   d1,(a0)
604 JumpFromBSS     get.l   Hunks,d0
605         move.l  a4,a0
606         bra.s   ClrHunkTabInto
607
608 hunk_bss        bsr.s   HunkMainInit
609         bsr.s   GetLong
610         bra.s   JumpFromBSS
611
612 ClrHunkTabLoop  clr.l   (a0)+
613 ClrHunkTabInto  dbra    d0,ClrHunkTabLoop
614         move.l  a2,d4
615         vmovev.l Arg_KeepDebug,OldKeepDebug
616         clrv.l  Arg_KeepDebug
617         moveq   #-1,d3
618 Return3 rts
619
620 SkipBytes       add.l   d0,a2
621         cmp.l   a2,d7
622         bcc.s   Return3
623 InvalidEnd      move.l  d7,a2
624 Invalid vsub.l  FileStart,a2
625         push    a2
626         dtl     <Invalid structure of file "%s" near offset $%06lx>,a0
627         vpush   Arg_File
628 ErrorSSA1       move.l  sp,a1
629         jump    ss,ExitError
630
631         ifd     DEBUG
632 EXIT    jump    ss,ExitCleanup
633         endc
634
635         tags
636         template <FROM/A,TO,KEEPDEBUG/S,RELOC32/S,NOEND/S,QUIET/S>
637         dv.l    Arg_File
638         dv.l    Arg_To
639         dv.l    Arg_KeepDebug
640         dv.l    Arg_Reloc32
641         dv.l    Arg_NoEnd
642         dv.l    Arg_Quiet
643         finish
644         end
645 ShortRel dvitype /bin.new.exp/dvitype RELOC32
646 ShortRel gftodvi /bin.new.exp/gftodvi RELOC32
647 ShortRel gftopk /bin.new.exp/gftopk RELOC32
648 ShortRel gftype /bin.new.exp/gftype RELOC32
649 ShortRel inimf /bin.new.exp/inimf RELOC32
650 ShortRel initex /bin.new.exp/initex RELOC32
651 ShortRel mft /bin.new.exp/mft RELOC32
652 ShortRel pltotf /bin.new.exp/pltotf RELOC32
653 ShortRel tftopl /bin.new.exp/tftopl RELOC32
654 ShortRel vftovp /bin.new.exp/vftovp RELOC32
655 ShortRel virmf /bin.new.exp/virmf RELOC32
656 ShortRel virtex /bin.new.exp/virtex RELOC32
657 ShortRel vptovf /bin.new.exp/vptovf RELOC32
658 ShortRel MakeInfo /bin.new.exp/MakeInfo RELOC32
659 ShortRel tr2tex /bin.new.exp/tr2tex RELOC32
660 ShortRel dvi2tty /bin.new.exp/dvi2tty RELOC32
661 ShortRel disdvi /bin.new.exp/disdvi RELOC32
662 ShortRel DVIprint /bin.new.exp/DVIprint RELOC32
663 ShortRel flib /bin.new.exp/flib RELOC32
664 ShortRel PToFront /bin.new.exp/PToFront RELOC32
665 ShortRel TeXindex /bin.new.exp/TeXindex RELOC32
666 ShortRel ShowDVI /bin.new.exp/ShowDVI RELOC32
667 ShortRel SpecialHost /bin.new.exp/SpecialHost RELOC32
668 ShortRel bm2font /bin.new.exp/bm2font RELOC32
669
670
671 A2=000EEE44, D3=00000000, D4=00000000 - Got HUNK_CODE
672 A2=00102524, D3=FFFFFFFF, D4=00102524 - Got HUNK_DREL32
673 A2=00102E08, D3=FFFFFFFF, D4=00102524 - Got HUNK_RELOC32
674 A2=00102E1C, D3=FFFFFFFF, D4=00102524 - Got HUNK_DATA
675 A2=00102524, D3=FFFFFFFF, D4=00000000 - Got HUNK_DREL32
676 A2=00102E08, D3=FFFFFFFF, D4=00000000 - Got HUNK_RELOC32
677 A2=00102E1C, D3=FFFFFFFF, D4=00000000 - Got HUNK_DATA
678 A2=00103308, D3=FFFFFFFF, D4=00103308 - Got HUNK_RELOC32
679 A2=00103320, D3=FFFFFFFF, D4=00103308 - Got HUNK_BSS
680 A2=00103308, D3=FFFFFFFF, D4=00000000 - Got HUNK_RELOC32
681 A2=00103320, D3=FFFFFFFF, D4=00000000 - Got HUNK_BSS
682 A2=00103328, D3=FFFFFFFF, D4=00103328 - Got HUNK_END
683 A2=00103328, D3=FFFFFFFF, D4=00000000 - Got HUNK_END
684 A2=0010332C, D3=00000000, D4=00000000 - bm2font => :t/shortrel.res: 83208 => 80888 (97%)