home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1996 / ARCHIVE_96.iso / discs / mag_discs / volume_2 / issue_06 / fontaid / DLASPOOL < prev    next >
Text File  |  1989-02-13  |  5KB  |  190 lines

  1. >LIST
  2.    10 REM > DLASource
  3.    20 
  4.    30 REM Archimedes Font Downloader module
  5.    40 REM (for FontAid font files)
  6.    50 
  7.    60 REM (C) Richard Averill, January 1989.
  8.    70 
  9.    80 IF MODE <18 THEN MODE 0 ELSE MODE 18
  10.    90 PRINT TAB(15) "Archimedes FontAid font downloader module generator"'
  11.   100 PRINT TAB(25) "(C) Richard Averill, 1989."'
  12.   110 PRINT TAB(10) "(from Archive magazine, March 1989 (Volume 2 Number 6))"'
  13.   120 
  14.   130 DIM code% 4000
  15.   140 PRINT "Assembling code ...";:PROCassemble:PRINT '
  16.   150 INPUT "Filename to save module under (Return=""FontModule"") : " module$
  17.   160 IF module$="" THEN module$="FontModule"
  18.   170 SYS "OS_File",&0A,module$,&FFA,0,code%,O%
  19.   180 PRINT "Module saved as """;module$;""""
  20.   190 
  21.   200 END
  22.   210 
  23.   220 DEF PROCassemble
  24.   230 sp=13 : link=14 : pc=15:XWriteI%=&20100
  25.   240 FOR opt%=4 TO 6 STEP 2
  26.   250   P%=0:O%=code%
  27.   260   [ OPT opt%
  28.   270   equd    0
  29.   280   equd    ptrinit
  30.   290   equd    0
  31.   300   equd    0
  32.   310   equd    strtitle
  33.   320   equd    strhelp
  34.   330   equd    tblcommands
  35.   340   equs    STRING$(20,CHR$(0))
  36.   350   
  37.   360   .strtitle FNstr("FontDownLoader")
  38.   370   
  39.   380   .strhelp FNstr("FontDownLoader"+CHR$(9)+"1.00 ("+MID$(TIME$,5,11)+") (C) Richard Averill, January 1989.")
  40.   390   
  41.   400   .ptrinit
  42.   410   stmfd   (sp)!, {link}
  43.   420   
  44.   430   mov     r0, #6
  45.   440   mov     r3, #8192
  46.   450   swi     "XOS_Module"
  47.   460   
  48.   470   bvs     init_exit
  49.   480   
  50.   490   str     r2, [r12]
  51.   500   mov     r2, #0
  52.   510   add     r2, r2, #7168
  53.   520   str     r0, [r2]
  54.   530   
  55.   540   swi     "XOS_WriteS"
  56.   550   FNnla(  "Font-DownLoader v1.00 (C) Richard Averill, January 1989, installed.")
  57.   560   
  58.   570   .init_exit ldmfd (sp)!, {pc}
  59.   580   
  60.   590   .dla
  61.   600   ldr     r2, [r12]
  62.   610   cmp     r2, #0
  63.   620   moveqs  pc, link
  64.   630   
  65.   640   stmfd   (sp)!, {link}
  66.   650   stmfd   (sp)!, {r2}
  67.   660   ldrb    r2, [r0]
  68.   670   tst     r2, #&20
  69.   680   biceq   r2, r2, #&20
  70.   690   cmp     r2, #ASC("P")
  71.   700   bne     not_proportional
  72.   710   ldrb    r2, [r0, #1]
  73.   720   cmp     r2, #32
  74.   730   bgt     not_proportional
  75.   740   
  76.   750   .jumpover_loop
  77.   760   ldrb    r2, [r0], #1
  78.   770   cmp     r2, #32
  79.   780   ble     jumpover_loop
  80.   790   
  81.   800   stmfd   (sp)!, {r0}
  82.   810   adr     r0, proportional_codes
  83.   820   swi     "XOS_Write0"
  84.   830   ldmfd   (sp)!, {r0}
  85.   840   sub     r1, r1, #1
  86.   850   
  87.   860   .not_proportional
  88.   870   ldmfd   (sp)!, {r2}
  89.   880   cmp     r1, #0
  90.   890   bne     havetoload
  91.   900   
  92.   910   ldr     r2, [r12]
  93.   920   add     r2, r2, #7168
  94.   930   ldr     r2, [r2]
  95.   940   cmp     r2, #0
  96.   950   adreq   r0, msg_nofont
  97.   960   ldmeqfd (sp)!, {link}
  98.   970   orreq   link, link, #(1<<28)
  99.   980   moveqs  pc, link
  100.   990   b       download
  101.  1000   
  102.  1010   .havetoload
  103.  1020   mov     r1, r0
  104.  1030   mov     r0, #&40
  105.  1040   mov     r2, #0
  106.  1050   
  107.  1060   swi     "XOS_Find"
  108.  1070   
  109.  1080   cmp     r0, #0
  110.  1090   adreq   r0, msg_nofont
  111.  1100   ldmeqfd (sp)!, {link}
  112.  1110   orreq   link, link, #(1<<28)
  113.  1120   moveqs  pc, link
  114.  1130   
  115.  1140   .file_found
  116.  1150   mov     r1, r0
  117.  1160   mov     r0, #3
  118.  1170   ldr     r2, [r12]
  119.  1180   mov     r3, #6144
  120.  1190   mov     r4, #0
  121.  1200   
  122.  1210   swi     "XOS_GBPB"
  123.  1220   
  124.  1230   mov     r0, #1
  125.  1240   ldr     r1, [r12]
  126.  1250   add     r1, r1, #7168
  127.  1260   str     r0, [r1]
  128.  1270   
  129.  1280   .download
  130.  1290   swi     XWriteI%+2
  131.  1300   
  132.  1310   adr     r1, pre_dla
  133.  1320   add     r2, r1, #14
  134.  1330   .pre_loop
  135.  1340   ldrb    r0, [r1], #1
  136.  1350   swivc   XWriteI%+1
  137.  1360   swivcs  "XOS_WriteC"
  138.  1370   bvs     dlaexit
  139.  1380   cmp     r1, r2
  140.  1390   blt     pre_loop
  141.  1400   
  142.  1410   ldr     r1, [r12]
  143.  1420   add     r2, r1, #6144
  144.  1430   .dla_loop
  145.  1440   ldrb    r0, [r1], #1
  146.  1450   swis    XWriteI%+1
  147.  1460   swivcs  "XOS_WriteC"
  148.  1470   bvs     dlaexit
  149.  1480   cmp     r1, r2
  150.  1490   blt     dla_loop
  151.  1500   
  152.  1510   .dlaexit
  153.  1520   swi     XWriteI%+3
  154.  1530   LDMFD   (sp)!, {pc}
  155.  1540   
  156.  1550   .pre_dla equd  &251B281B : equd &521B0001 : equd &261B00 : equd &7F00
  157.  1560   
  158.  1570   .proportional_codes equd  &011B0102 : equd &03010170 : equd 0
  159.  1580   
  160.  1590   .msg_nofont
  161.  1600   equd  &D6 : FNstr("Font file not found")
  162.  1610   
  163.  1620   .tblcommands
  164.  1630   FNstr("DLA")
  165.  1640   equd  dla : equd &20100 : equd syndla : equd hlpdla : equd 0
  166.  1650   
  167.  1660   .hlpdla
  168.  1670   equs  "Font-DownLoader, (C) Richard Anthony Averill, January 1989."+CHR$(13)+CHR$(13)
  169.  1680   equs  "*DLA downloads FontAid font files to Canon-type NLQ printers."+CHR$(13)
  170.  1690   equs  "The P prefix, when present, causes proportional spacing to be enabled."+CHR$(13)
  171.  1700   equs "If no font file is given, the previous downloaded font will be re-downloaded."+CHR$(13)
  172.  1710   .syndla
  173.  1720   FNstr("Syntax: *DLA [P] [<font file>].")
  174.  1730   ]
  175.  1740 NEXT opt%
  176.  1750 ENDPROC
  177.  1760 
  178.  1770 DEF FNstr(str$)
  179.  1780 [ OPT opt% AND &E
  180.  1790 equs    str$ + CHR$(0)
  181.  1800 align
  182.  1810 ] :=opt%
  183.  1820 
  184.  1830 DEF FNnla(str$)
  185.  1840 [ OPT opt% AND &E
  186.  1850 equs    str$ + CHR$(10) + CHR$(13) + CHR$(0)
  187.  1860 align
  188.  1870 ] :=opt%
  189. >*SPOO.L
  190.