 PAGE   1 [3.3a] 6/28/89 17:44:01  ASSEMBLY OF SR.TEXT

PASS 1 COMPLETE. ERRORS: 0
    1                       *  sccs info:  @(#)  sr  8.1  84/05/04  00:21:50  *
    2                       
    3                                       nosyms
    4                       
    5                       
    6                       *
    7                       * global or common symbol declarations
    8                       *
    9                                       nolist
  195                       
  196                       *
  197                       * BOOTROM stolen low RAM area pointer
  198                       *
  199             FFFF FED4 f_area          equ     $FFFFFED4
  200                       

 PAGE   2 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE JUMP TABLES

  203                       *******************************************************************************
  204                       *                       Sector-Oriented Device Jump Tables                    *
  205                       *******************************************************************************
  206                       
  207                       *
  208                       * Driver List Jump Tables
  209                       *
  210                                       def     d_sodLIF
  211                                       def     d_sodSDF
  212                                       def     d_sodUNIX
  213                       
  214                                       refa    RISOD_init
  215                                       refa    RISOD_fopen
  216                                       refa    RISOD_read
  217                       
  218                       
  219             0000 0000 d_sodLIF        equ *
  220             0000 0000 d_sodSDF        equ *
  221             0000 0000 d_sodUNIX       equ *
  222                       
  223    00000000 6000 FFFE                 bra     RISOD_init              init
  224    00000004 6000 FFFA                 bra     RISOD_fopen             fopen
  225    00000008 6000 FFF6                 bra     RISOD_read              read
  226    0000000C 6000 00D6                 bra     menu                    menu
  227    00000010 4E75                      rts                             fclose

 PAGE   3 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  230                       *******************************************************************************
  231                       *                    Sector-Oriented Device Steering Routines                 *
  232                       *******************************************************************************
  233                       
  234                        mname  sr
  235                       
  236                        src    module sr;  {steering routines}
  237                        src
  238                        src    import
  239                        src      brdecs;
  240                        src
  241                        src    export
  242                        src
  243                        src      procedure init_links;
  244                        src
  245                       *         further export declarations scattered within the assembly module
  246                       
  247                       
  248                       *
  249                       * module initialization routine
  250                       *
  251                                       def     sr_sr
  252                       
  253    00000012 4E75      sr_sr           rts
  254                       
  255                       
  256                       *
  257                       * soft link initialization routine
  258                       *
  259                                       def     sr_init_links
  260                       
  261    00000014 2078 FED4 sr_init_links   movea.l f_area,a0       BOOT ROM stolen low RAM area ptr
  262                       
  263    00000018 43FA 00DA                 lea     ddl,a1          device driver list head
  264    0000001C 2149 0024                 move.l  a1,dd_start(a0) initialize the soft link
  265                       
  266    00000020 43FA 004A                 lea     dml,a1          directory manager list head
  267    00000024 2149 0028                 move.l  a1,dm_start(a0) initialize the soft link
  268                       
  269    00000028 4E75                      rts

 PAGE   4 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  271                       *******************************************************************************
  272                       *                                                                             *
  273                       * Directory Manager & Device Driver List Element Structure                    *
  274                       *                                                                             *
  275                       *   0:  offset  (long)          offset to next element in the list            *
  276                       *   4:  jt_ptr  (long)          pointer to this element's jump table          *
  277                       *   8:  key     (byte)          key for selecting elements                    *
  278                       *   9:  start of any optional fields                                          *
  279                       *                                                                             *
  280                       *       Last element in list has offset = 0. For it, the key is a don't       *
  281                       *       care; the list_search procedure terminates unconditionally.           *
  282                       *                                                                             *
  283                       * search_list procedure:                                                      *
  284                       *       enter with                                                            *
  285                       *         d0.b = desired key                                                  *
  286                       *         a0.l = ptr to head of desired list                                  *
  287                       *       procedure exits with                                                  *
  288                       *         a0.l = ptr to list element with matching key                        *
  289                       *         a1.l = jt_ptr field in this list element                            *
  290                       *                                                                             *
  291                       *******************************************************************************
  292                       
  293    0000002A 4A90      search_list     tst.l   (a0)            end of list?
  294    0000002C 670A                      beq.s   sl_return       branch if so
  295    0000002E B028 0008                 cmp.b   8(a0),d0        keys match?
  296    00000032 6704                      beq.s   sl_return       branch if so
  297    00000034 D1D0                      adda.l  (a0),a0         point to the next element in the list
  298    00000036 60F2                      bra     search_list     continue searching
  299                       
  300    00000038 2268 0004 sl_return       movea.l 4(a0),a1        jt_ptr field to a1
  301    0000003C 4E75                      rts                     return
  302                       
  303                       
  304                       *
  305                       * search directory manager list
  306                       *
  307    0000003E 2078 FED4 search_dm_list  movea.l f_area,a0       BOOTROM stolen low RAM ptr
  308    00000042 1028 0056                 move.b  mm_fd(a0),d0    msus format/device byte
  309    00000046 C03C 00E0                 and.b   #$E0,d0         use format bits only (upper 3 bits)
  310    0000004A 2068 0028                 movea.l dm_start(a0),a0 ptr to the head of the directory manager list
  311    0000004E 60DA                      bra     search_list     search the directory manager list (and return)
  312                       
  313                       
  314                       *
  315                       * search device driver list
  316                       *
  317    00000050 2078 FED4 search_dd_list  movea.l f_area,a0       BOOTROM stolen low RAM ptr
  318    00000054 1028 0056                 move.b  mm_fd(a0),d0    msus format/device byte
  319    00000058 C03C 001F                 and.b   #$1F,d0         use device bits only (lower 5 bits)
  320    0000005C 2068 0024                 movea.l dd_start(a0),a0 ptr to the head of the device driver list
  321    00000060 60C8                      bra     search_list     search the device driver list (and return)

 PAGE   5 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  323                       ******************************************************************************
  324                       *                     Directory Manager Steering Routines                    *
  325                       ******************************************************************************
  326                       
  327                        src      function dm_sysrec_valid: boolean;
  328                        src      function dm_fileopen(var filename: string255; var filetype: signed16;
  329                        src                        var sector_addr, length: integer; var exec_addr: anyptr): boolean;
  330                       
  331                       
  332                       *
  333                       * def's
  334                       *
  335                                       def     sr_dm_sysrec_valid
  336                                       def     sr_dm_fileopen
  337                       
  338                       
  339             0000 0062 sr_dm_sysrec_valid  equ *
  340    00000062 61DA                      bsr     search_dm_list  search the directory manager list
  341    00000064 4ED1                      jmp     (a1)            branch to the sysrec_valid routine
  342                       
  343             0000 0066 sr_dm_fileopen  equ *
  344    00000066 61D6                      bsr     search_dm_list  search the directory manager list
  345    00000068 4EE9 0004                 jmp     4(a1)           branch to the fileopen routine
  346                       
  347                       
  348                       
  349                       
  350                       *
  351                       * directory manager list
  352                       *
  353    0000006C 0000 000A dml     dc.l    10              long offset to the next entry
  354    00000070 0000 0094         dc.l    dmLIF_jt        LIF directory manager jump table
  355    00000074 00                dc.b    0  = 0*32       fmt key for LIF
  356                       
  357    00000076 0000 000A         dc.l    10              long offset to the next entry
  358    0000007A 0000 009C         dc.l    dmSDF_jt        SDF directory manager jump table
  359    0000007E 20                dc.b    32 = 1*32       fmt key for SDF
  360                       
  361    00000080 0000 000A         dc.l    10              long offset to the next entry
  362    00000084 0000 00A4         dc.l    dmUNIX_jt       UNIX directory manager jump table
  363    00000088 40                dc.b    64 = 2*32       fmt key for UNIX
  364                       
  365    0000008A 0000 0000         dc.l    0               end of list
  366    0000008E 0000 00AC         dc.l    dmDUMMY_jt      Dummy directory manager jump table
  367    00000092 00                dc.b    0

 PAGE   6 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  369                       *
  370                       * jump table ref's
  371                       *
  372                                       refr    dmLIF_sysrec_valid
  373                                       refr    dmLIF_fileopen
  374                       
  375                                       refr    dmSDF_sysrec_valid
  376                                       refr    dmSDF_fileopen
  377                       
  378                                       refr    dmUNIX_sysrec_valid
  379                                       refr    dmUNIX_fileopen
  380                       
  381                       
  382                       
  383                       *
  384                       * jump tables
  385                       *
  386    00000094 6000 FF6A dmLIF_jt        bra     dmLIF_sysrec_valid
  387    00000098 6000 FF66                 bra     dmLIF_fileopen
  388                       
  389    0000009C 6000 FF62 dmSDF_jt        bra     dmSDF_sysrec_valid
  390    000000A0 6000 FF5E                 bra     dmSDF_fileopen
  391                       
  392    000000A4 6000 FF5A dmUNIX_jt       bra     dmUNIX_sysrec_valid
  393    000000A8 6000 FF56                 bra     dmUNIX_fileopen
  394                       
  395    000000AC 6000 0006 dmDUMMY_jt      bra     dmDUMMY_sysrec_valid
  396    000000B0 6000 0008                 bra     dmDUMMY_fileopen
  397                       
  398                       
  399                       
  400                       *
  401                       * dummy procedures
  402                       *
  403             0000 00B4 dmDUMMY_sysrec_valid  equ *
  404    000000B4 205F                      movea.l (sp)+,a0        pop the return address
  405    000000B6 51D7                      sf      (sp)            return a value of false
  406    000000B8 4ED0                      jmp     (a0)            return
  407                       
  408             0000 00BA dmDUMMY_fileopen  equ *
  409    000000BA 205F                      movea.l (sp)+,a0        pop the return address
  410    000000BC DEFC 0014                 adda    #20,sp          pop the parameters
  411    000000C0 51D7                      sf      (sp)            return a value of false
  412    000000C2 4ED0                      jmp     (a0)            return

 PAGE   7 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  414                       *****************************************************************************
  415                       *                       Device Driver Steering Routines                     *
  416                       *****************************************************************************
  417                       
  418                        src      function  dd_controllersID(cardID: unsgn8; HPIBident: signed16): boolean;
  419                        src      procedure dd_setdevicename(var device_name: string255);
  420                        src      procedure dd_controller_init;
  421                        src      procedure dd_unit_init;
  422                        src      procedure dd_deviceread(anyvar buf: char; length, start_addr: integer);
  423                       
  424                       
  425                       *
  426                       * def's
  427                       *
  428                                       def     sr_dd_controllersID
  429                                       def     sr_dd_setdevicename
  430                                       def     sr_dd_controller_init
  431                                       def     sr_dd_unit_init
  432                                       def     sr_dd_deviceread
  433                       
  434                       
  435             0000 00C4 sr_dd_controllersID  equ *
  436    000000C4 618A                      bsr     search_dd_list  search the device driver list
  437    000000C6 4ED1                      jmp     (a1)            branch to the controllerID routine
  438                       
  439             0000 00C8 sr_dd_setdevicename  equ *
  440    000000C8 6186                      bsr     search_dd_list  search the device driver list
  441    000000CA 4EE9 0004                 jmp     4(a1)           branch to the setdevname routine
  442                       
  443             0000 00CE sr_dd_controller_init  equ *
  444    000000CE 6180                      bsr     search_dd_list  search the device driver list
  445    000000D0 4EE9 0008                 jmp     8(a1)           branch to the controller_init routine
  446                       
  447             0000 00D4 sr_dd_unit_init  equ *
  448    000000D4 6100 FF7A                 bsr     search_dd_list  search the device driver list
  449    000000D8 4EE9 000C                 jmp     12(a1)          branch to the unit_init routine
  450                       
  451             0000 00DC sr_dd_deviceread  equ *
  452    000000DC 6100 FF72                 bsr     search_dd_list  search the device driver list
  453    000000E0 4EE9 0010                 jmp     16(a1)          branch to the deviceread routine
  454                       
  455                       
  456                       
  457                       *
  458                       * function menu(var devicename: string255): ^<menu descriptor byte>;
  459                       *
  460    000000E4 6100 FF6A menu            bsr     search_dd_list  search the device driver list
  461    000000E8 41E8 0009                 lea     9(a0),a0        point to the menu descriptor byte
  462    000000EC 2F48 0008                 move.l  a0,8(sp)        assign the return value
  463    000000F0 4EE9 0004                 jmp     4(a1)           branch to the set device name routine

 PAGE   8 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  465                       *
  466                       * device driver list
  467                       *
  468    000000F4 0000 000A ddl     dc.l    10              long offset to the next entry
  469    000000F8 0000 0194         dc.l    ddmini_jt       internal mini device driver jump table
  470    000000FC 00                dc.b    mini            dev field for internal mini
  471    000000FD 04                dc.b    4               menu descriptor byte
  472                       
  473    000000FE 0000 000A         dc.l    10              long offset to the next entry
  474    00000102 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  475    00000106 04                dc.b    HP9895          dev field for 9895
  476    00000107 0F                dc.b    15              menu descriptor byte
  477                       
  478    00000108 0000 000A         dc.l    10              long offset to the next entry
  479    0000010C 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  480    00000110 05                dc.b    HP8290X         dev field for Chinook
  481    00000111 0F                dc.b    15              menu descriptor byte
  482                       
  483    00000112 0000 000A         dc.l    10              long offset to the next entry
  484    00000116 0000 01BC         dc.l    ddDUMBO_jt      9885 device driver jump table
  485    0000011A 06                dc.b    HP9885          dev field for 9885
  486    0000011B 0D                dc.b    13              menu descriptor byte
  487                       
  488    0000011C 0000 000A         dc.l    10              long offset to the next entry
  489    00000120 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  490    00000124 07                dc.b    HP913X_A        dev field for 5-megabyte Lcode
  491    00000125 0F                dc.b    15              menu descriptor byte
  492                       
  493    00000126 0000 000A         dc.l    10              long offset to the next entry
  494    0000012A 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  495    0000012E 08                dc.b    HP913X_B        dev field for 10-megabyte Lcode
  496    0000012F 0F                dc.b    15              menu descriptor byte
  497                       
  498    00000130 0000 000A         dc.l    10              long offset to the next entry
  499    00000134 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  500    00000138 09                dc.b    HP913X_C        dev field for 15-megabyte Lcode
  501    00000139 0F                dc.b    15              menu descriptor byte
  502                       
  503    0000013A 0000 000A         dc.l    10              long offset to the next entry
  504    0000013E 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  505    00000142 0A                dc.b    HP7905          dev field for 7905
  506    00000143 2F                dc.b    47              menu descriptor byte
  507                       
  508    00000144 0000 000A         dc.l    10              long offset to the next entry
  509    00000148 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  510    0000014C 0B                dc.b    HP7906          dev field for 7906
  511    0000014D 2F                dc.b    47              menu descriptor byte
  512                       
  513    0000014E 0000 000A         dc.l    10              long offset to the next entry
  514    00000152 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  515    00000156 0C                dc.b    HP7920          dev field for 7920
  516    00000157 0F                dc.b    15              menu descriptor byte
  517                       
  518    00000158 0000 000A         dc.l    10              long offset to the next entry
  519    0000015C 0000 01A8         dc.l    ddAMIGO_jt      amigo device driver jump table
  520    00000160 0D                dc.b    HP7925          dev field for 7925
  521    00000161 0F                dc.b    15              menu descriptor byte

 PAGE   9 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  522                       
  523    00000162 0000 000A         dc.l    10              long offset to the next entry
  524    00000166 0000 01D0         dc.l    ddCS80_jt       CS80 device driver jump table
  525    0000016A 10                dc.b    CS80_256        dev field for CS80 256-byte block devices
  526    0000016B 2F                dc.b    47              menu descriptor byte
  527                       
  528    0000016C 0000 000A         dc.l    10              long offset to the next entry
  529    00000170 0000 01D0         dc.l    ddCS80_jt       CS80 device driver jump table
  530    00000174 11                dc.b    CS80_other      dev field for all other CS80 devices
  531    00000175 2F                dc.b    47              menu descriptor byte
  532                       
  533    00000176 0000 000A         dc.l    10              long offset to the next entry
  534    0000017A 0000 01E4         dc.l    ddBUBL_jt       Bubble memory device driver jump table
  535    0000017E 16                dc.b    Bubbles         dev field for Bubble memory
  536    0000017F 09                dc.b    9               menu descriptor byte
  537                       
  538    00000180 0000 000A         dc.l    10              long offset to the next entry
  539    00000184 0000 01F8         dc.l    ddEPROM_jt      EPROM device driver jump table
  540    00000188 14                dc.b    EPROM           dev field for EPROM
  541    00000189 04                dc.b    4               menu descriptor byte
  542                       
  543    0000018A 0000 0000         dc.l    0               end of list
  544    0000018E 0000 020C         dc.l    ddDUMMY_jt      Dummy device driver jump table
  545    00000192 00                dc.b    0               dev field
  546    00000193 00                dc.b    0               menu descriptor byte

 PAGE  10 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  548                       *
  549                       * device driver jump table ref's
  550                       *
  551                       
  552                       *               refr    ddMINI_controllersID    (used only by scanning procedures)
  553                                       refr    ddMINI_setdevicename
  554                       *               refr    ddMINI_controller_init  (used only by scanning procedures)
  555                                       refr    ddMINI_unit_init
  556                                       refr    ddMINI_deviceread
  557                       
  558                                       refr    ddAMIGO_controllersID
  559                                       refr    ddAMIGO_setdevicename
  560                                       refr    ddAMIGO_controller_init
  561                                       refr    ddAMIGO_unit_init
  562                                       refr    ddAMIGO_deviceread
  563                       
  564                                       refr    ddDUMBO_controllersID
  565                                       refr    ddDUMBO_setdevicename
  566                                       refr    ddDUMBO_controller_init
  567                                       refr    ddDUMBO_unit_init
  568                                       refr    ddDUMBO_deviceread
  569                       
  570                                       refr    ddCS80_controllersID
  571                                       refr    ddCS80_setdevicename
  572                                       refr    ddCS80_controller_init
  573                                       refr    ddCS80_unit_init
  574                                       refr    ddCS80_deviceread
  575                       
  576                       *               refr    ddBUBL_controllersID    (used only by scanning procedures)
  577                                       refr    ddBUBL_setdevicename
  578                       *               refr    ddBUBL_controller_init  (used only by scanning procedures)
  579                                       refr    ddBUBL_unit_init
  580                                       refr    ddBUBL_deviceread
  581                       
  582                       *               refr    ddEPROM_controllersID   (used only by scanning procedures)
  583                                       refr    ddEPROM_setdevicename
  584                       *               refr    ddEPROM_controller_init (used only by scanning procedures)
  585                                       refr    ddEPROM_unit_init
  586                                       refr    ddEPROM_deviceread

 PAGE  11 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  588                       *
  589                       * device driver jump tables
  590                       *
  591    00000194 6000 008A ddMINI_jt       bra     ddDUMMY_controllersID   (used only by scanning procedures)
  592    00000198 6000 FE66                 bra     ddMINI_setdevicename
  593    0000019C 6000 008A                 bra     ddDUMMY_controller_init (used only by scanning procedures)
  594    000001A0 6000 FE5E                 bra     ddMINI_unit_init
  595    000001A4 6000 FE5A                 bra     ddMINI_deviceread
  596                       
  597    000001A8 6000 FE56 ddAMIGO_jt      bra     ddAMIGO_controllersID
  598    000001AC 6000 FE52                 bra     ddAMIGO_setdevicename
  599    000001B0 6000 FE4E                 bra     ddAMIGO_controller_init
  600    000001B4 6000 FE4A                 bra     ddAMIGO_unit_init
  601    000001B8 6000 FE46                 bra     ddAMIGO_deviceread
  602                       
  603    000001BC 6000 FE42 ddDUMBO_jt      bra     ddDUMBO_controllersID
  604    000001C0 6000 FE3E                 bra     ddDUMBO_setdevicename
  605    000001C4 6000 FE3A                 bra     ddDUMBO_controller_init
  606    000001C8 6000 FE36                 bra     ddDUMBO_unit_init
  607    000001CC 6000 FE32                 bra     ddDUMBO_deviceread
  608                       
  609    000001D0 6000 FE2E ddCS80_jt       bra     ddCS80_controllersID
  610    000001D4 6000 FE2A                 bra     ddCS80_setdevicename
  611    000001D8 6000 FE26                 bra     ddCS80_controller_init
  612    000001DC 6000 FE22                 bra     ddCS80_unit_init
  613    000001E0 6000 FE1E                 bra     ddCS80_deviceread
  614                       
  615    000001E4 6000 003A ddBUBL_jt       bra     ddDUMMY_controllersID   (used only by scanning procedures)
  616    000001E8 6000 FE16                 bra     ddBUBL_setdevicename
  617    000001EC 6000 003A                 bra     ddDUMMY_controller_init (used only by scanning procedures)
  618    000001F0 6000 FE0E                 bra     ddBUBL_unit_init
  619    000001F4 6000 FE0A                 bra     ddBUBL_deviceread
  620                       
  621    000001F8 6000 0026 ddEPROM_jt      bra     ddDUMMY_controllersID   (used only by scanning procedures)
  622    000001FC 6000 FE02                 bra     ddEPROM_setdevicename
  623    00000200 6000 0026                 bra     ddDUMMY_controller_init (used only by scanning procedures)
  624    00000204 6000 FDFA                 bra     ddEPROM_unit_init
  625    00000208 6000 FDF6                 bra     ddEPROM_deviceread
  626                       
  627    0000020C 6000 0012 ddDUMMY_jt      bra     ddDUMMY_controllersID
  628    00000210 6000 0016                 bra     ddDUMMY_setdevicename
  629    00000214 6000 0012                 bra     ddDUMMY_controller_init
  630    00000218 6000 000E                 bra     ddDUMMY_unit_init
  631    0000021C 6000 000A                 bra     ddDUMMY_deviceread

 PAGE  12 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  633                       *
  634                       * device driver dummy procedures
  635                       *
  636                       
  637             0000 0220 ddDUMMY_controllersID  equ *
  638                       
  639    00000220 205F                      movea.l (sp)+,a0        pop the return address
  640    00000222 588F                      addq.l  #4,sp           pop the parameters
  641    00000224 51D7                      sf      (sp)            return a value of false
  642    00000226 4ED0                      jmp     (a0)            return
  643                       
  644                       
  645             0000 0228 ddDUMMY_setdevicename   equ *
  646             0000 0228 ddDUMMY_controller_init equ *
  647             0000 0228 ddDUMMY_unit_init       equ *
  648             0000 0228 ddDUMMY_deviceread      equ *
  649                       
  650    00000228 3B7C 0001 escape_no_dev   move    #ec_no_device,-2(a5)    set escapecode
                  FFFE 
  651    0000022E 4E4A                      trap    #10                     escape a'la' Pascal

 PAGE  13 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  653                       *****************************************************************************
  654                       *                  HP-IB Interface Driver Steering Routines                 *
  655                       *****************************************************************************
  656                       
  657                        src      procedure HPIB_clear;
  658                        src      function  HPIB_amigo_identify: signed16;
  659                        src      procedure HPIB_amigo_clear;
  660                        src      procedure HPIB_wait_for_ppol;
  661                        src      procedure HPIB_short_msge_out(sec: unsgn8; bufptr: anyptr; length: signed16);
  662                        src      procedure HPIB_short_msge_in (sec: unsgn8; bufptr: anyptr; length: signed16);
  663                        src      procedure HPIB_long_msge_in  (sec: unsgn8; bufptr: anyptr; length: integer;
  664                        src                                    bb_len: signed16);
  665                       
  666                       
  667                       *
  668                       * def's
  669                       *
  670                                       def     sr_HPIB_clear
  671                                       def     sr_HPIB_amigo_identify
  672                                       def     sr_HPIB_amigo_clear
  673                                       def     sr_HPIB_wait_for_ppol
  674                                       def     sr_HPIB_short_msge_out
  675                                       def     sr_HPIB_short_msge_in
  676                                       def     sr_HPIB_long_msge_in
  677                       
  678                       
  679                       
  680                       *
  681                       * ref's
  682                       *
  683                                       refr    MISCASM_cardID
  684                       
  685                                       refr    TI9914_clear
  686                                       refr    TI9914_amigo_identify
  687                                       refr    TI9914_amigo_clear
  688                                       refr    TI9914_wait_for_ppol
  689                                       refr    TI9914_short_msge_out
  690                                       refr    TI9914_short_msge_in
  691                                       refr    TI9914_long_msge_in
  692                       
  693                                       refr    Simon_clear
  694                                       refr    Simon_amigo_identify
  695                                       refr    Simon_amigo_clear
  696                                       refr    Simon_wait_for_ppol
  697                                       refr    Simon_short_msge_out
  698                                       refr    Simon_short_msge_in
  699                                       refr    Simon_long_msge_in

 PAGE  14 [3.3a] 6/28/89 17:44:01 SECTOR-ORIENTED DEVICE STEERING ROUTINES

  701                       *
  702                       * primary HP-IB steering routine
  703                       *
  704                       *   NOTE: upon exit -  a1 = card address!!!
  705                       *
  706    00000230 558F      HPIB_select     subq.l  #2,sp           allocate space for a function return value
  707    00000232 6100 FDCC                 bsr     MISCASM_cardID  fetch the card's ID
  708    00000236 301F                      move    (sp)+,d0        pop it off the stack
  709                       
  710    00000238 B07C 0020                 cmp     #intHPIB,d0     internal HPIB?
  711    0000023C 670E                      beq.s   select_ti9914   branch if so (ret 1)
  712    0000023E B07C 0001                 cmp     #hp98624,d0     external HPIB?
  713    00000242 6708                      beq.s   select_ti9914   branch if so (ret 1)
  714    00000244 B07C 0008                 cmp     #hp98625,d0     Simon HPIB?
  715    00000248 66DE                      bne     escape_no_dev   branch if not - escape(ec_no_device)
  716    0000024A 5897                      addq.l  #4,(sp)         make the ret 1 into a ret 3
  717    0000024C 4E75      select_ti9914   rts
  718                       
  719                       
  720    0000024E 61E0      sr_HPIB_clear           bsr     HPIB_select
  721    00000250 6000 FDAE                         bra     TI9914_clear
  722    00000254 6000 FDAA                         bra     Simon_clear
  723                       
  724    00000258 61D6      sr_HPIB_amigo_identify  bsr     HPIB_select
  725    0000025A 6000 FDA4                         bra     TI9914_amigo_identify
  726    0000025E 6000 FDA0                         bra     Simon_amigo_identify
  727                       
  728    00000262 61CC      sr_HPIB_amigo_clear     bsr     HPIB_select
  729    00000264 6000 FD9A                         bra     TI9914_amigo_clear
  730    00000268 6000 FD96                         bra     Simon_amigo_clear
  731                       
  732    0000026C 61C2      sr_HPIB_wait_for_ppol   bsr     HPIB_select
  733    0000026E 6000 FD90                         bra     TI9914_wait_for_ppol
  734    00000272 6000 FD8C                         bra     Simon_wait_for_ppol
  735                       
  736    00000276 61B8      sr_HPIB_short_msge_out  bsr     HPIB_select
  737    00000278 6000 FD86                         bra     TI9914_short_msge_out
  738    0000027C 6000 FD82                         bra     Simon_short_msge_out
  739                       
  740    00000280 61AE      sr_HPIB_short_msge_in   bsr     HPIB_select
  741    00000282 6000 FD7C                         bra     TI9914_short_msge_in
  742    00000286 6000 FD78                         bra     Simon_short_msge_in
  743                       
  744    0000028A 61A4      sr_HPIB_long_msge_in    bsr     HPIB_select
  745    0000028C 6000 FD72                         bra     TI9914_long_msge_in
  746    00000290 6000 FD6E                         bra     Simon_long_msge_in
  747                       
  748                       
  749                        src    end; {sr}
  750                       
  751                                       end
PASS 1 ERRORS: 0
PASS 2 ERRORS: 0
