home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 508.lha / IO_Expansion_Board / Test / IOPrint.asm < prev    next >
Assembly Source File  |  1991-05-06  |  3KB  |  145 lines

  1. *****************************************************************************
  2. * Program: IOPrint.asm - ©1990 by The Puzzle Factory
  3. *          Prints the register contents for the I/O Expansion board.
  4. *   Usage: 1> IOPrint
  5. * History: 01/22/88 V0.50 Created by Jeff Lavin
  6. *          11/25/90 V0.51 Converted to new syntax, de-ARPed program
  7. *
  8. * [To all: Please don't forget to bump the revision numbers if you do *any*
  9. *          modifications at all.  -Jeff]
  10. *****************************************************************************
  11.  
  12. ;Set Tabs           |       |                 |       |
  13.  
  14.     exeobj
  15.     objfile    'ram:IOPrint'
  16.     macfile 'Includes:IOexp.i'    ;The One & Only include file
  17.  
  18. IOPrint     lea    (DosName,pc),a1    ;Open DOS library
  19.     moveq    #0,d0
  20.     movea.l (SysBase).w,a6
  21.     SYS    OpenLibrary
  22.     movea.l d0,a6
  23.     tst.l    d0
  24.     bne.b    DoIt
  25.     rts
  26.  
  27. DoIt    SYS    Output
  28.     move.l    d0,d4
  29.     beq.b    Cleanup
  30.  
  31.     lea    (Newline,pc),a0
  32.     bsr    Puts
  33.     bsr.b    PrintVIA
  34.     bsr    PrintACIA
  35. Cleanup    movea.l    a6,a1
  36.     movea.l (SysBase).w,a6
  37.     SYS    CloseLibrary
  38.     moveq    #0,d0
  39.     rts
  40.  
  41. PrintVIA    lea    (VIA_Base+VIA0),a3
  42.     lea    (VIA0.msg,pc),a0
  43.     bsr.b    PrintV0
  44.  
  45. PrintV1    lea    (VIA_Base+VIA1),a3
  46.     lea    (VIA1.msg,pc),a0
  47. PrintV0    lea    (FmtArgs),a1
  48.     movea.l    a1,a2
  49.     moveq    #0,d1
  50. 1$    moveq    #0,d0
  51.     move.b    (a3,d1.w),d0
  52.     move.w    d0,(a2)+
  53.     addi.w    #$0100,d1
  54.     cmpi.w    #$1000,d1
  55.     blo.b    1$    ;BLO
  56.     bsr.b    Printf
  57.     rts
  58.  
  59. PrintACIA    lea    (ACIA_Base+ACIA0),a3
  60.     lea    (ACIA0_1.msg,pc),a0
  61.     bsr.b    PrintA
  62.  
  63. PrintA02    lea    (ACIA0_2.msg,pc),a0
  64.     bsr.b    PrintA
  65.  
  66. PrintA11    lea    (ACIA_Base+ACIA1),a3
  67.     lea    (ACIA1_1.msg,pc),a0
  68.     bsr.b    PrintA
  69.  
  70. PrintA12    lea    (ACIA1_2.msg,pc),a0
  71. PrintA    lea    (FmtArgs),a1
  72.     movea.l    a1,a2
  73.     moveq    #0,d1
  74. 1$    moveq    #0,d0
  75.     move.b    (a3,d1.w),d0
  76.     move.w    d0,(a2)+
  77.     addi.w    #$0100,d1
  78.     cmpi.w    #$0400,d1
  79.     blo.b    1$    ;BLO
  80.     bsr.b    Printf
  81.     rts
  82.  
  83. *********************************************************************
  84. * NAME:     Printf()
  85. * FUNCTION: Print formatted strings to stdout.
  86. * INPUTS:   A0 = Format string.
  87. *           A1 = Ptr to arguments.
  88. * RETURN:   None
  89. * SCRATCH:  D0-D1/A0-A1
  90. *********************************************************************
  91.  
  92. Printf    movem.l    a2-a3/a6,-(sp)
  93.     lea    (KPutChar,pc),a2    ;Byte fill routine
  94.     lea    (OutBuf),a3
  95.     move.l    a3,-(sp)
  96.     movea.l    (SysBase).w,a6
  97.     SYS    RawDoFmt    ;Do it!
  98.     movea.l    (sp)+,a0
  99.     movem.l    (sp)+,a2-a3/a6
  100.     bsr.b    Puts
  101.     rts
  102.  
  103. KPutChar    move.b    d0,(a3)+
  104.     rts
  105.  
  106. *************************************************************************
  107. * NAME:     Puts()
  108. * FUNCTION: Writes a message to stdout.
  109. * INPUTS:   A0 = Ptr to message.
  110. * RETURN:   None
  111. * SCRATCH:  D0-D1/A0-A1
  112. *************************************************************************
  113.  
  114. Puts    movem.l    d2-d3,-(sp)
  115.     move.l    a0,d3
  116. 1$    tst.b    (a0)+
  117.     bne.s    1$
  118.     exg    a0,d3
  119.     sub.l    a0,d3
  120.     subq.l    #1,d3    ;Length
  121.     move.l    a0,d2    ;Buffer
  122.     move.l    d4,d1    ;FileHandle
  123.     SYS    Write
  124.     movem.l    (sp)+,d2-d3
  125.     rts
  126.  
  127. DosName    cstr    'dos.library'
  128.  
  129. VIA0.msg    db    'VIA0:  %02x %02x %02x %02x %02x %02x %02x %02x '
  130.     cstr           '%02x %02x %02x %02x %02x %02x %02x %02x',10
  131. VIA1.msg    db    'VIA1:  %02x %02x %02x %02x %02x %02x %02x %02x '
  132.     cstr           '%02x %02x %02x %02x %02x %02x %02x %02x',10
  133. ACIA0_1.msg    cstr    'ACIA0, Unit 1: %02x %02x %02x %02x    ',0
  134. ACIA0_2.msg    cstr           'Unit 2: %02x %02x %02x %02x',10,0
  135. ACIA1_1.msg    cstr    'ACIA1, Unit 1: %02x %02x %02x %02x    ',0
  136. ACIA1_2.msg    db           'Unit 2: %02x %02x %02x %02x'
  137. Newline    cstr    10
  138.  
  139.     SECTION mem,BSS
  140.  
  141. FmtArgs    ds.w    16
  142. OutBuf    ds.b    80
  143.  
  144.     end
  145.