home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 364b.lha / PCQ_v1.1 / Runtime / System / Parameters.asm < prev    next >
Encoding:
Assembly Source File  |  1990-04-08  |  1.7 KB  |  120 lines

  1. *
  2. *    Parameters.asm
  3. *        of PCQ Pascal
  4. *
  5. *    These routines handle the CommandLine.
  6. *
  7.  
  8.     SECTION    Params,CODE
  9.  
  10.     XREF    _CommandLine
  11.     XREF    _strcpy
  12.     XREF    _p%WorkBenchMsg
  13.  
  14. SkipParam
  15.     move.b    0(a0,d1.w),d0
  16.     cmp.b    #'"',d0
  17.     beq.s    4$
  18.     tst.b    d0
  19.     beq.s    1$
  20.     cmp.b    #' ',d0
  21.     ble.s    1$
  22.     cmp.b    #127,d0
  23.     bgt.s    1$
  24.     addq.w    #1,d1
  25.     bra.s    SkipParam
  26. 1$    rts
  27. 4$    addq.w    #1,d1
  28. 2$    move.b    0(a0,d1.w),d0
  29.     beq.s    1$
  30.     cmp.b    #'"',d0
  31.     beq.s    3$
  32.     addq.w    #1,d1
  33.     bra.s    2$
  34. 3$    addq.w    #1,d1
  35.     rts
  36.     
  37. NextParam
  38.     move.b    0(a0,d1.w),d0
  39.     beq.s    1$
  40.     cmp.b    #' ',d0
  41.     bgt.s    1$
  42.     addq.w    #1,d1
  43.     bra.s    NextParam
  44. 1$    rts
  45.  
  46. CopyParam
  47.     move.l    8(sp),a1        ; add offset of return address
  48.     move.l    (a1),a1
  49.     cmp.b    #'"',0(a0,d1.w)
  50.     bne.s    JustChars
  51.     addq.w    #1,d1
  52. 1$    move.b    0(a0,d1.w),d0
  53.     beq.s    DoneCopying
  54.     cmp.b    #'"',d0
  55.     beq.s    DoneCopying
  56.     cmp.b    #10,d0
  57.     beq.s    DoneCopying
  58.     move.b    d0,(a1)+
  59.     addq.w    #1,d1
  60.     bra.s    1$
  61. JustChars
  62.     move.b    0(a0,d1.w),d0
  63.     cmp.b    #' ',d0
  64.     ble.s    DoneCopying
  65.     cmp.b    #127,d0
  66.     bgt.s    DoneCopying
  67.     move.b    d0,(a1)+
  68.     addq.w    #1,d1
  69.     bra.s    JustChars
  70. DoneCopying
  71.     move.b    #0,(a1)
  72.     rts
  73.  
  74. *    Syntax:    GetParam(Number : Short; var S : string);
  75.  
  76.     XDEF    _GetParam
  77. _GetParam
  78.     move.l    _p%WorkBenchMsg,a0
  79.     move.l    a0,d0            ; to set flags
  80.     bne    FromWorkbench
  81.     move.w    #0,d1
  82.     move.l    _CommandLine,a0
  83.     bsr    NextParam
  84. 1$    cmp.w    #1,8(sp)
  85.     beq    AtParam
  86.     bsr    SkipParam
  87.     bsr    NextParam
  88.     subq.w    #1,8(sp)
  89.     bra.s    1$
  90. AtParam
  91.     bsr    CopyParam
  92.     rts
  93. FromWorkbench
  94.     move.l    28(a0),d0
  95.     cmp.w    8(sp),d0
  96.     ble.s    2$
  97.     tst.w    8(sp)
  98.     ble.s    2$
  99.     move.l    36(a0),a0
  100.     move.w    8(sp),d0
  101.     ext.l    d0
  102.     lsl.l    #3,d0
  103.     adda.l    d0,a0
  104.     move.l    4(a0),-(sp)
  105.     move.l    8(sp),a0
  106.     move.l    (a0),-(sp)
  107.     jsr    _strcpy
  108.     addq.l    #8,sp
  109.     rts
  110. 2$    move.l    4(sp),a0
  111.     move.b    #0,(a0)
  112.     rts
  113.  
  114.     XDEF    _GetStartupMsg
  115. _GetStartupMsg
  116.     move.l    _p%WorkBenchMsg,d0
  117.     rts
  118.  
  119.     END
  120.