home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 2 / MECOMP-CD-II.iso / amiga / programmieren / c / amivogl_mdev / hershey / src / htext.s < prev    next >
Encoding:
Text File  |  1997-12-30  |  17.6 KB  |  1,265 lines

  1.  
  2. ; Maxon C++ Compiler
  3. ; LS2:work/voGL/hershey/src/htext.c
  4.     mc68020
  5.     mc68881
  6.     XREF    _rmv
  7.     XREF    _move2
  8.     XREF    _gexit
  9.     XREF    _rdr
  10.     XREF    _hallocate
  11.     XREF    _check_loaded
  12.     XREF    _strlen
  13.     XREF    _strrchr
  14.     XREF    _strcmp
  15.     XREF    _strcat
  16.     XREF    _strcpy
  17.     XREF    _getenv
  18.     XREF    _free
  19.     XREF    _cos__r
  20.     XREF    _sin__r
  21.     XREF    _exit
  22.     XREF    _fread
  23.     XREF    _fprintf
  24.     XREF    _fclose
  25.     XREF    _fopen
  26.     XREF    _std__in
  27.     XREF    _std__out
  28.     XREF    _std__err
  29.     XREF    ___MEMFLAGS
  30.     XREF    _vdevice
  31.  
  32.     SECTION ":0",CODE
  33.  
  34.  
  35.     XDEF    _hfont
  36. _hfont
  37. L57    EQU    -$8
  38.     link    a5,#L57+8
  39. L58    EQU    $C00
  40.     movem.l    a2/a3,-(a7)
  41.     move.l    $8(a5),a2
  42.     XREF    userbreak_flagpos
  43.     move.l    userbreak_flagpos,a1
  44.     btst    #4,(a1)
  45.     bne    L59
  46.     cmp.b    #$2F,(a2)
  47.     bne    L2
  48.     pea    _old_font
  49.     pea    $2F.w
  50.     move.l    a2,-(a7)
  51.     jsr    _strrchr
  52.     addq.l    #$8,a7
  53.     move.l    d0,a3
  54.     addq.l    #1,a3
  55.     move.l    a3,-(a7)
  56.     jsr    _strcmp
  57.     addq.l    #$8,a7
  58.     tst.l    d0
  59.     bne    L1
  60.     movem.l    (a7)+,a2/a3
  61.     unlk    a5
  62.     rts
  63. L1
  64.     bra.b    L4
  65. L2
  66.     pea    _old_font
  67.     move.l    a2,-(a7)
  68.     jsr    _strcmp
  69.     addq.l    #$8,a7
  70.     tst.l    d0
  71.     bne    L3
  72.     movem.l    (a7)+,a2/a3
  73.     unlk    a5
  74.     rts
  75. L3
  76. L4
  77.     move.l    a2,-(a7)
  78.     jsr    _hershfont
  79.     addq.l    #4,a7
  80.     tst.l    d0
  81.     bne    L5
  82.     move.l    a2,-(a7)
  83.     pea    L60
  84.     pea    _std__err
  85.     jsr    _fprintf
  86.     lea    $C(a7),a7
  87.     jsr    _gexit
  88.     pea    1.w
  89.     jsr    _exit
  90.     addq.l    #4,a7
  91. L5
  92.     cmp.b    #$2F,(a2)
  93.     bne    L6
  94.     pea    $2F.w
  95.     move.l    a2,-(a7)
  96.     jsr    _strrchr
  97.     addq.l    #$8,a7
  98.     move.l    d0,a3
  99.     addq.l    #1,a3
  100.     move.l    a3,-(a7)
  101.     pea    _old_font
  102.     jsr    _strcpy
  103.     addq.l    #$8,a7
  104.     bra    L7
  105. L6
  106.     move.l    a2,-(a7)
  107.     pea    _old_font
  108.     jsr    _strcpy
  109.     addq.l    #$8,a7
  110. L7
  111.     movem.l    (a7)+,a2/a3
  112.     unlk    a5
  113.     rts
  114.  
  115.     XDEF    _hnumchars
  116. _hnumchars
  117. L61    EQU    0
  118. L62    EQU    0
  119.     move.l    userbreak_flagpos,a1
  120.     btst    #4,(a1)
  121.     bne    L59
  122.     pea    L63
  123.     jsr    _check_loaded
  124.     addq.l    #4,a7
  125.     move.w    _nchars,d0
  126.     ext.l    d0
  127.     rts
  128.  
  129.     XDEF    _hsetpath
  130. _hsetpath
  131. L64    EQU    -$C
  132.     link    a5,#L64+8
  133. L65    EQU    $804
  134.     movem.l    d2/a3,-(a7)
  135.     move.l    userbreak_flagpos,a1
  136.     btst    #4,(a1)
  137.     bne    L59
  138.     move.l    $8(a5),-(a7)
  139.     pea    _fpath
  140.     jsr    _strcpy
  141.     addq.l    #$8,a7
  142.     pea    _fpath
  143.     jsr    _strlen
  144.     addq.l    #4,a7
  145.     move.l    d0,d2
  146.     move.l    #_fpath,a3
  147.     cmp.b    #$2F,0(a3,d2.l)
  148.     beq    L8
  149.     move.l    #_fpath,a3
  150.     cmp.b    #$3A,0(a3,d2.l)
  151.     beq    L8
  152.     pea    L66
  153.     pea    _fpath
  154.     jsr    _strcat
  155.     addq.l    #$8,a7
  156. L8
  157.     movem.l    (a7)+,d2/a3
  158.     unlk    a5
  159.     rts
  160.  
  161. _hershfont
  162. L67    EQU    -$124
  163.     link    a5,#L67+20
  164. L68    EQU    $4C84
  165.     movem.l    d2/d7/a2/a3/a6,-(a7)
  166.     move.l    userbreak_flagpos,a1
  167.     btst    #4,(a1)
  168.     bne    L59
  169.     move.l    #_fpath,a3
  170.     tst.b    (a3)
  171.     beq    L9
  172.     pea    _fpath
  173.     pea    -$110(a5)
  174.     jsr    _strcpy
  175.     addq.l    #$8,a7
  176.     move.l    $8(a5),-(a7)
  177.     pea    -$110(a5)
  178.     jsr    _strcat
  179.     addq.l    #$8,a7
  180.     bra    L17
  181. L9
  182.     pea    L69
  183.     jsr    _getenv
  184.     addq.l    #4,a7
  185.     move.l    d0,a6
  186.     cmp.w    #0,a6
  187.     beq    L11
  188.     move.l    a6,-(a7)
  189.     pea    -$110(a5)
  190.     jsr    _strcpy
  191.     addq.l    #$8,a7
  192.     lea    -$110(a5),a3
  193.     pea    -$110(a5)
  194.     jsr    _strlen
  195.     addq.l    #4,a7
  196.     subq.l    #1,d0
  197.     cmp.b    #$3A,0(a3,d0.l)
  198.     beq    L10
  199.     pea    L66
  200.     pea    -$110(a5)
  201.     jsr    _strcat
  202.     addq.l    #$8,a7
  203. L10
  204.     move.l    $8(a5),-(a7)
  205.     pea    -$110(a5)
  206.     jsr    _strcat
  207.     addq.l    #$8,a7
  208.     bra    L16
  209. L11
  210.     pea    L70
  211.     jsr    _getenv
  212.     addq.l    #4,a7
  213.     move.l    d0,a6
  214.     cmp.w    #0,a6
  215.     beq    L13
  216.     move.l    a6,-(a7)
  217.     pea    -$110(a5)
  218.     jsr    _strcpy
  219.     addq.l    #$8,a7
  220.     lea    -$110(a5),a3
  221.     pea    -$110(a5)
  222.     jsr    _strlen
  223.     addq.l    #4,a7
  224.     subq.l    #1,d0
  225.     cmp.b    #$3A,0(a3,d0.l)
  226.     beq    L12
  227.     pea    L66
  228.     pea    -$110(a5)
  229.     jsr    _strcat
  230.     addq.l    #$8,a7
  231. L12
  232.     move.l    $8(a5),-(a7)
  233.     pea    -$110(a5)
  234.     jsr    _strcat
  235.     addq.l    #$8,a7
  236.     bra    L15
  237. L13
  238.     pea    L71
  239.     pea    -$110(a5)
  240.     jsr    _strcpy
  241.     addq.l    #$8,a7
  242.     lea    -$110(a5),a3
  243.     pea    -$110(a5)
  244.     jsr    _strlen
  245.     addq.l    #4,a7
  246.     subq.l    #1,d0
  247.     cmp.b    #$3A,0(a3,d0.l)
  248.     beq    L14
  249.     pea    L66
  250.     pea    -$110(a5)
  251.     jsr    _strcat
  252.     addq.l    #$8,a7
  253. L14
  254.     move.l    $8(a5),-(a7)
  255.     pea    -$110(a5)
  256.     jsr    _strcat
  257.     addq.l    #$8,a7
  258. L15
  259. L16
  260. L17
  261.     pea    L72
  262.     pea    -$110(a5)
  263.     jsr    _fopen
  264.     addq.l    #$8,a7
  265.     move.l    d0,a2
  266.     cmp.w    #0,a2
  267.     bne    L18
  268.     pea    L72
  269.     move.l    $8(a5),-(a7)
  270.     jsr    _fopen
  271.     addq.l    #$8,a7
  272.     move.l    d0,a2
  273.     cmp.w    #0,a2
  274.     bne    L18
  275.     move.l    $8(a5),-(a7)
  276.     pea    -$110(a5)
  277.     pea    L73
  278.     pea    _std__err
  279.     jsr    _fprintf
  280.     lea    $10(a7),a7
  281.     pea    1.w
  282.     jsr    _exit
  283.     addq.l    #4,a7
  284. L18
  285.     move.l    a2,-(a7)
  286.     pea    1.w
  287.     pea    2.w
  288.     pea    _nchars
  289.     jsr    _fread
  290.     lea    $10(a7),a7
  291.     cmp.l    #1,d0
  292.     beq    L19
  293.     moveq    #0,d0
  294.     movem.l    (a7)+,d2/d7/a2/a3/a6
  295.     unlk    a5
  296.     rts
  297. L19
  298.     move.l    a2,-(a7)
  299.     pea    1.w
  300.     pea    2.w
  301.     pea    -$A(a5)
  302.     jsr    _fread
  303.     lea    $10(a7),a7
  304.     cmp.l    #1,d0
  305.     beq    L20
  306.     moveq    #0,d0
  307.     movem.l    (a7)+,d2/d7/a2/a3/a6
  308.     unlk    a5
  309.     rts
  310. L20
  311.     move.l    a2,-(a7)
  312.     pea    1.w
  313.     pea    2.w
  314.     pea    -$C(a5)
  315.     jsr    _fread
  316.     lea    $10(a7),a7
  317.     cmp.l    #1,d0
  318.     beq    L21
  319.     moveq    #0,d0
  320.     movem.l    (a7)+,d2/d7/a2/a3/a6
  321.     unlk    a5
  322.     rts
  323. L21
  324.     move.w    -$C(a5),d0
  325.     ext.l    d0
  326.     move.l    d0,_ftab
  327.     move.l    a2,-(a7)
  328.     pea    1.w
  329.     pea    2.w
  330.     pea    -$C(a5)
  331.     jsr    _fread
  332.     lea    $10(a7),a7
  333.     cmp.l    #1,d0
  334.     beq    L22
  335.     moveq    #0,d0
  336.     movem.l    (a7)+,d2/d7/a2/a3/a6
  337.     unlk    a5
  338.     rts
  339. L22
  340.     move.w    -$C(a5),d0
  341.     ext.l    d0
  342.     move.l    d0,_ftab+4
  343.     move.l    a2,-(a7)
  344.     pea    1.w
  345.     pea    2.w
  346.     pea    -$C(a5)
  347.     jsr    _fread
  348.     lea    $10(a7),a7
  349.     cmp.l    #1,d0
  350.     beq    L23
  351.     moveq    #0,d0
  352.     movem.l    (a7)+,d2/d7/a2/a3/a6
  353.     unlk    a5
  354.     rts
  355. L23
  356.     move.w    -$C(a5),d0
  357.     ext.l    d0
  358.     move.l    d0,_ftab+$8
  359.     tst.l    _hLoaded
  360.     beq    L26
  361.     move.l    _ftab+$10,a3
  362.     moveq    #0,d0
  363.     tst.l    0(a3,d0.l*4)
  364.     beq    L24
  365.     move.l    _ftab+$10,a3
  366.     moveq    #0,d0
  367.     move.l    0(a3,d0.l*4),-(a7)
  368.     jsr    _free
  369.     addq.l    #4,a7
  370. L24
  371.     tst.l    _ftab+$10
  372.     beq    L25
  373.     move.l    _ftab+$10,-(a7)
  374.     jsr    _free
  375.     addq.l    #4,a7
  376. L25
  377.     clr.l    _hLoaded
  378. L26
  379.     move.w    _nchars,d0
  380.     ext.l    d0
  381.     addq.l    #1,d0
  382.     asl.l    #2,d0
  383.     move.l    d0,-(a7)
  384.     jsr    _hallocate
  385.     addq.l    #4,a7
  386.     move.l    d0,_ftab+$10
  387.     move.w    -$A(a5),d0
  388.     ext.l    d0
  389.     add.l    d0,d0
  390.     move.l    d0,-(a7)
  391.     jsr    _hallocate
  392.     addq.l    #4,a7
  393.     move.l    d0,_ftab+$C
  394.     moveq    #0,d2
  395.     bra    L28
  396. L27
  397.     move.l    a2,-(a7)
  398.     pea    1.w
  399.     pea    2.w
  400.     pea    -$C(a5)
  401.     jsr    _fread
  402.     lea    $10(a7),a7
  403.     cmp.l    #1,d0
  404.     beq    L30
  405.     moveq    #0,d0
  406.     movem.l    (a7)+,d2/d7/a2/a3/a6
  407.     unlk    a5
  408.     rts
  409. L30
  410.     move.l    a2,-(a7)
  411.     move.w    -$C(a5),d0
  412.     ext.l    d0
  413.     move.l    d0,-(a7)
  414.     pea    1.w
  415.     move.l    _ftab+$C,-(a7)
  416.     jsr    _fread
  417.     lea    $10(a7),a7
  418.     move.w    -$C(a5),d7
  419.     ext.l    d7
  420.     cmp.l    d7,d0
  421.     beq    L31
  422.     moveq    #0,d0
  423.     movem.l    (a7)+,d2/d7/a2/a3/a6
  424.     unlk    a5
  425.     rts
  426. L31
  427.     move.l    _ftab+$10,a3
  428.     move.l    _ftab+$C,0(a3,d2.l*4)
  429.     move.w    -$C(a5),d0
  430.     ext.l    d0
  431.     add.l    d0,_ftab+$C
  432. L29
  433.     addq.l    #1,d2
  434.     move.l    userbreak_flagpos,a1
  435.     btst    #4,(a1)
  436.     bne    L59
  437. L28
  438.     move.w    _nchars,d0
  439.     ext.l    d0
  440.     cmp.l    d0,d2
  441.     blt    L27
  442.     move.l    _ftab+$10,a3
  443.     move.w    _nchars,d0
  444.     ext.l    d0
  445.     move.l    _ftab+$C,0(a3,d0.l*4)
  446.     move.l    a2,-(a7)
  447.     jsr    _fclose
  448.     addq.l    #4,a7
  449.     move.l    #1,_hLoaded
  450.     moveq    #1,d0
  451.     movem.l    (a7)+,d2/d7/a2/a3/a6
  452.     unlk    a5
  453.     rts
  454.  
  455.     XDEF    _hgetcharsize
  456. _hgetcharsize
  457. L74    EQU    $24
  458. L75    EQU    $4CC4
  459.     movem.l    d2/d6/d7/a2/a3/a6,-(a7)
  460.     fmovem.x fp7,-(a7)
  461.     move.b    L74+4(a7),d2
  462.     move.l    L74+6(a7),a2
  463.     move.l    userbreak_flagpos,a1
  464.     btst    #4,(a1)
  465.     bne    L59
  466.     pea    L76
  467.     jsr    _check_loaded
  468.     addq.l    #4,a7
  469.     move.l    _ftab,d7
  470.     sub.l    _ftab+4,d7
  471.     fmove.l    d7,fp7
  472.     fmul.s    _SCSIZEY,fp7
  473.     move.l    L74+$A(a7),a3
  474.     fmove.s    fp7,(a3)
  475.     tst.l    _Fixedwidth
  476.     beq    L32
  477.     fmove.l    _ftab+$8,fp7
  478.     fmul.s    _SCSIZEX,fp7
  479.     fmove.s    fp7,(a2)
  480.     bra    L33
  481. L32
  482.     move.l    _ftab+$10,a3
  483.     extb.l    d2
  484.     move.l    d2,d7
  485.     sub.l    #$20,d7
  486.     move.l    0(a3,d7.l*4),a6
  487.     move.b    1(a6),d7
  488.     extb.l    d7
  489.     move.l    _ftab+$10,a3
  490.     extb.l    d2
  491.     move.l    d2,d6
  492.     sub.l    #$20,d6
  493.     move.l    0(a3,d6.l*4),a6
  494.     move.b    (a6),d6
  495.     extb.l    d6
  496.     sub.l    d6,d7
  497.     fmove.l    d7,fp7
  498.     fmul.s    _SCSIZEX,fp7
  499.     fmove.s    fp7,(a2)
  500. L33
  501.     fmovem.x (a7)+,fp7
  502.     movem.l    (a7)+,d2/d6/d7/a2/a3/a6
  503.     rts
  504.  
  505.     XDEF    _hdrawchar
  506. _hdrawchar
  507. L77    EQU    -$78
  508.     link    a5,#L77+60
  509. L78    EQU    $4CFC
  510.     movem.l    d2-d7/a2/a3/a6,-(a7)
  511.     fmovem.x fp6/fp7,-(a7)
  512.     move.l    userbreak_flagpos,a1
  513.     btst    #4,(a1)
  514.     bne    L59
  515.     pea    L79
  516.     jsr    _check_loaded
  517.     addq.l    #4,a7
  518.     move.l    $8(a5),d7
  519.     sub.l    #$20,d7
  520.     move.l    d7,-$10(a5)
  521.     cmp.l    #0,-$10(a5)
  522.     bge    L34
  523.     clr.l    -$10(a5)
  524. L34
  525.     move.l    -$10(a5),d7
  526.     move.w    _nchars,d6
  527.     ext.l    d6
  528.     cmp.l    d6,d7
  529.     blt    L35
  530.     move.w    _nchars,d7
  531.     ext.l    d7
  532.     subq.l    #1,d7
  533.     move.l    d7,-$10(a5)
  534. L35
  535.     moveq    #1,d4
  536.     clr.l    -$20(a5)
  537.     move.l    -$20(a5),-$1C(a5)
  538.     tst.l    _Justify
  539.     bne    L36
  540.     tst.l    _Fixedwidth
  541.     beq    L80
  542.     move.l    _ftab+$8,d0
  543.     neg.l    d0
  544.     divs.l    #2,d0
  545.     bra.b    L81
  546. L80
  547.     move.l    _ftab+$10,a3
  548.     move.l    -$10(a5),d7
  549.     move.l    0(a3,d7.l*4),a6
  550.     move.b    (a6),d7
  551.     extb.l    d7
  552.     sub.l    #$52,d7
  553.     move.l    d7,d0
  554. L81
  555.     move.l    d0,-$1C(a5)
  556.     move.l    _ftab+4,-$20(a5)
  557.     bra    L38
  558. L36
  559.     cmp.l    #2,_Justify
  560.     bne    L37
  561.     tst.l    _Fixedwidth
  562.     beq    L82
  563.     move.l    _ftab+$8,d0
  564.     divs.l    #2,d0
  565.     bra.b    L83
  566. L82
  567.     move.l    _ftab+$10,a3
  568.     move.l    -$10(a5),d7
  569.     move.l    0(a3,d7.l*4),a6
  570.     move.b    (a6),d7
  571.     extb.l    d7
  572.     sub.l    #$52,d7
  573.     neg.l    d7
  574.     move.l    d7,d0
  575. L83
  576.     move.l    d0,-$1C(a5)
  577.     move.l    _ftab+4,-$20(a5)
  578. L37
  579. L38
  580.     move.l    _ftab+$10,a3
  581.     move.l    -$10(a5),d7
  582.     addq.l    #1,d7
  583.     move.l    0(a3,d7.l*4),-$8(a5)
  584.     move.l    _ftab+$10,a3
  585.     move.l    -$10(a5),d7
  586.     move.l    0(a3,d7.l*4),a6
  587.     addq.l    #2,a6
  588.     move.l    a6,a2
  589.     clr.l    -$3C(a5)
  590.     move.l    -$3C(a5),-$38(a5)
  591.     bra    L40
  592. L39
  593.     move.b    (a2)+,d7
  594.     extb.l    d7
  595.     sub.l    #$52,d7
  596.     move.l    d7,-$14(a5)
  597.     move.b    (a2)+,d7
  598.     extb.l    d7
  599.     moveq    #$52,d6
  600.     sub.l    d7,d6
  601.     move.l    d6,-$18(a5)
  602.     cmp.l    #-$32,-$14(a5)
  603.     beq    L43
  604.     move.l    -$14(a5),d7
  605.     sub.l    -$1C(a5),d7
  606.     fmove.l    d7,fp7
  607.     fmul.s    _SCSIZEX,fp7
  608.     fmove.s    fp7,d3
  609.     move.l    -$18(a5),d7
  610.     sub.l    -$20(a5),d7
  611.     fmove.l    d7,fp7
  612.     fmul.s    _SCSIZEY,fp7
  613.     fmove.s    fp7,d2
  614.     move.l    d3,d5
  615.     fmove.s    _tcos,fp7
  616.     fmul.s    d5,fp7
  617.     fmove.s    _tsin,fp6
  618.     fmul.s    d2,fp6
  619.     fsub.x    fp6,fp7
  620.     fmove.s    fp7,d3
  621.     fmove.s    _tsin,fp7
  622.     fmul.s    d5,fp7
  623.     fmove.s    _tcos,fp6
  624.     fmul.s    d2,fp6
  625.     fadd.x    fp6,fp7
  626.     fmove.s    fp7,d2
  627.     fmove.s    d3,fp7
  628.     fsub.s    -$38(a5),fp7
  629.     fmove.s    fp7,-$24(a5)
  630.     fmove.s    d2,fp7
  631.     fsub.s    -$3C(a5),fp7
  632.     fmove.s    fp7,-$28(a5)
  633.     move.l    d3,-$38(a5)
  634.     move.l    d2,-$3C(a5)
  635.     tst.l    d4
  636.     beq    L41
  637.     moveq    #0,d4
  638.     clr.l    -(a7)
  639.     move.l    -$28(a5),-(a7)
  640.     move.l    -$24(a5),-(a7)
  641.     jsr    _rmv
  642.     lea    $C(a7),a7
  643.     bra    L42
  644. L41
  645.     clr.l    -(a7)
  646.     move.l    -$28(a5),-(a7)
  647.     move.l    -$24(a5),-(a7)
  648.     jsr    _rdr
  649.     lea    $C(a7),a7
  650. L42
  651.     bra.b    L44
  652. L43
  653.     moveq    #1,d4
  654. L44
  655. L40
  656.     move.l    userbreak_flagpos,a1
  657.     btst    #4,(a1)
  658.     bne    L59
  659.     cmp.l    -$8(a5),a2
  660.     blt    L39
  661.     tst.l    _Fixedwidth
  662.     beq    L84
  663.     fmove.l    _ftab+$8,fp7
  664.     fmove.s    fp7,d7
  665.     bra.b    L85
  666. L84
  667.     move.l    _ftab+$10,a3
  668.     move.l    -$10(a5),d7
  669.     move.l    0(a3,d7.l*4),a6
  670.     move.b    1(a6),d7
  671.     extb.l    d7
  672.     move.l    _ftab+$10,a3
  673.     move.l    -$10(a5),d6
  674.     move.l    0(a3,d6.l*4),a6
  675.     move.b    (a6),d6
  676.     extb.l    d6
  677.     sub.l    d6,d7
  678.     fmove.l    d7,fp7
  679.     fmove.s    fp7,d7
  680. L85
  681.     move.l    d7,d5
  682.     fmove.s    d5,fp7
  683.     fmul.s    _SCSIZEX,fp7
  684.     fmove.s    fp7,d5
  685.     fmove.s    _tcos,fp7
  686.     fmul.s    d5,fp7
  687.     fsub.s    -$38(a5),fp7
  688.     fmove.s    fp7,-$24(a5)
  689.     fmove.s    _tsin,fp7
  690.     fmul.s    d5,fp7
  691.     fsub.s    -$3C(a5),fp7
  692.     fmove.s    fp7,-$28(a5)
  693.     clr.l    -(a7)
  694.     move.l    -$28(a5),-(a7)
  695.     move.l    -$24(a5),-(a7)
  696.     jsr    _rmv
  697.     lea    $C(a7),a7
  698.     fmovem.x (a7)+,fp6/fp7
  699.     movem.l    (a7)+,d2-d7/a2/a3/a6
  700.     unlk    a5
  701.     rts
  702.  
  703.     XDEF    _htextsize
  704. _htextsize
  705. L86    EQU    $18
  706. L87    EQU    $C4
  707.     movem.l    d2/d6/d7,-(a7)
  708.     fmovem.x fp7,-(a7)
  709.     move.l    userbreak_flagpos,a1
  710.     btst    #4,(a1)
  711.     bne    L59
  712.     pea    L88
  713.     jsr    _check_loaded
  714.     addq.l    #4,a7
  715.     move.l    _ftab+$8,d7
  716.     move.l    _ftab,d6
  717.     sub.l    _ftab+4,d6
  718.     cmp.l    d6,d7
  719.     bge    L89
  720.     move.l    _ftab,d7
  721.     sub.l    _ftab+4,d7
  722.     bra.b    L90
  723. L89
  724.     move.l    _ftab+$8,d7
  725. L90
  726.     fmove.l    d7,fp7
  727.     fmove.s    fp7,d2
  728.     fmove.s    d2,fp7
  729.     fcmp.s    #$.00000000,fp7
  730.     fbuge.w    L91
  731.     fmove.s    d2,fp7
  732.     fneg.x    fp7
  733.     fmove.s    fp7,d7
  734.     bra.b    L92
  735. L91
  736.     move.l    d2,d7
  737. L92
  738.     fmove.s    L86+4(a7),fp7
  739.     fdiv.s    d7,fp7
  740.     fmove.s    fp7,_SCSIZEX
  741.     fmove.s    d2,fp7
  742.     fcmp.s    #$.00000000,fp7
  743.     fbuge.w    L93
  744.     fmove.s    d2,fp7
  745.     fneg.x    fp7
  746.     fmove.s    fp7,d7
  747.     bra.b    L94
  748. L93
  749.     move.l    d2,d7
  750. L94
  751.     fmove.s    L86+$8(a7),fp7
  752.     fdiv.s    d7,fp7
  753.     fmove.s    fp7,_SCSIZEY
  754.     fmovem.x (a7)+,fp7
  755.     movem.l    (a7)+,d2/d6/d7
  756.     rts
  757.  
  758.     XDEF    _hgetfontwidth__r
  759. _hgetfontwidth__r
  760. L95    EQU    $10
  761. L96    EQU    $80
  762.     move.l    d7,-(a7)
  763.     fmovem.x fp7,-(a7)
  764.     move.l    userbreak_flagpos,a1
  765.     btst    #4,(a1)
  766.     bne    L59
  767.     pea    L97
  768.     jsr    _check_loaded
  769.     addq.l    #4,a7
  770.     move.l    _ftab+$8,d0
  771.     move.l    _ftab,d7
  772.     sub.l    _ftab+4,d7
  773.     cmp.l    d7,d0
  774.     bge    L98
  775.     move.l    _ftab,d0
  776.     sub.l    _ftab+4,d0
  777.     bra.b    L99
  778. L98
  779.     move.l    _ftab+$8,d0
  780. L99
  781.     fmove.l    d0,fp0
  782.     fmove.s    _SCSIZEX,fp7
  783.     fmul.x    fp0,fp7
  784.     fmove.x    fp7,fp0
  785.     fmovem.x (a7)+,fp7
  786.     movem.l    (a7)+,d7
  787.     rts
  788.  
  789.     XDEF    _hgetfontheight__r
  790. _hgetfontheight__r
  791. L100    EQU    $10
  792. L101    EQU    $80
  793.     move.l    d7,-(a7)
  794.     fmovem.x fp7,-(a7)
  795.     move.l    userbreak_flagpos,a1
  796.     btst    #4,(a1)
  797.     bne    L59
  798.     pea    L102
  799.     jsr    _check_loaded
  800.     addq.l    #4,a7
  801.     move.l    _ftab+$8,d0
  802.     move.l    _ftab,d7
  803.     sub.l    _ftab+4,d7
  804.     cmp.l    d7,d0
  805.     bge    L103
  806.     move.l    _ftab,d0
  807.     sub.l    _ftab+4,d0
  808.     bra.b    L104
  809. L103
  810.     move.l    _ftab+$8,d0
  811. L104
  812.     fmove.l    d0,fp0
  813.     fmove.s    _SCSIZEY,fp7
  814.     fmul.x    fp0,fp7
  815.     fmove.x    fp7,fp0
  816.     fmovem.x (a7)+,fp7
  817.     movem.l    (a7)+,d7
  818.     rts
  819.  
  820.     XDEF    _hgetfontsize
  821. _hgetfontsize
  822. L105    EQU    4
  823. L106    EQU    $800
  824.     move.l    a3,-(a7)
  825.     move.l    userbreak_flagpos,a1
  826.     btst    #4,(a1)
  827.     bne    L59
  828.     pea    L107
  829.     jsr    _check_loaded
  830.     addq.l    #4,a7
  831.     bsr    _hgetfontwidth__r
  832.     move.l    L105+4(a7),a3
  833.     fmove.s    fp0,(a3)
  834.     bsr    _hgetfontheight__r
  835.     move.l    L105+$8(a7),a3
  836.     fmove.s    fp0,(a3)
  837.     move.l    (a7)+,a3
  838.     rts
  839.  
  840.     XDEF    _hgetdecender__r
  841. _hgetdecender__r
  842. L108    EQU    0
  843. L109    EQU    0
  844.     move.l    userbreak_flagpos,a1
  845.     btst    #4,(a1)
  846.     bne    L59
  847.     pea    L110
  848.     jsr    _check_loaded
  849.     addq.l    #4,a7
  850.     fmove.l    _ftab+4,fp0
  851.     fmul.s    _SCSIZEY,fp0
  852.     rts
  853.  
  854.     XDEF    _hgetascender__r
  855. _hgetascender__r
  856. L111    EQU    0
  857. L112    EQU    0
  858.     move.l    userbreak_flagpos,a1
  859.     btst    #4,(a1)
  860.     bne    L59
  861.     pea    L113
  862.     jsr    _check_loaded
  863.     addq.l    #4,a7
  864.     fmove.l    _ftab,fp0
  865.     fmul.s    _SCSIZEY,fp0
  866.     rts
  867.  
  868.     XDEF    _hcharstr
  869. _hcharstr
  870. L114    EQU    -$4E
  871.     link    a5,#L114+52
  872. L115    EQU    $447C
  873.     movem.l    d2-d6/a2/a6,-(a7)
  874.     fmovem.x fp6/fp7,-(a7)
  875.     move.l    $8(a5),a6
  876.     move.l    userbreak_flagpos,a1
  877.     btst    #4,(a1)
  878.     bne    L59
  879.     move.l    a6,a2
  880.     pea    L116
  881.     jsr    _check_loaded
  882.     addq.l    #4,a7
  883.     bsr    _hgetfontheight__r
  884.     fmove.s    fp0,d3
  885.     move.l    a6,-(a7)
  886.     jsr    _hstrlength__r
  887.     addq.l    #4,a7
  888.     fmove.s    fp0,d6
  889.     moveq    #0,d4
  890.     move.l    d4,d5
  891.     cmp.l    #1,_Justify
  892.     bne    L45
  893.     fmove.s    d3,fp7
  894.     fdiv.s    #$.40000000,fp7
  895.     fmove.s    fp7,d3
  896.     fmove.s    d6,fp7
  897.     fdiv.s    #$.40000000,fp7
  898.     fmove.s    fp7,d6
  899.     fmove.s    d3,fp7
  900.     fmul.s    _tsin,fp7
  901.     fmove.s    d6,fp6
  902.     fmul.s    _tcos,fp6
  903.     fsub.x    fp6,fp7
  904.     fmove.s    fp7,d5
  905.     fmove.s    d3,fp7
  906.     fneg.x    fp7
  907.     fmul.s    _tcos,fp7
  908.     fmove.s    d6,fp6
  909.     fmul.s    _tsin,fp6
  910.     fsub.x    fp6,fp7
  911.     fmove.s    fp7,d4
  912.     bra    L47
  913. L45
  914.     cmp.l    #2,_Justify
  915.     bne    L46
  916.     moveq    #0,d3
  917.     fmove.s    d3,fp7
  918.     fmul.s    _tsin,fp7
  919.     fmove.s    d6,fp6
  920.     fmul.s    _tcos,fp6
  921.     fsub.x    fp6,fp7
  922.     fmove.s    fp7,d5
  923.     fmove.s    d3,fp7
  924.     fneg.x    fp7
  925.     fmul.s    _tcos,fp7
  926.     fmove.s    d6,fp6
  927.     fmul.s    _tsin,fp6
  928.     fsub.x    fp6,fp7
  929.     fmove.s    fp7,d4
  930. L46
  931. L47
  932.     clr.l    -(a7)
  933.     move.l    d4,-(a7)
  934.     move.l    d5,-(a7)
  935.     jsr    _rmv
  936.     lea    $C(a7),a7
  937.     move.l    _Justify,-$1A(a5)
  938.     clr.l    _Justify
  939.     bra    L49
  940. L48
  941.     extb.l    d2
  942.     move.l    d2,-(a7)
  943.     bsr    _hdrawchar
  944.     addq.l    #4,a7
  945. L49
  946.     move.l    userbreak_flagpos,a1
  947.     btst    #4,(a1)
  948.     bne    L59
  949.     move.b    (a2)+,d2
  950.     bne.b    L48
  951.     move.l    -$1A(a5),_Justify
  952.     fmovem.x (a7)+,fp6/fp7
  953.     movem.l    (a7)+,d2-d6/a2/a6
  954.     unlk    a5
  955.     rts
  956.  
  957. _istrlength
  958. L117    EQU    $1C
  959. L118    EQU    $4C9C
  960.     movem.l    d2-d4/d7/a2/a3/a6,-(a7)
  961.     move.l    L117+4(a7),a2
  962.     move.l    userbreak_flagpos,a1
  963.     btst    #4,(a1)
  964.     bne    L59
  965.     moveq    #0,d4
  966.     tst.l    _Fixedwidth
  967.     beq    L50
  968.     move.l    a2,-(a7)
  969.     jsr    _strlen
  970.     addq.l    #4,a7
  971.     mulu.l    _ftab+$8,d0
  972.     movem.l    (a7)+,d2-d4/d7/a2/a3/a6
  973.     rts
  974. L50
  975.     bra.b    L52
  976. L51
  977.     extb.l    d3
  978.     move.l    d3,d0
  979.     sub.l    #$20,d0
  980.     move.l    d0,d2
  981.     cmp.l    #0,d2
  982.     blt    L119
  983.     move.w    _nchars,d0
  984.     ext.l    d0
  985.     cmp.l    d0,d2
  986.     blt    L53
  987. L119
  988.     move.w    _nchars,d0
  989.     ext.l    d0
  990.     subq.l    #1,d0
  991.     move.l    d0,d2
  992. L53
  993.     move.l    _ftab+$10,a3
  994.     move.l    0(a3,d2.l*4),a6
  995.     move.b    1(a6),d0
  996.     extb.l    d0
  997.     move.l    _ftab+$10,a3
  998.     move.l    0(a3,d2.l*4),a6
  999.     move.b    (a6),d7
  1000.     extb.l    d7
  1001.     sub.l    d7,d0
  1002.     add.l    d0,d4
  1003. L52
  1004.     move.l    userbreak_flagpos,a1
  1005.     btst    #4,(a1)
  1006.     bne    L59
  1007.     move.b    (a2)+,d3
  1008.     bne.b    L51
  1009.     move.l    d4,d0
  1010.     movem.l    (a7)+,d2-d4/d7/a2/a3/a6
  1011.     rts
  1012. L54
  1013.     movem.l    (a7)+,d2-d4/d7/a2/a3/a6
  1014.     rts
  1015.  
  1016.     XDEF    _hstrlength__r
  1017. _hstrlength__r
  1018. L120    EQU    0
  1019. L121    EQU    0
  1020.     move.l    userbreak_flagpos,a1
  1021.     btst    #4,(a1)
  1022.     bne    L59
  1023.     pea    L122
  1024.     jsr    _check_loaded
  1025.     addq.l    #4,a7
  1026.     move.l    L120+4(a7),-(a7)
  1027.     bsr    _istrlength
  1028.     addq.l    #4,a7
  1029.     fmove.l    d0,fp0
  1030.     fmul.s    _SCSIZEX,fp0
  1031.     rts
  1032.  
  1033.     XDEF    _hboxtext
  1034. _hboxtext
  1035. L123    EQU    -$30
  1036.     link    a5,#L123+40
  1037. L124    EQU    $48C
  1038.     movem.l    d2/d3/d7/a2,-(a7)
  1039.     fmovem.x fp6/fp7,-(a7)
  1040.     move.l    $18(a5),a2
  1041.     move.l    userbreak_flagpos,a1
  1042.     btst    #4,(a1)
  1043.     bne    L59
  1044.     pea    L125
  1045.     jsr    _check_loaded
  1046.     addq.l    #4,a7
  1047.     move.l    _SCSIZEX,d3
  1048.     move.l    _SCSIZEY,d2
  1049.     move.l    a2,-(a7)
  1050.     bsr    _istrlength
  1051.     addq.l    #4,a7
  1052.     fmove.l    d0,fp7
  1053.     fmove.s    $10(a5),fp6
  1054.     fdiv.x    fp7,fp6
  1055.     fmove.s    fp6,_SCSIZEX
  1056.     move.l    _ftab,d7
  1057.     sub.l    _ftab+4,d7
  1058.     fmove.l    d7,fp7
  1059.     fmove.s    $14(a5),fp6
  1060.     fdiv.x    fp7,fp6
  1061.     fmove.s    fp6,_SCSIZEY
  1062.     move.l    $C(a5),-(a7)
  1063.     move.l    $8(a5),-(a7)
  1064.     jsr    _move2
  1065.     addq.l    #$8,a7
  1066.     move.l    a2,-(a7)
  1067.     bsr    _hcharstr
  1068.     addq.l    #4,a7
  1069.     move.l    d3,_SCSIZEX
  1070.     move.l    d2,_SCSIZEY
  1071.     fmovem.x (a7)+,fp6/fp7
  1072.     movem.l    (a7)+,d2/d3/d7/a2
  1073.     unlk    a5
  1074.     rts
  1075.  
  1076.     XDEF    _hboxfit
  1077. _hboxfit
  1078. L126    EQU    $1C
  1079. L127    EQU    $80
  1080.     move.l    d7,-(a7)
  1081.     fmovem.x fp6/fp7,-(a7)
  1082.     move.l    userbreak_flagpos,a1
  1083.     btst    #4,(a1)
  1084.     bne    L59
  1085.     pea    L128
  1086.     jsr    _check_loaded
  1087.     addq.l    #4,a7
  1088.     move.l    L126+$C(a7),d0
  1089.     muls.l    _ftab+$8,d0
  1090.     fmove.l    d0,fp7
  1091.     fmove.s    L126+4(a7),fp6
  1092.     fdiv.x    fp7,fp6
  1093.     fmove.s    fp6,_SCSIZEX
  1094.     move.l    _ftab,d7
  1095.     sub.l    _ftab+4,d7
  1096.     fmove.l    d7,fp7
  1097.     fmove.s    L126+$8(a7),fp6
  1098.     fdiv.x    fp7,fp6
  1099.     fmove.s    fp6,_SCSIZEY
  1100.     fmovem.x (a7)+,fp6/fp7
  1101.     movem.l    (a7)+,d7
  1102.     rts
  1103.  
  1104.     XDEF    _hcentertext
  1105. _hcentertext
  1106. L129    EQU    0
  1107. L130    EQU    0
  1108.     tst.l    L129+4(a7)
  1109.     beq    L131
  1110.     moveq    #1,d0
  1111.     bra.b    L132
  1112. L131
  1113.     moveq    #0,d0
  1114. L132
  1115.     move.l    d0,_Justify
  1116.     rts
  1117.  
  1118.     XDEF    _hrightjustify
  1119. _hrightjustify
  1120. L133    EQU    0
  1121. L134    EQU    0
  1122.     tst.l    L133+4(a7)
  1123.     beq    L135
  1124.     moveq    #2,d0
  1125.     bra.b    L136
  1126. L135
  1127.     moveq    #0,d0
  1128. L136
  1129.     move.l    d0,_Justify
  1130.     rts
  1131.  
  1132.     XDEF    _hleftjustify
  1133. _hleftjustify
  1134. L137    EQU    0
  1135. L138    EQU    0
  1136.     tst.l    L137+4(a7)
  1137.     beq    L139
  1138.     moveq    #0,d0
  1139.     bra.b    L140
  1140. L139
  1141.     moveq    #2,d0
  1142. L140
  1143.     move.l    d0,_Justify
  1144.     rts
  1145.  
  1146.     XDEF    _hfixedwidth
  1147. _hfixedwidth
  1148. L141    EQU    0
  1149. L142    EQU    0
  1150.     move.l    L141+4(a7),_Fixedwidth
  1151.     rts
  1152.  
  1153.     XDEF    _htextang
  1154. _htextang
  1155. L143    EQU    $10
  1156. L144    EQU    4
  1157.     move.l    d2,-(a7)
  1158.     fmovem.x fp7,-(a7)
  1159.     move.s    L143+4(a7),d2
  1160.     move.l    userbreak_flagpos,a1
  1161.     btst    #4,(a1)
  1162.     bne    L59
  1163.     fmove.s    d2,fp7
  1164.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  1165.     fmove.d    fp7,-(a7)
  1166.     jsr    _cos__r
  1167.     addq.l    #$8,a7
  1168.     fmove.s    fp0,_tcos
  1169.     fmove.s    d2,fp7
  1170.     fmul.d    #$.3F91DF46.A2529D2E,fp7
  1171.     fmove.d    fp7,-(a7)
  1172.     jsr    _sin__r
  1173.     addq.l    #$8,a7
  1174.     fmove.s    fp0,_tsin
  1175.     fmovem.x (a7)+,[LATEST]
  1176.     movem.l    (a7)+,#L144
  1177.     rts
  1178.  
  1179. L59
  1180.     XREF    userbreak
  1181.     jsr    userbreak
  1182.  
  1183. L66
  1184.     dc.b    '/',0
  1185. L69
  1186.     dc.b    'HFONTLIB',0
  1187. L70
  1188.     dc.b    'VFONTLIB',0
  1189. L128
  1190.     dc.b    'hboxfit',0
  1191. L125
  1192.     dc.b    'hboxtext',0
  1193. L116
  1194.     dc.b    'hcharstr',0
  1195. L79
  1196.     dc.b    'hdrawchar',0
  1197. L71
  1198.     dc.b    'hershey:',0
  1199. L73
  1200.     dc.b    'hershlib: Can',$27,'t open Hershey fontfile ',$27,'%s',$27
  1201.     dc.b    ' or ',$27,'./%s',$27,'.',$A,0
  1202. L60
  1203.     dc.b    'hershlib: problem reading font file ',$27,'%s',$27,'.',$A
  1204.     dc.b    0
  1205. L113
  1206.     dc.b    'hgetascender',0
  1207. L76
  1208.     dc.b    'hgetcharsize',0
  1209. L110
  1210.     dc.b    'hgetdecender',0
  1211. L102
  1212.     dc.b    'hgetfontheight',0
  1213. L107
  1214.     dc.b    'hgetfontsize',0
  1215. L97
  1216.     dc.b    'hgetfontwidth',0
  1217. L63
  1218.     dc.b    'hnumchars',0
  1219. L122
  1220.     dc.b    'hstrlength',0
  1221. L88
  1222.     dc.b    'htextsize',0
  1223. L72
  1224.     dc.b    'rb',0
  1225.  
  1226.     SECTION ":1",DATA
  1227.  
  1228. _tcos
  1229.     dc.l    $3F800000
  1230. _tsin
  1231.     dc.l    0
  1232. _SCSIZEX
  1233.     dc.l    $3F800000
  1234. _SCSIZEY
  1235.     dc.l    $3F800000
  1236. _Justify
  1237.     dc.l    0
  1238. _Fixedwidth
  1239.     dc.l    0
  1240.     XDEF    _hLoaded
  1241. _hLoaded
  1242.     dc.l    0
  1243. _old_font
  1244.     dc.b    0
  1245.     ds.b    255
  1246. _fpath
  1247.     dc.b    0
  1248.     ds.b    255
  1249.  
  1250.     SECTION ":2",BSS
  1251.  
  1252. _nchars
  1253.     ds.w    1
  1254.     CNOP    0,4
  1255. _ftab
  1256.     ds.b    20
  1257.  
  1258.     SECTION ":0",CODE
  1259.  
  1260.  
  1261. L59
  1262.     jsr    userbreak
  1263.  
  1264.     END
  1265.