home *** CD-ROM | disk | FTP | other *** search
/ Supremacy 2 / Supremacy-2.iso / Pompey / PP_114.MSA / TRAPPER.S < prev   
Text File  |  1992-10-31  |  15KB  |  614 lines

  1. * Trapper: catches GEMDOS calls and lists them to printer or screen (well
  2. * I'm not too sure about the screen option, I only shoved it in there when
  3. * I ran out of printer paper and I soon got some more so didn't bother
  4. * updating the screen routines from then on). Coded by The Alien, set your
  5. * tabs to 13... I find this code very useful for games that use files, you
  6. * can see just how they access the files, how much is read at a time, etc.
  7.  
  8.     opt    o+,x+
  9.  
  10. start    bra.s    past_files
  11.  
  12. progpath    dc.b    "E:\",0    location of your program
  13. program    dc.b    "TEST"    name of the program
  14. envcom    dc.b    0
  15.  
  16. screen    equ    1
  17. printer    equ    0
  18.  
  19. output_type    equ    printer
  20.  
  21. past_files    clr.l    -(sp)
  22.     move.w    #$20,-(sp)
  23.     trap    #1
  24.     lea    stack,sp
  25.     move.l    sp,usp
  26.  
  27.     pea    (end-(start-256))
  28.     pea    start-256(pc)
  29.     pea    $4a0000
  30.     trap    #1
  31.     lea    12(sp),sp
  32.  
  33.     ifne    output_type
  34.     move.l    #screenspace+256,d0
  35.     clr.b    d0
  36.     move.l    d0,scraddr+2
  37.     endc
  38.  
  39.     cmp.b    #':',progpath+1
  40.     bne.s    nodrivespec
  41.     move.b    progpath(pc),d0
  42.     or.b    #32,d0
  43.     sub.b    #'a',d0
  44.     move.w    d0,-(sp)
  45.     move.w    #$e,-(sp)
  46.     trap    #1
  47.     addq.l    #4,sp
  48.  
  49. nodrivespec    pea    progpath(pc)
  50.     move.w    #$3b,-(sp)
  51.     trap    #1
  52.     addq.l    #6,sp
  53.  
  54.     move.l    $84.w,oldtrap1+2
  55.     move.l    #newtrap1,$84.w
  56.  
  57.     pea    envcom(pc)
  58.     move.l    (sp),-(sp)
  59.     pea    program(pc)
  60.     pea    $4b0000
  61.     trap    #1
  62.     lea    16(sp),sp
  63.  
  64.     move.l    oldtrap1+2(pc),$84.w
  65.     clr.w    -(sp)
  66.     trap    #1
  67.  
  68. newtrap1    move.l    a0,dotrap+2
  69.     btst    #5,(sp)        super mode bit set?
  70.     bne.s    super
  71.     move.l    usp,a0        user stack pointer
  72.     bra.s    user
  73.  
  74. super    lea    6(sp),a0        SSP plus return addr.l and SR.w
  75.  
  76. user    tst.w    intrap1
  77.     bne.s    dotrap
  78.  
  79.     cmp.w    #$57,(a0)    more than $57? crazee baby!
  80.     bgt    unused_call
  81.  
  82.     movem.l    d0-a6,-(sp)
  83.     lea    trap1funcs(pc),a1
  84.     moveq    #0,d0
  85.     move.w    (a0)+,d0
  86.     lsl.w    #2,d0
  87.     add.l    d0,a1
  88.     tst.l    (a1)
  89.     beq.s    no_patch
  90.  
  91.     move.l    (a1),a1
  92.     jsr    (a1)
  93.  
  94. no_patch    movem.l    (sp)+,d0-a6
  95.  
  96. dotrap    lea    0.l,a0
  97. oldtrap1    jmp    0.l    becomes JMP <old trap #1 vector>
  98.  
  99. *--------------------------------------------------------------------------
  100. dectoasc    moveq    #5,d1    gotta fix this to work with numbers
  101. d2aloop    divu    #10,d0    larger than 65535 sometime!
  102.     swap    d0
  103.     add.b    #'0',d0
  104.     move.b    d0,-(a6)
  105.     clr.w    d0
  106.     swap    d0
  107.     dbf    d1,d2aloop
  108.     rts
  109. *--------------------------------------------------------------------------
  110. hextoasc    lea    h2anums(pc),a1
  111. numdigits    moveq    #7,d1
  112.     move.l    d0,d2
  113. h2aloop    and.l    #$f,d0
  114.     move.b    (a1,d0.w),d0
  115.     move.b    d0,-(a6)
  116.     lsr.l    #4,d2
  117.     move.l    d2,d0
  118.     dbf    d1,h2aloop
  119.     rts
  120. h2anums    dc.b    "0123456789ABCDEF"
  121. *--------------------------------------------------------------------------
  122. printout
  123.     ifne    output_type
  124.     tst.b    screen_on
  125.     bne.s    nochange
  126.     move.l    $44e.w,a0
  127.     move.l    a0,oldscr+2
  128.     lea    savedscreen,a1
  129.     move.w    #$1f3f,d0
  130. savepic    move.l    (a0)+,(a1)+
  131.     dbf    d0,savepic
  132.     move.b    $44c.w,oldres+3
  133.     move.w    #1,-(sp)
  134. scraddr    pea    0.l
  135.     move.l    (sp),-(sp)
  136.     move.w    #5,-(sp)
  137.     trap    #14
  138.     lea    12(sp),sp
  139.     st    screen_on
  140. nochange    pea    (a6)
  141.     move.w    #9,-(sp)
  142.     trap    #1
  143.     addq.l    #6,sp
  144.     tst.b    pauser
  145.     beq.s    nopause
  146.     sf    pauser
  147.     pea    hitspace(pc)
  148.     move.w    #9,-(sp)
  149.     trap    #1
  150.     addq.l    #6,sp
  151. waitspace    move.w    #$777,$ffff8240.w
  152.     clr.w    $ffff8246.w
  153.     cmp.b    #$39,$fffffc02.w
  154.     bne.s    waitspace
  155. oldres    move.w    #0,-(sp)
  156. oldscr    pea    0.l
  157.     move.l    (sp),-(sp)
  158.     move.w    #5,-(sp)
  159.     trap    #14
  160.     lea    12(sp),sp
  161.     lea    savedscreen,a0
  162.     move.l    oldscr+2(pc),a1
  163.     move.w    #$1f3f,d0
  164. restpic    move.l    (a0)+,(a1)+
  165.     dbf    d0,restpic
  166.     sf    screen_on
  167. nopause
  168.     elseif
  169. *    movem.l    d1-a6,-(sp)
  170. *    move.w    #$11,-(sp)    printer on?
  171. *    trap    #1    causes problems with printout
  172. *    addq.l    #2,sp    for some reason...
  173. *    movem.l    (sp)+,d1-a6
  174. *    tst.w    d0
  175. *    beq.s    doneprint
  176.     moveq    #0,d0
  177. printloop    move.b    (a6)+,d0
  178.     beq.s    doneprint
  179.     move.w    d0,-(sp)
  180.     move.w    #5,-(sp)
  181.     trap    #1
  182.     addq.l    #4,sp
  183.     tst.l    d0
  184.     bmi.s    printloop
  185. doneprint
  186.     endc
  187.     rts
  188. *--------------------------------------------------------------------------
  189. p_term0    lea    text0(pc),a6
  190.     bra    common_1part
  191. text0    dc.b    "P_TERM0",0
  192. *--------------------------------------------------------------------------
  193. set_drv    move.w    (a0)+,d0
  194.     add.b    #'A',d0
  195.     move.b    d0,drv0e
  196.     lea    text0e(pc),a6
  197.     bra    common_1part
  198. text0e    dc.b    "SET_DRV "
  199. drv0e    dc.b    "A:",0
  200. *--------------------------------------------------------------------------
  201. current_disk    lea    text19(pc),a6
  202.     bra    common_1part
  203. text19    dc.b    "CURRENT DISK",0
  204. *--------------------------------------------------------------------------
  205. set_dta    move.l    (a0)+,d0
  206.     lea    addr1a(pc),a6
  207.     bsr    hextoasc
  208.     lea    text1a(pc),a6
  209.     bra    common_1part
  210. text1a    dc.b    "SET_DTA to $00000000"
  211. addr1a    dc.b    0
  212. *--------------------------------------------------------------------------
  213. get_dta    lea    text2f(pc),a6
  214.     bra    common_1part
  215. text2f    dc.b    "GET_DTA",0
  216. *--------------------------------------------------------------------------
  217. get_vers    lea    text30(pc),a6
  218.     bra    common_1part
  219. text30    dc.b    "GET VERSION NUMBER",0
  220. *--------------------------------------------------------------------------
  221. p_termres    move.l    (a0)+,d0
  222.     lea    amount31(pc),a6
  223.     bsr    hextoasc
  224.     move.w    (a0)+,d0
  225.     tst.w    d0
  226.     bmi.s    negative31
  227.     move.b    #'+',plusminus31
  228.     bra.s    positive31
  229. negative31    move.b    #'-',plusminus31
  230.     neg.w    d0
  231. positive31    divu    #10,d0
  232.     move.w    #'00',return31
  233.     add.b    d0,return31
  234.     swap    d0
  235.     add.b    d0,return31+1
  236.     lea    text31(pc),a6
  237.     bra    common_1part
  238.     dc.b    0
  239. text31    dc.b    "P_TERMRES returning "
  240. plusminus31    dc.b    "+"
  241. return31    dc.b    "00, keeping $00000000"
  242. amount31    dc.b    " bytes",0
  243. *--------------------------------------------------------------------------
  244. d_free    move.l    (a0)+,d0
  245.     lea    addr36(pc),a6
  246.     bsr    hextoasc
  247.     bra    commonto36
  248. text36    dc.b    "GET DISK FREE SPACE to $00000000"
  249. addr36    dc.b    " of ",0
  250. *--------------------------------------------------------------------------
  251. mk_dir    lea    text39(pc),a6
  252. commonto3a    move.l    (a0)+,a5
  253.     bra.s    common_2part
  254. text39    dc.b    "MK_DIR: ",0
  255. *--------------------------------------------------------------------------
  256. rm_dir    lea    text3a(pc),a6
  257.     bra.s    commonto3a
  258. text3a    dc.b    "RM_DIR: ",0
  259. *--------------------------------------------------------------------------
  260. ch_dir    move.l    (a0)+,a5        directory name
  261.     lea    text3b(pc),a6
  262.     bra.s    common_2part
  263. text3b    dc.b    "CH_DIR to ",0
  264. *--------------------------------------------------------------------------
  265. f_create    move.l    (a0)+,a5        filename
  266.     moveq    #0,d0
  267.     move.w    (a0)+,d0        attribute
  268.     divu    #10,d0
  269.     move.w    #'00',attr3c
  270.     add.b    d0,attr3c
  271.     swap    d0
  272.     add.b    d0,attr3c+1
  273.     lea    text3c(pc),a6
  274.     opt    w-
  275. common_2part    bsr    printout
  276.     move.l    a5,a6
  277. common_1part    bsr    printout
  278.     lea    crlf(pc),a6
  279.     st    pauser
  280.     bsr    printout
  281.     opt    w+
  282.     rts
  283.     dc.b    0
  284. text3c    dc.b    "F_CREATE with attribute of "
  285. attr3c    dc.b    "00, ",0
  286. *--------------------------------------------------------------------------
  287. f_open    move.l    (a0)+,a5        filename
  288.     moveq    #0,d0
  289.     move.w    (a0)+,d0        attribute
  290.     divu    #10,d0
  291.     move.w    #'00',attr3d
  292.     add.b    d0,attr3d
  293.     swap    d0
  294.     add.b    d0,attr3d+1
  295.     lea    text3d(pc),a6
  296.     bra.s    common_2part
  297.     rts
  298.     dc.b    0
  299. text3d    dc.b    "F_OPEN with attribute of "
  300. attr3d    dc.b    "00, ",0
  301. *--------------------------------------------------------------------------
  302. f_close    moveq    #0,d0
  303.     move.w    (a0)+,d0        handle
  304.     divu    #10,d0
  305.     move.w    #'00',handle3e
  306.     add.b    d0,handle3e
  307.     swap    d0
  308.     add.b    d0,handle3e+1
  309.     lea    text3e(pc),a6
  310.     bra    common_1part
  311.     dc.b    0
  312. text3e    dc.b    "F_CLOSE handle "
  313. handle3e    dc.b    "00.",10,0
  314. *--------------------------------------------------------------------------
  315. f_read    moveq    #0,d0
  316.     move.w    (a0)+,d0        handle
  317.     divu    #10,d0
  318.     move.w    #'00',handle3f
  319.     add.b    d0,handle3f
  320.     swap    d0
  321.     add.b    d0,handle3f+1
  322.     move.l    (a0)+,d0        length to read
  323.     lea    len3f(pc),a6
  324.     bsr    dectoasc
  325.     move.l    (a0)+,d0        address to read to
  326.     lea    addr3f(pc),a6
  327.     bsr    hextoasc
  328.     lea    text3f(pc),a6
  329.     bra    common_1part
  330. text3f    dc.b    "F_READ handle "
  331. handle3f    dc.b    "00, 000000"
  332. len3f    dc.b    " bytes to $00000000"
  333. addr3f    dc.b    ".",0
  334. *--------------------------------------------------------------------------
  335. f_write    moveq    #0,d0
  336.     move.w    (a0)+,d0        handle
  337.     divu    #10,d0
  338.     move.w    #'00',handle40
  339.     add.b    d0,handle40
  340.     swap    d0
  341.     add.b    d0,handle40+1
  342.     move.l    (a0)+,d0        length to write
  343.     lea    len40(pc),a6
  344.     bsr    dectoasc
  345.     move.l    (a0)+,d0        address to write from
  346.     lea    addr40(pc),a6
  347.     bsr    hextoasc
  348.     lea    text40(pc),a6
  349.     bra    common_1part
  350.     dc.b    0
  351. text40    dc.b    "F_WRITE handle "
  352. handle40    dc.b    "00, 000000"
  353. len40    dc.b    " bytes from $00000000"
  354. addr40    dc.b    ".",0
  355. *--------------------------------------------------------------------------
  356. f_unlink    move.l    (a0)+,a5
  357.     lea    text41(pc),a6
  358.     bra    common_2part
  359. text41    dc.b    "F_UNLINK ",0
  360. *--------------------------------------------------------------------------
  361. f_lseek    move.l    (a0)+,d0
  362.     move.b    #'-',plusminus42
  363.     tst.l    d0
  364.     bmi.s    negative42
  365.     move.b    #'+',plusminus42
  366. negative42    lea    len42(pc),a6
  367.     bsr    dectoasc
  368.     moveq    #0,d0
  369.     move.w    (a0)+,d0
  370.     divu    #10,d0
  371.     move.w    #'00',handle42
  372.     add.b    d0,handle42
  373.     swap    d0
  374.     add.b    d0,handle42+1
  375.     moveq    #0,d0
  376.     move.w    (a0)+,d0
  377.     lsl.w    #2,d0
  378.     lea    lseeks(pc,d0.l),a6
  379.     move.l    (a6),a5
  380.     lea    text42(pc),a6
  381.     bra    common_2part
  382. lseeks    dc.l    lseek0,lseek1,lseek2
  383. text42    dc.b    "L_SEEK handle "
  384. handle42    dc.b    "00, "
  385. plusminus42    dc.b    "+000000"
  386. len42    dc.b    " bytes from ",0
  387. lseek0    dc.b    "start of file.",0
  388. lseek1    dc.b    "current file pointer.",0
  389. lseek2    dc.b    "end of file.",0
  390. *--------------------------------------------------------------------------
  391. get_dir    move.l    (a0)+,d0
  392.     lea    addr47(pc),a6
  393.     bsr    hextoasc
  394.     lea    text47(pc),a6
  395. commonto36    lea    current47(pc),a5
  396.     move.w    (a0)+,d0
  397.     add.b    #'A'-1,d0
  398.     cmp.b    #'A'-1,d0
  399.     beq    common_2part
  400.     lea    drv47(pc),a5
  401.     move.b    d0,(a5)
  402.     bra    common_2part
  403. text47    dc.b    "GET_DIR to $00000000"
  404. addr47    dc.b    " on ",0
  405. current47    dc.b    "current drive",0
  406. drv47    dc.b    "A:",0
  407. *--------------------------------------------------------------------------
  408. p_exec    move.w    (a0)+,d0        mode
  409.     divu    #10,d0
  410.     move.w    #'00',mode4b
  411.     add.b    d0,mode4b
  412.     swap    d0
  413.     add.b    d0,mode4b+1
  414.     move.l    (a0)+,a3        filename
  415.     move.l    (a0)+,a4        command line
  416.     move.l    (a0)+,a5        environment
  417.     lea    text4b(pc),a6
  418.     bsr    printout
  419.     move.l    a3,a6
  420.     bsr    printout
  421.     lea    text4b2(pc),a6
  422.     bsr    printout
  423.     move.l    a4,a6
  424.     tst.b    (a6)
  425.     bne.s    goodcom4b
  426.     lea    none4b(pc),a6
  427. goodcom4b    bsr    printout
  428.     lea    text4b3(pc),a6
  429.     tst.b    (a5)
  430.     bne    common_2part
  431.     lea    none4b(pc),a5
  432.     bra    common_2part
  433. text4b    dc.b    "P_EXEC of ",0
  434. text4b2    dc.b    ", mode "
  435. mode4b    dc.b    "00, command line: ",0
  436. text4b3    dc.b    ", environment: ",0
  437. none4b    dc.b    "NONE",0
  438.  
  439. *--------------------------------------------------------------------------
  440. p_term    move.w    (a0)+,d0
  441.     tst.w    d0
  442.     bmi.s    negative4c
  443.     move.b    #'+',plusminus4c
  444.     bra.s    positive4c
  445. negative4c    move.b    #'-',plusminus4c
  446.     neg.w    d0
  447. positive4c    divu    #10,d0
  448.     move.w    #'00',result4c
  449.     add.b    d0,result4c
  450.     swap    d0
  451.     add.b    d0,result4c+1
  452.     lea    text4c(pc),a6
  453.     bra    common_1part
  454.     dc.b    0
  455. text4c    dc.b    "P_TERM with result of "
  456. plusminus4c    dc.b    "+"
  457. result4c    dc.b    "00",0
  458. *--------------------------------------------------------------------------
  459. s_first    move.l    (a0)+,a5
  460.     move.w    (a0)+,d0
  461.     divu    #10,d0
  462.     move.w    #'00',attr4e
  463.     add.b    d0,attr4e
  464.     swap    d0
  465.     add.b    d0,attr4e+1
  466.     lea    text4e(pc),a6
  467.     bra    common_2part
  468. text4e    dc.b    "S_FIRST with attribute of "
  469. attr4e    dc.b    "00, ",0
  470. *--------------------------------------------------------------------------
  471. s_next    lea    text4f(pc),a6
  472.     bra    common_1part
  473. text4f    dc.b    "S_NEXT",0
  474. *--------------------------------------------------------------------------
  475. f_rename    move.w    (a0)+,d0
  476.     divu    #10,d0
  477.     move.w    #'00',mode56
  478.     add.b    d0,mode56
  479.     swap    d0
  480.     add.b    d0,mode56
  481.     lea    text56(pc),a6
  482.     bsr    printout
  483.     move.l    (a0)+,a6
  484.     bsr    printout
  485.     lea    text562(pc),a6
  486.     move.l    (a0)+,a5
  487.     bra    common_2part
  488. text56    dc.b    "F_RENAME mode "
  489. mode56    dc.b    "00; "
  490. text562    dc.b    " becomes ",0
  491. *--------------------------------------------------------------------------
  492. unused_call    move.w    -2(a0),d0
  493.     divu    #16,d0
  494.     lea    h2anums(pc),a6
  495.     move.b    (a6,d0.w),unusednum
  496.     swap    d0
  497.     move.b    (a6,d0.w),unusednum+1
  498.     bra    common_1part
  499. textunused    dc.b    "UNUSED CALL: $"
  500. unusednum    dc.b    "00",0
  501. *--------------------------------------------------------------------------
  502.     data    *-------------------------------------------------
  503.  
  504. crlf    dc.b    13,10,0
  505.  
  506. hitspace    dc.b    13,10,10,"Hit space to continue.",0
  507. pauser    dc.b    0
  508. screen_on    dc.b    0
  509.  
  510. * trapped functions; either point to 0 ("ignore this function"), or the
  511. * address of the routine to tell the printer about the function being
  512. * called.
  513. trap1funcs    dc.l    p_term0    $00 terminate
  514.     dc.l    0    $01 conin
  515.     dc.l    0    $02 conout
  516.     dc.l    0    $03 auxiliary input
  517.     dc.l    0    $04 auxiliary output
  518.     dc.l    0    $05 printer output
  519.     dc.l    0    $06 rawconio
  520.     dc.l    0    $07 direct conin without echo
  521.     dc.l    0    $08 conin without echo
  522.     dc.l    0    $09 print line
  523.     dc.l    0    $0a readline
  524.     dc.l    0    $0b constat
  525.     dc.l    unused_call    $0c UNUSED
  526.     dc.l    unused_call    $0d UNUSED
  527.     dc.l    set_drv    $0e setdrv
  528.     dc.l    unused_call    $0f UNUSED
  529.     dc.l    0    $10 conout stat
  530.     dc.l    0    $11 prtout stat
  531.     dc.l    0    $12 auxin stat
  532.     dc.l    0    $13 auxout stat
  533.     dc.l    unused_call    $14 UNUSED
  534.     dc.l    unused_call    $15 UNUSED
  535.     dc.l    unused_call    $16 UNUSED
  536.     dc.l    unused_call    $17 UNUSED
  537.     dc.l    unused_call    $18 UNUSED
  538.     dc.l    current_disk    $19 current disk
  539.     dc.l    set_dta    $1a set disk transfer address
  540.     dc.l    unused_call    $1b UNUSED
  541.     dc.l    unused_call    $1c UNUSED
  542.     dc.l    unused_call    $1d UNUSED
  543.     dc.l    unused_call    $1e UNUSED
  544.     dc.l    unused_call    $1f UNUSED
  545.     dc.l    0    $20 super
  546.     dc.l    unused_call    $21 UNUSED
  547.     dc.l    unused_call    $22 UNUSED
  548.     dc.l    unused_call    $23 UNUSED
  549.     dc.l    unused_call    $24 UNUSED
  550.     dc.l    unused_call    $25 UNUSED
  551.     dc.l    unused_call    $26 UNUSED
  552.     dc.l    unused_call    $27 UNUSED
  553.     dc.l    unused_call    $28 UNUSED
  554.     dc.l    unused_call    $29 UNUSED
  555.     dc.l    0    $2a get date
  556.     dc.l    0    $2b set date
  557.     dc.l    0    $2c get time
  558.     dc.l    0    $2d set time
  559.     dc.l    unused_call    $2e UNUSED
  560.     dc.l    get_dta    $2f get disk transfer address
  561.     dc.l    get_vers    $30 get version number
  562.     dc.l    p_termres    $31 keep process
  563.     dc.l    unused_call    $32 UNUSED
  564.     dc.l    unused_call    $33 UNUSED
  565.     dc.l    unused_call    $34 UNUSED
  566.     dc.l    unused_call    $35 UNUSED
  567.     dc.l    d_free    $36 get disk free space
  568.     dc.l    unused_call    $37 UNUSED
  569.     dc.l    unused_call    $38 UNUSED
  570.     dc.l    mk_dir    $39 mkdir
  571.     dc.l    rm_dir    $3a rmdir
  572.     dc.l    ch_dir    $3b chdir
  573.     dc.l    f_create    $3c create
  574.     dc.l    f_open    $3d open
  575.     dc.l    f_close    $3e close
  576.     dc.l    f_read    $3f read
  577.     dc.l    f_write    $40 write
  578.     dc.l    f_unlink    $41 unlink
  579.     dc.l    f_lseek    $42 lseek
  580.     dc.l    0    $43 change mode
  581.     dc.l    unused_call    $44 UNUSED
  582.     dc.l    0    $45 dup
  583.     dc.l    0    $46 force
  584.     dc.l    get_dir    $47 getdir
  585.     dc.l    0    $48 malloc
  586.     dc.l    0    $49 mfree
  587.     dc.l    0    $4a setblock
  588.     dc.l    p_exec    $4b exec
  589.     dc.l    p_term    $4c pterm
  590.     dc.l    unused_call    $4d UNUSED
  591.     dc.l    s_first    $4e sfirst
  592.     dc.l    s_next    $4f snext
  593.     dc.l    unused_call    $50 UNUSED
  594.     dc.l    unused_call    $51 UNUSED
  595.     dc.l    unused_call    $52 UNUSED
  596.     dc.l    unused_call    $53 UNUSED
  597.     dc.l    unused_call    $54 UNUSED
  598.     dc.l    unused_call    $55 UNUSED
  599.     dc.l    f_rename    $56 rename
  600.     dc.l    0    $57 get/set date & time of file
  601.  
  602.     bss    *-------------------------------------------------
  603.  
  604. intrap1    ds.w    1
  605.  
  606.     ds.l    100
  607. stack    ds.l    1
  608.  
  609.     ifne    output_type
  610. screenspace    ds.l    32256/4
  611. savedscreen    ds.l    32000/4
  612.     endc
  613. end
  614.