Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

OMF records - processing SYS.OBJ with tdstrip (Developers)

posted by Arjay(R), 18.02.2012, 15:47
(edited by Arjay on 18.02.2012, 16:03)

> too complex for a good test, e.g. a hello world would have been better.
params.mod (mod is the file extension used for src) which comes with the compiler is a good basic example. However to aid with testing I created an even shorter one:

MODULE rjtest;   (* RJTEST 2012 *)

  IMPORT SYS:=SYSTEM;

BEGIN
END rjtest.


Using a tstrip processed SYS.OBJ. I copied OC.EXE and SYS.OBJ into a test directory and tried to compile rjtest.mod (as above) with oc, tlink etc:

map file:
Error: Invalid initial stack offset
 Start  Stop   Length Name               Class
 00000H 00021H 00022H RJTEST
 00022H 00022H 00000H
 00030H 00039H 0000AH DATA
 00040H 00040H 00000H SYS
 00040H 1003FH 10000H STACK


tdump of RJTEST.OBJ:
Turbo Dump  Version 4.2.16.1 Copyright (c) 1988, 1996 Borland International
                    Display of File RJTEST.OBJ

000000 THEADR  RJTEST
00000B COMENT  Purge: No , List: Yes, Class: 0   (000h)
    Translator:   Oberon-M (tm) PC  v0.1   

00002E LNAMES
    Name  1: 'RJTEST'
    Name  2: 'DATA'
    Name  3: 'STACK'
    Name  4: 'SYS'
    Name  5: ''
000049 SEGDEF 1 : RJTEST          PARA  PUBLIC                   Length: 0022
000053 SEGDEF 2 : DATA            PARA  PUBLIC                   Length: 000a
00005D SEGDEF 3 : SYS             PARA  PUBLIC                   Length: 0000
000067 SEGDEF 4 :                 BYTE  PUBLIC                   Length: 0000
000071 SEGDEF 5 : STACK           PARA  STACK                    Length: 10000
00007B EXTDEF 1 : 'SYSCALL'             Type: 0 
        2 : 'SYSINIT'             Type: 0 
        3 : 'SYSSTOR'             Type: 0 
        4 : 'SYSABEND'            Type: 0 
        5 : 'SYSLIDIV'            Type: 0 
        6 : 'SYSLIMUL'            Type: 0 
        7 : 'SYSSTGRL'            Type: 0 
0000C2 LEDATA  Segment: DATA           Offset: 0000  Length: 0002
    0000: 00 00                                              ..
0000CB LEDATA  Segment: RJTEST         Offset: 0000  Length: 001B
    0000: E9 02 00 1B 00 FC B8 00  00 8E D8 9A 00 00 00 00   ................
    0010: 55 8B EC 8B E5 5D B8 00  4C CD 21                  U....]..L.!
0000ED FIXUPP
    FixUp: 007  Mode: Seg  Loc: Base        Frame: SI[2]   Target: SI[2]
    FixUp: 00c  Mode: Seg  Loc: Pointer16   Frame: TARGET  Target: EI[2]
0000FA LEDATA  Segment: RJTEST         Offset: 001B  Length: 0007
    0000: 72 6A 74 65 73 74 00                               rjtest.
000108 REGINT  Record type: 70  Length: 000C
    0000: 01 04 01 01 41 04 05 05  81 04 02 02               ....A.......
000118 MODEND(Main Module) Starting address: 01F4:0504


So processing SYS.OBJ with tdstrip didn't help much as the issue of an invalid entry point still exists and the blank byte record still gets inserted as well as the REGINT (70h) record.

As when I get a chance I will do some more testing/investigation. Re the REGINT (70h) record I'm thinking that patching OC.EXE is needed to resolve.

[edit: if IMPORT SYS:=SYSTEM; is missing it seems OC defaults to it]

 

Complete thread:

Back to the forum
Board view  Mix view
13641 Postings in 1207 Threads, 204 registered users, 17 users online (0 registered, 17 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum