home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / zen / ibm.src < prev    next >
Text File  |  1989-09-07  |  1KB  |  51 lines

  1. \ Print segment:offset.
  2. : S:O ( seg off)
  3.    0 <# #S 2DROP [CHAR] : HOLD 0 #S #> TYPE SPACE ;
  4.  
  5. \ Long Fuller dump--  80-column format.
  6. : LDUMP ( off seg n)
  7.   ?DUP IF  BASE @ >R  HEX
  8.            CR  >R  SWAP 2DUP S:O ." --"  R>
  9.            OVER 16 MOD  DUP 3 * SPACES   ." /"
  10.            NEGATE /STRING  15 +  -16 AND   OVER + SWAP
  11.            DO  CR DUP I S:O SPACE  I 16 + I
  12.               DO    I OVER LC@ 0 <# # # #> TYPE  SPACE
  13.               LOOP  SPACE  I 16 + I
  14.               DO    I OVER LC@  127 AND BL MAX EMIT
  15.               LOOP  16
  16.           +LOOP  CR  R> BASE !  0
  17.        THEN  2DROP ;
  18.  
  19. VARIABLE BUF
  20.   510 ALLOT
  21.  
  22. VARIABLE SAVE.FCB
  23.   50 ALLOT
  24.  
  25. HEX
  26. CREATE EXE.TBL
  27.    5A4D ,        ( Signature)
  28.    0 , 0101 ,    ( Header + 64K data + 64K code in sectors)
  29.    1 ,           ( Only reloc item is DGROUP in Coldstart)
  30.    20 ,          ( Header 32 paras = 512 bytes)
  31.    0 , -1 ,      ( Min and max paras above program)
  32.    0 ,           ( Stack relative segment)
  33.    FFFE ,        ( Initial stack pointer)
  34.    0 ,           ( Checksum not used)
  35.    'SAVE ,       ( Initial instruction pointer)
  36.    CSEG DSEG - , ( Code relative segment)
  37.    1C ,          ( Offset of relocation table)
  38.    0 ,           ( 0 = memory resident)
  39.    'SAVE 2 + ,   ( Relocation table: )
  40.    CSEG DSEG - ,
  41. DECIMAL
  42.  
  43. : SAVE
  44.    " SAVE.EXE" SAVE.FCB FMAKE  0= ABORT" Can't Save"
  45.    BUF 512 ERASE  EXE.TBL BUF 32 MOVE
  46.    BUF 512 SAVE.FCB WRITE-FILE
  47.    SAVE.FCB CLOSE-FILE ;
  48.  
  49.  
  50.  
  51.