home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 562.lha / ReturnCode / SetRC.asm < prev    next >
Assembly Source File  |  1991-08-06  |  2KB  |  91 lines

  1. ; SetRC .. mostly for testing .. Jim Butterfield 1991Apr19
  2. ; CLI only
  3. ; exec calls
  4. _LVOOpenLibrary  EQU -$228
  5. _LVOCloseLibrary EQU -$19E
  6. ThisTask         EQU $114
  7. ; dos calls
  8. _LVOWrite        EQU -$30
  9. _LVOOutput       EQU -$3C
  10. ; process structure
  11. pr_CLI           EQU $AC
  12.  
  13.         move.l a0,a2
  14.         lea    dosName(pc),a1
  15.         moveq  #0,d0
  16.         move.l 4.w,a6
  17.         move.l ThisTask(a6),a5
  18.         jsr    _LVOOpenLibrary(a6)
  19.         move.l d0,a6
  20.         moveq  #5,d7        ; WARN
  21.         tst.l  d0
  22.         beq    exit
  23.         moveq  #0,d5        ; flag
  24.         moveq  #0,d6        ; param value
  25.         moveq  #0,d0
  26. prmlp   move.b (a2)+,d0
  27.         cmp.b  #$20,d0
  28.         bcs.s  main
  29.         cmp.b  #'-',d0
  30.         bne.s  1$
  31.         moveq  #-1,d5
  32. 1$      cmp.b  #$30,d0
  33.         bcs.s  prmlp
  34.         cmp.b  #$3a,d0
  35.         bcc.s  prmlp
  36.         and.b  #$f,d0
  37.         mulu   #10,d6
  38.         add.l  d0,d6
  39.         move.b #1,d5
  40.         bra.s  prmlp
  41. main    tst.b  d5
  42.         beq.s  main2
  43.         move.l d6,d7
  44.         tst.l  d5
  45.         bpl.s  dosexit
  46.         moveq  #0,d7
  47.         sub.l  d6,d7
  48.         bra.s  dosexit
  49. main2   jsr    _LVOOutput(a6)
  50.         move.l d0,d4
  51.         move.l pr_CLI(A5),a4
  52.         add.l  a4,a4
  53.         add.l  a4,a4
  54.         move.l $C(a4),d7     ; return code
  55.         moveq  #0,d5
  56.         move.l d7,d6
  57.         bpl.s  posit
  58.         moveq  #0,d6
  59.         sub.l  d7,d6
  60.         moveq  #-1,d5
  61.         move.l d4,d1
  62.         lea    neg(pc),a0
  63.         move.l a0,d2
  64.         moveq  #1,d3
  65.         jsr    _LVOWrite(a6)
  66. ; d6 contains value for decimal conversion
  67. posit   link   a3,#-$20
  68.         move.l a3,a2
  69.         move.b #10,-(a2)   ;NewLine
  70. 2$      divu.w #10,d6
  71.         swap   d6
  72.         or.b   #$30,d6
  73.         move.b d6,-(a2)
  74.         move.b #0,d6
  75.         swap   d6
  76.         bne.s  2$
  77.         move.l d4,d1
  78.         move.l a2,d2
  79.         move.l a3,d3
  80.         sub.l  d2,d3
  81.         jsr    _LVOWrite(a6)
  82.         unlk   a3        
  83. dosexit move.l a6,a1
  84.         move.l 4.w,a6
  85.         jsr    _LVOCloseLibrary(a6)
  86. exit    move.l d7,d0
  87.         rts
  88.         dc.b '$VER:SetRC 1.0',$A
  89. dosName dc.b 'dos.library',0
  90. neg     dc.b '-'
  91.