home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / 02CAT5MSGS.SFX / 05cat5msgs < prev   
Encoding:
Text File  |  1990-02-12  |  56.3 KB  |  1,513 lines

  1.  ************
  2. Topic 14        Mon Dec 05, 1994
  3. P.VACULIN                    at 07:43 EST
  4. Sub: Print Text from Internet Sources       
  5.  
  6. This a problem of printing text downloaded or buffered from Internet sources.
  7. 7 message(s) total.
  8.  ************
  9.  ------------
  10. Category 5,  Topic 14
  11. Message 1         Mon Dec 05, 1994
  12. P.VACULIN                    at 07:47 EST
  13.  
  14. I have had a problem with text I download or buffer from all sources from the
  15. Internet.  I guess that there are no carriage returns in the text I receive. 
  16. By this I mean that the print-out looks like one continuous 80 column print
  17. job. Is there some utility for the C=64 that will properly format this text so
  18. it is in a readable form? If so, please let me know.  I very much need the
  19. info so that I can have presentable documents for me and my work.
  20.                   << Patrick >>
  21.  ------------
  22. Category 5,  Topic 14
  23. Message 2         Mon Dec 05, 1994
  24. THE.OUTLAW                   at 18:17 EST
  25.  
  26. If you terminal program doesn't format text properly, you may have to use a
  27. Word Processor like TWS (The Write Stuff) to fix it.
  28.  ------------
  29. Category 5,  Topic 14
  30. Message 3         Mon Dec 05, 1994
  31. C128.JBEE                    at 23:17 EST
  32.  
  33.  Velvetta64 might do the trick, I believe what you need to add is linefeeds.
  34.  ------------
  35. Category 5,  Topic 14
  36. Message 4         Wed Dec 07, 1994
  37. P.VACULIN                    at 00:38 EST
  38.  
  39. I wonder....is there possibly a program on the UNIX host that could do this
  40. (add linefeeds).  If so, it might be much faster and possibly even automatic. 
  41. BTW  thanks to all of you who responded!!!! The reason I want to add the
  42. linefeeds automatically is that I frequently get e-mails regarding work that
  43. are in excess of 100 blocks.  This is a lot of text to have to edit:>
  44.  ------------
  45. Category 5,  Topic 14
  46. Message 5         Wed Dec 07, 1994
  47. H.HERMAN1                    at 02:28 EST
  48.  
  49. huh?
  50.  
  51. I don't understand this....
  52.  
  53. I thought UNIX uses LF's.
  54.  
  55. Howie
  56.  ------------
  57. Category 5,  Topic 14
  58. Message 6         Wed Dec 07, 1994
  59. BEN.GELAMP [Ben]             at 17:59 EST
  60.  
  61.   I'm not certain, myself. I just took a cursory look at a FAQ from the
  62. Internet, and its line terminators do indeed appear to be LF's.
  63.  
  64.   In any event, the fix isn't difficult, and all Commodore people have at
  65. their disposal the means to apply it: "real" programmers might laugh at
  66. Commodore BASIC, but I *still* claim it's a nicely capable language.
  67.  
  68.   Perhaps someone would be kind enough to translate the following program into
  69. Commodore BASIC? I'm very much afraid with the Commodore's keyboard in such
  70. sad shape, I can't try the code that's in my head :( The program, as is, works
  71. very nicely on the IBM.
  72.  
  73.   The advantage of doing it in BASIC is that it's so EASY to change if needed.
  74.  
  75. 100 INPUT "Translate what file "; i$
  76.  110 INPUT "To what file        "; o$
  77.  120 :
  78.  130 OPEN i$ FOR INPUT AS #1                    ' rem open 1,8,3,i$+",s,r"
  79.  140 OPEN o$ FOR OUTPUT AS #2                   ' rem open 2,8,4,o$+",s,w"
  80.  150 :
  81.  160 IF EOF(1) THEN 220                         ' something involving ST
  82.  170 a$ = INPUT$(1, 1)                          ' get #1, a$
  83.  180 v = ASC(a$)                                ' v=asc(a$+chr$(0))
  84.  190 IF v = 10 THEN PRINT #2, CHR$(13); : GOTO 160
  85.  200 PRINT #2, a$; : GOTO 160
  86.  210 :
  87.  220 CLOSE 2
  88.  230 CLOSE 1
  89.  240 PRINT "Done."
  90.  
  91.  ------------
  92. Category 5,  Topic 14
  93. Message 7         Tue Dec 27, 1994
  94. B.KURSON [Zotar]             at 14:10 EST
  95.  
  96. One option is if you can try a straight ascii download instead of using kermit
  97. or z-modem, etc... kermit or another protacol. Another thing you can do is D/L
  98. the program ACE from the library ghere. It has a conversion utility. Also set
  99. file type to binary if FTP'ing even tho it is a text file. Hope this helps,
  100. Zotar
  101.  ------------
  102.  ************
  103. Topic 15        Sun Jul 17, 1994
  104. D.TUOMI [Doctor]             (Forwarded) 
  105. Sub: Several Questions on Programming       
  106.  
  107. I'm working on a menu program and have several programming questions.
  108.  
  109. Doc.
  110. 21 message(s) total.
  111.  ************
  112.  ------------
  113. Category 5,  Topic 15
  114. Message 1         Sun Jul 17, 1994
  115. D.TUOMI [Doctor]             (Forwarded) 
  116.  
  117.  Okay, here is the details on my menu program.  It's designed to be the
  118.  menu for my user group's disk of the month.  The current version's
  119.  features are as follows:
  120.  
  121.  - Able to operate in either 64 or 128 mode
  122.  - Operates in either 40 or 80 colummn mode on the 128
  123.  - If menu is loaded in 128 mode, it will automatically load 64 software
  124.    and switch mode of operation and run
  125.  - Displays and Prints text files
  126.  
  127.  This is what version 1.14 is able to do.  I'm about to begin work on
  128.  version 2.0 of the software, but I have some questions which are stumping
  129.  me that I'd like to ask.  Rather than overwhelm with questions, I'll ask
  130.  one.  Wait for a hopeful reply or an acknowledgement that no one knows,
  131.  then I'll move on.  If the program is successful, perhaps you'll see a
  132.  PD version of it.
  133.  
  134.  First question.  I currently have the program where it will run in either
  135.  40 or 80 column mode on the 128.  The menu program can tell by the index
  136.  file it loads whether the selected program to load is supposed to run in
  137.  either 40 or 80 column mode and the program will instruct the person to
  138.  switch the monitor accordingly.  Is there anyway of telling if a user
  139.  has a 16k VDC or a 64k VDC?  That way if a program REQUIRES 64k VDC, I
  140.  could tell an unupgraded flat 128 owner that he cannot run the program
  141.  selected.  Any ideas?
  142.  
  143.  Doc.
  144.  ------------
  145. Category 5,  Topic 15
  146. Message 2         Sun Jul 17, 1994
  147. CBM-ED [e.g.bell]            (Forwarded) 
  148.  
  149.  Doc:
  150.   DT> Is there anyway of telling if a user  has a 16k VDC or a 64k
  151.   DT> VDC
  152.  
  153.  There may be.  I don't know for sure, but if I were trying to do it, I
  154.  think what I would do would be to write a character to an address in
  155.  the second 16K, 16384 for example, and see if it appeared on the screen.
  156.  That means a simple poke/peek using the routines at $cdcc/$cdda to
  157.  do that.  Actually, it would only take a poke cuz if the character showed
  158.  up it would suggest to me that the VDC is only 16K.  You *might* need to
  159.  twiddle bit 4 of register 24 in the VDC to do this tho.  It is supposed
  160.  to be 1 for 16K, but that is something done by software.  You may have to
  161.  do it tho to make sure your poke works correctly if there *is* 64K vdc
  162.  installed.
  163.  
  164.  Try it  like this:
  165.  
  166.  10 sys dec("cdcc"),64,18:rem        set for address 16384 
  167.  20 sys dec("cdcc"),0,19
  168.  30 sys dec("cdcc"),65:rem           poke the letter 'a' into memory there
  169.  35 :
  170.  40 sys dec("cdcc"),0,18:rem         now set for address 0
  171.  45 sys dec("cdcc"),0,19
  172.  50 sys dec("cdd8"):rreg a
  173.  60 if a=65 then <16K VDC chip>
  174.  
  175.  Line 60 will be your decision line.  I can't guarantee this will work.
  176.  It did on my 128 w/16K VDC.  What it does is poke the letter into 16384,
  177.  which doesn't exist, then read 0, and see if that character is in there.
  178.  Let me know if it works.  If so, this is a nice q&d routine to do what
  179.  you want.  The only down side is that it will put an 'a' in the upper
  180.  left corner of your 80 col screen if in that mode.  Another way to do it
  181.  would be to try another address in the 2nd 16K that corresponded with 
  182.  the zero bytes of padding between characters.... totally transparent to
  183.  the user that way.... just a little more figuring for the addresses, but
  184.  no real change in the routine other than that.
  185.  ------------
  186. Category 5,  Topic 15
  187. Message 3         Sun Jul 17, 1994
  188. H.HERMAN1                    (Forwarded) 
  189.  
  190.  Doc,
  191.  
  192.  This is the way Lou Wallace did it:
  193.  
  194.  20010 poke 23013,0:poke23026,0
  195.  20020 @walrus,1:@color,0,0,0:@clear,0,0,0
  196.  20030 scrdef,1,0,0,640,400,16000,0:@screen,1,0:@clear,255,0,0
  197.  20040 @screen,0
  198.  20050 vr=0:tq=@pixel,0,0,0:if tq=0 then vr=1
  199.  20060 poke23013,134:poke23026,134
  200.  20070 return
  201.  
  202.  It would be exceedingly helpful, however, before you run the above
  203.  subroutine, if you've booted BASIC 8.   :)
  204.  
  205.  Howie
  206.  ------------
  207. Category 5,  Topic 15
  208. Message 4         Sun Jul 17, 1994
  209. H.HERMAN1                    (Forwarded) 
  210.  
  211. Doc,
  212.  
  213. Thinking about it, a B8 RTL module should do it.
  214.  
  215. Howie
  216.  ------------
  217. Category 5,  Topic 15
  218. Message 5         Sun Jul 17, 1994
  219. D.TUOMI [Doctor]             (Forwarded) 
  220.  
  221. Thanks Mr. Bell, I'll try your routine and see what it does. Difficult getting
  222. around on the VDC, there doesn't seem to be any central location for
  223. information on this chip.  It's kind of scattered from the Programmer's
  224. Reference Guide, 128 Internals, etc.  Wish I had a Mapping the 128, probably
  225. some useful stuff in there too.  Anyone have a copy they want to sell?  Are
  226. there any other books which have this sort of technical data in it?
  227.  
  228. Howie, I appreciate the info, but my program is written to run stand alone. 
  229. BASIC-8, while a nice language, produces copyright problems as well as
  230. compatibilty problems with my routine to swtich to 64 mode to run a program. 
  231. Thanks for the info though, might need it in the future.
  232.  
  233. Anyone have any other ideas?
  234.  
  235. Doc.
  236.  ------------
  237. Category 5,  Topic 15
  238. Message 6         Mon Jul 18, 1994
  239. CBM-ED [e.g.bell]            (Forwarded) 
  240.  
  241.  You do need to get Mapping the 128.... good luck!  Them that has it
  242.  keeps it!  It has an excellent coverage of the VDC registers.  However
  243.  the routines I posted for you may be what you need.
  244.  ------------
  245. Category 5,  Topic 15
  246. Message 7         Mon Jul 18, 1994
  247. H.HERMAN1                    (Forwarded) 
  248.  
  249. Doc,
  250.  
  251. The BASIC 8 package includes a RunTime Library (RTL), which allows any user to
  252. create his/her own stand-alone BASIC 8 programs.  Any programs created with
  253. the RTL can be distributed however the programmer wants, including
  254. commercially.
  255.  
  256. I _think_ that IPAINT and IPORT might be examples of this.  Not sure. Perhaps
  257. someone might know?
  258.  
  259. More to the point, however, for your purpose you would need to first determine
  260. that the user has a 128, then you could call in a RTL module to read the vdc,
  261. based on the earlier post.
  262.  
  263. I am pretty sure that Ed's suggestion is the way to go.  However, I did want
  264. to point out an alternative, even if it is a bit more, abstract.
  265.  
  266. Howie
  267.  ------------
  268. Category 5,  Topic 15
  269. Message 8         Tue Jul 19, 1994
  270. D.TUOMI [Doctor]             (Forwarded) 
  271.  
  272. I don't actually own a copy of BASIC-8.  Nor do I know where to get one. It
  273. seems to be out of print.
  274.  
  275. Bell, I'm having problems with your routine.  On both my 128's the value
  276. returned is a 32.  This isn't the value expected, and one 128 has a 64k and
  277. the other has a 16k, so there should be some difference.  Have you tested this
  278. routine yourself?  If so, then I'll go back check it again, might of missed
  279. something myself.
  280.  
  281. Doc.
  282.  ------------
  283. Category 5,  Topic 15
  284. Message 9         Tue Jul 19, 1994
  285. CBM-ED [e.g.bell]            (Forwarded) 
  286.  
  287.  Doc:
  288.  I looked at the stuff I sent you and there is at least 1 error in it.
  289.  Try this....
  290.  
  291.  10 bank 15
  292.  20 sys dec("cdda"),,28:rreg a
  293.  30 a=a or 16:sys dec("cdcc"),a,28:sys 65378
  294.  35 :
  295.  40 sys dec("cdcc"),64,18
  296.  45 sys dec("cdcc"),0,19
  297.  50 sys dec("cdca"),65
  298.  55 :
  299.  60 sys dec("cdcc"),0,18
  300.  65 sys dec("cdcc"),0,19
  301.  70 sys dec("cdd8"):rreg b
  302.  75 sys dec("cdcc"),a and 239,28:sys 65378
  303.  80 :
  304.  85 if b <> 65 then <128 has 64K VDC>
  305.  
  306.  You must make SURE that when you run this the first position in the 80
  307.  column screen does not contain a lower case 'a'.  I can't test this
  308.  for you, but I'm reasonably sure it will work.  If you want a blow-by-blow:
  309.  
  310.  Line 10 makes sure all SYS calls are into the screen editor routines
  311.  Lines 20 and 30 set the machine for 64K VDC and resets the character set.
  312.  Lines 40 thru 50 poke a lower case 'a' into address 16384, one byte above
  313.    the standard 16K chip RAM.
  314.  Lines 60 thru 70 peek address 0 to see if it contains that lower case 'a'
  315.    If it does, the assumption is that address 16384=0 in the 16K VDC
  316.  Line 75 restores bit 4 of register 28 to 'off' and again calls the 
  317.    character set installation routine
  318.  Line 85 tests to see which size RAM is installed.
  319.    if 'a' is in address 0 it is assumed that you have a 16K VDC.
  320.  
  321.  Hope that all makes sense.  Sorry for the error in my earlier post.
  322.  On the upside the program is small.  Incidentally, this should work fine
  323.  in either 40 or 80 column mode.  Let me know if this one does the trick.
  324.  egb
  325.  ------------
  326. Category 5,  Topic 15
  327. Message 10        Wed Jul 20, 1994
  328. THE.OUTLAW                   (Forwarded) 
  329.  
  330. Doc, I just came across exactly what your looking for.... Fred Bowen wrote a
  331. utility to do what you ask. ------------------------------------------ 1 REM
  332. FRED'S NIFTY PROGRAM TO DETERMIN SIZE OF 8563 DRAM 10 BANK 15: AD=DEC("D600"):
  333. DA=AD+1: GOSUB 900            :REM SETUP ML 20 POKEAD,28: S=PEEK(DA):
  334. POKEDA,63                       :REM SELECT 64K 30 I=16896:
  335. SYSW,I/256,18:SYSW,IAND255,19SYSW,85,31       :REM WRITE $55 40 I=16896:
  336. SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC1 :REM READ HERE 50 I=17152:
  337. SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC2 :REM AND HERE 60 I=16896:
  338. SYSW,I/256,18:SYSW,IAND255,19:SYSW,170,31     :REM WRITE $AA 70 I=16896:
  339. SYSW,I/266,18:SYSW,IAND255,19:SYSR,,31:RREGC3 :REM READ HERE 80 I=17152:
  340. SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC4 :REM AND HERE 90 POKEAD,28:
  341. POKEDA,S: SYSDEC("FF62")                    :REM RESTORE 16/64K 100 IF C1=C2
  342. AND C3=C$ THEn PRINT "16K": ELSE PRINT "64K" :REM DID IT ECHO? 110 END 900
  343. FORI=0TO13: READA$: POKEDEC("180")+DEC(A$): NEXT 910 R=DEC("1800"): DATA
  344. 8E,00,D6,AD,01,D6,60             :LDA $D601: RTS 920 W=DEC("1807"): DATA
  345. 8E,00,D6,8D,01,D6,60             :STA $D601: RTS 930 RETURN
  346.  ------------
  347. Category 5,  Topic 15
  348. Message 11        Wed Jul 20, 1994
  349. THE.OUTLAW                   (Forwarded) 
  350.  
  351. Sorry about that.. I straightened it out... 1 REM FRED'S NIFTY PROGRAM TO
  352. DETERMIN SIZE OF 8563 DRAM 10 BANK 15: AD=DEC("D600"): DA=AD+1: GOSUB 900     
  353. :REM SETUP ML 20 POKEAD,28: S=PEEK(DA): POKEDA,63                       :REM
  354. SELECT 64K 30 I=16896: SYSW,I/256,18:SYSW,IAND255,19SYSW,85,31       :REM
  355. WRITE $55 40 I=16896: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC1 :REM READ
  356. HERE 50 I=17152: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC2 :REM AND HERE
  357. 60 I=16896: SYSW,I/256,18:SYSW,IAND255,19:SYSW,170,31     :REM WRITE $AA 70
  358. I=16896: SYSW,I/266,18:SYSW,IAND255,19:SYSR,,31:RREGC3 :REM READ HERE 80
  359. I=17152: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC4 :REM AND HERE 90
  360. POKEAD,28: POKEDA,S: SYSDEC("FF62")                    :REM RESTORE 16/64K 100
  361. IF C1=C2 AND C3=C$ THEn PRINT "16K": ELSE PRINT "64K" :REM DID IT ECHO? 110
  362. END 900 FORI=0TO13: READA$: POKEDEC("1800")+DEC(A$): NEXT 910 R=DEC("1800"):
  363. DATA 8E,00,D6,AD,01,D6,60             :LDA $D601: RTS 920 W=DEC("1807"): DATA
  364. 8E,00,D6,8D,01,D6,60             :STA $D601: RTS 930 RETURN
  365.  ------------
  366. Category 5,  Topic 15
  367. Message 12        Wed Jul 20, 1994
  368. D.TUOMI [Doctor]             (Forwarded) 
  369.  
  370. Well, Mr. Bell, I was unable to get your version of the program operational.
  371. Once again no matter what I do it comes back with the same value, in this case
  372. a "32."
  373.  
  374. After much decyphering I did have more luck with Outlaw's routine.  It
  375. actually worked perfectly on my flat 128, and my 128d.  It successfully was
  376. able to tell the difference between the two.  Does anyone have an upgraded
  377. flat 128 that we could try this program on?  It wouldn't be of much help if
  378. the routine only worked on 128d's and 16k flat 128's and not on upgraded 64k
  379. flat 128's.
  380.  
  381. Doc.
  382.  ------------
  383. Category 5,  Topic 15
  384. Message 13        Thu Jul 21, 1994
  385. CBM-ED [e.g.bell]            (Forwarded) 
  386.  
  387.  Well, I can't speak for the 64K VDC, but the 16K VDC of my 128 returns
  388.  the 65.  I have the chips now and will have to install them and give that
  389.  a try.  But if Fred Bowen's routine works, I'd suggest you go with that.
  390.  I can't imagine why it would not work on an upgraded VDC, tho CAM's posts
  391.  were unreadable for me.  (*sn Cam.... keep repeating  *sn)
  392.  ------------
  393. Category 5,  Topic 15
  394. Message 14        Thu Jul 21, 1994
  395. H.HERMAN1                    (Forwarded) 
  396.  
  397.  Ed,
  398.  
  399.  Ah, good!  They arrived!!!
  400.  
  401.  >.....             tho CAM's posts
  402.  > were unreadable for me.  (*sn Cam.... keep repeating  *sn)
  403.  
  404.  Thank goodness....
  405.  
  406.  I was about to return my new glasses to the optician.....
  407.  
  408.  Howie
  409.  ------------
  410. Category 5,  Topic 15
  411. Message 15        Thu Jul 21, 1994
  412. THE.OUTLAW                   (Forwarded) 
  413.  
  414. That'll teach me to do things late at nite! At least the 2nd time it was
  415. readable! :>
  416.  ------------
  417. Category 5,  Topic 15
  418. Message 16        Thu Jul 21, 1994
  419. THE.OUTLAW                   (Forwarded) 
  420.  
  421. Uh Ed? I think you misplaced this post. Should be cat 3 top 18? Glad I'm not
  422. the only one who makes mistakes! <g>  ;>
  423.  ------------
  424. Category 5,  Topic 15
  425. Message 17        Thu Jul 21, 1994
  426. D.TUOMI [Doctor]             (Forwarded) 
  427.  
  428. I'm not sure why it doesn't work.  I read once in the C128 Internals book
  429. though that BASIC is too slow for most VDC operations and that their programs
  430. written in BASIC didn't operate reliably.  Perhaps that's the cause.  The
  431. Outlaw's routine worked fine, although it took a bit of work to figure it out.
  432. I actually rewrote the routine posted, bcause it was a little "over-
  433. engineered" for my tastes.  I got it down to about a quarter of its original
  434. size and it still works the same.
  435.  
  436. Doc.
  437.  ------------
  438. Category 5,  Topic 15
  439. Message 18        Fri Jul 22, 1994
  440. CBM-ED [e.g.bell]            (Forwarded) 
  441.  
  442.  Here is the program The.Outlaw posted from Fred Bowen.  :)
  443.  
  444.  
  445.  
  446.  1 REM FRED'S NIFTY PROGRAM TO DETERMIN SIZE OF 8563 DRAM 
  447.  10 BANK 15: AD=DEC("D600"): DA=AD+1: GOSUB 900            :REM SETUP ML 
  448.  20 POKEAD,28: S=PEEK(DA): POKEDA,63                       :REM SELECT 64K 
  449.  30 I=16896: SYSW,I/256,18:SYSW,IAND255,19SYSW,85,31       :REM WRITE $55 
  450.  40 I=16896: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC1 :REM READ HERE 
  451.  50 I=17152: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC2 :REM AND HERE
  452.  60 I=16896: SYSW,I/256,18:SYSW,IAND255,19:SYSW,170,31     :REM WRITE $AA 
  453.  70 I=16896: SYSW,I/266,18:SYSW,IAND255,19:SYSR,,31:RREGC3 :REM READ HERE 
  454.  80 I=17152: SYSW,I/256,18:SYSW,IAND255,19:SYSR,,31:RREGC4 :REM AND HERE 
  455.  90 POKEAD,28: POKEDA,S: SYSDEC("FF62")                    :REM RESTORE 16/64K
  456.  
  457.  100 IF C1=C2 AND C3=C$ THEn PRINT "16K": ELSE PRINT "64K" :REM DID IT ECHO? 
  458.  110 END 
  459.  900 FORI=0TO13: READA$: POKEDEC("1800")+DEC(A$): NEXT 
  460.  910 R=DEC("1800"):DATA 8E,00,D6,AD,01,D6,60             :LDA $D601: RTS 
  461.  920 W=DEC("1807"): DATA 8E,00,D6,8D,01,D6,60             :STA $D601: RTS 
  462.  930 RETURN
  463.  
  464.  [Reformatted w/RTCM 2.04 Editor Overlay]:)
  465.  ------------
  466. Category 5,  Topic 15
  467. Message 19        Fri Jul 22, 1994
  468. CBM-ED [e.g.bell]            (Forwarded) 
  469.  
  470.  Incidentally, I just noticed a but in the prog from Fred, tho it 
  471.  was probably just mistyped when posted.  In line 100, C$ should be
  472.  C4... someone was just holding the shift key when they hit the 4.  :)
  473.  ------------
  474. Category 5,  Topic 15
  475. Message 20        Fri Jul 22, 1994
  476. THE.OUTLAW                   (Forwarded) 
  477.  
  478. Your Right Ed! Thanks for RE-Redoing the post! I was about to try it a 3rd
  479. time and see if I could avoid screwing it up again! :>
  480.  ------------
  481. Category 5,  Topic 15
  482. Message 21        Sat Jul 23, 1994
  483. D.TUOMI [Doctor]             (Forwarded) 
  484.  
  485. I got it going, but I'm curious.  This program basically makes the check twice
  486. with two different values.  Is there a reason for this redundancy?
  487.  
  488. Doc.
  489.  ------------
  490.  ************
  491. Topic 16        Sun Jul 24, 1994
  492. CBM-ED [e.g.bell]            (Forwarded) 
  493. Sub: Printer Questions                      
  494.  
  495.  I have run into a problem that my manuals do not cover.  Can someone help
  496.  me program my printer.  (A printer Programmer's forum)
  497. 5 message(s) total.
  498.  ************
  499.  ------------
  500. Category 5,  Topic 16
  501. Message 1         Sun Jul 24, 1994
  502. CBM-ED [e.g.bell]            (Forwarded) 
  503.  
  504.  This seems to be an uncovered topic, and I have a need that I can't find
  505.  the answer to in my printer manual.  I am hoping someone may be able to
  506.  provide a solution.
  507.  
  508.  In GWBASIC on IBM machines, there is a command called WIDTH which is used
  509.  to set the width of printout.  What are the escapes this command sends to
  510.  the printer.  I'm having a problem with my printouts in transparent mode
  511.  doing line feeds at column 80.  I know that the WIDTH command fixes this
  512.  when I do IBM BASIC stuff.  Just can't find the right codes to send in
  513.  Commodore BASIC.  Thanks!
  514.  ------------
  515. Category 5,  Topic 16
  516. Message 2         Mon Jul 25, 1994
  517. H.HERMAN1                    (Forwarded) 
  518.  
  519.  Ed,
  520.  
  521.  I do not know exactly what WIDTH sends.  However, the following should
  522.  work, with Epson emulating printers:
  523.  
  524.  print#1,chr$(27)+chr$(81)+255
  525.  
  526.  If the above does not work, try this variation:
  527.  
  528.  print#1,chr$(27)+chr$(81)+"255"
  529.  
  530.  One or the other will define an Epson printer's right margin to 255.
  531.  Therefore, _only_ after every 255 characters the printer will insert a CR,
  532.  or CR/LF, depending upon how you set things up.
  533.  
  534.  If this doesn't do it, let me know, and I'll hunt through some manuals
  535.  for more ideas.
  536.  
  537.  Howie
  538.  (who has not tested this, so can offer
  539.   no gaurantees that it will work......)
  540.  ------------
  541. Category 5,  Topic 16
  542. Message 3         Mon Jul 25, 1994
  543. H.HERMAN1                    (Forwarded) 
  544.  
  545. Oooopsss...
  546.  
  547. Assuming those lines do it, be sure to add a semi-colon:
  548.  
  549. print#1,chr$(27)+chr$(81)+255;
  550.  
  551. or:
  552.  
  553. print#1,chr$(27)+chr$(81)+"255";
  554.  
  555. Howie
  556.  ------------
  557. Category 5,  Topic 16
  558. Message 4         Mon Jul 25, 1994
  559. CBM-ED [e.g.bell]            (Forwarded) 
  560.  
  561.  Howie:  I had already tried those commands unsuccessfully.  Thanks for
  562.  the input tho.  There is still a happy ending to this story though.  
  563.  The problem was my stupidity.  I thought I was setting my interface into
  564.  transparent mode, but I inadvertently set it for 1525 mode.  All the
  565.  dips go one way for that mode, the other for transparent... thus I was
  566.  doomed to 80 cols at that setting no matter what.  The upside is that I
  567.  found and fixed the situation and all is working well now.   duhhhhhh!
  568.  ------------
  569. Category 5,  Topic 16
  570. Message 5         Tue Jul 26, 1994
  571. H.HERMAN1                    (Forwarded) 
  572.  
  573. Ed,
  574.  
  575. I am happy to hear you have the prob solved.  It is strange how, at times, we
  576. can get so involved with the nitty-gritty details, that it is easy to forget a
  577. basic, like a correct interface setting...
  578.  
  579. Howie
  580.  ------------
  581.  ************
  582. Topic 17        Fri Aug 12, 1994
  583. D.HARKER1 [Dan]              (Forwarded) 
  584. Sub: PETASCII printer codes                 
  585.  
  586. Help needed with the differences between PETASCII and ASCII
  587. 1 message(s) total.
  588.  ************
  589.  ------------
  590. Category 5,  Topic 17
  591. Message 1         Fri Aug 12, 1994
  592. D.HARKER1 [Dan]              (Forwarded) 
  593.  
  594.   I need some help with the PETASCII printer codes for a program I'm working
  595.  on. I need to know if the PETASCII codes (dec)0 - (dec)31 are the same as
  596.  in standard ASCII. I especially need to know the ones for paper movement
  597.  (formfed, vertical tab, etc.). Can someone who has a manual for a Commodore
  598.  printer help me and/or upload the codes?
  599.  
  600.   On another question (sorry, don't know where else to ask this), is there a
  601.  'standard' number of lines to a printed page on a printer? If so, what is the
  602.  number?
  603.  
  604.   Thanks in advance for any help anyone can give.
  605.  
  606.                                       Dan
  607.  
  608.  
  609.  ------------
  610.  ************
  611. Topic 18        Fri Feb 10, 1995
  612. D.BELTER                     (Forwarded) 
  613. Sub: Basic to ML and Back again...          
  614.  
  615. Just some routines that will you program in ML and Basic!
  616. 4 message(s) total.
  617.  ************
  618.  ------------
  619. Category 5,  Topic 18
  620. Message 1         Fri Feb 10, 1995
  621. D.BELTER                     (Forwarded) 
  622.  
  623. I thought the following would be helpful for anyone who programs on the C64 in
  624. ML and Basic. Some will let you SEND NNumbers or Text to ML and also  RECIEVE
  625. text from ML.  One last thing,  I couldn't figure out how to save the TEXT to
  626. a Basic area of memory, so it would be good if you did if you did a
  627. C$=MID(C$,1) which will move C$ from beyond $C000 to normal basic memory.  If
  628. someone has an SYS (JSR) that would do this please tell me since I could never
  629. get it to work.
  630.  
  631. print"1. asm":print"2. run":inputa:ifa=1then1070
  632. z$=chr(0):a=2000:b=125:a$="var. test"+z$:b$="ptrget test":q$=chr(34)
  633. printq$;:sys49152+3,b$,c$:c=len(c$):c$=mid(c$,1)
  634. printq$:printc$,c,len(c$):gosub1061 sys49152,a$,a,a+a,a+a+a,a+a+a+a,b+b,b
  635. print sys49152,"i read this"+z$,1000,-3000,5000,7000,125,255 end sys45195c$
  636. vp=peek(780)+peek(782)*256:printvp;peek(vp+1)+peek(vp+2)*256:return sys 999
  637. .org 49152 .mem
  638.  
  639. ;******* c o n s t a n t s *******
  640.  
  641. ; < - lo  ; > - hi
  642.  
  643. chrget   =$0073 ;get comma chkcom   =$aeff ;get comma frmevl   =$ad9e strout  
  644. =$ab1e ;a-lo,y-hi ptrget   =$b08b ;a-lo,y-hi conint   =$b1aa ;y-lo,a-hi len   
  645. =$b77c frestr   =$b6a3 ;a-len,x-lo,y-hi comp'len =$b3a2 getbyt   =$b79b ;x-lo
  646. getnum   =$b7eb ;get 16 and 8 bit getadr   =$b7f7 ;y-lo,a-hi linprt   =$bdcd
  647. ;print a-hi,x-lo getinx   =$e200 ;same as - getbyt chkcmm   =$e20e ;same as -
  648. chkcom chrout   =$ffd2 movstr   =46728 ;a-len;x-lo;y-hi
  649.  
  650. ;******* v a r i a b l e s *******
  651.  
  652. linnum   =$14 index    =$22 datlin   =$64 var      =$fb pointer  =$fd length  
  653. =$02
  654.  
  655. ;*******  start of program  ******
  656.  
  657. :     jmp big
  658.  
  659. ;ptrget ascii test
  660.  
  661. :     jsr chrget :     jsr ptrget :     sta index :     sty index+1 :     ldy
  662. #00 :     lda (index),y :     sta length :     iny :     lda (index),y :    
  663. sta pointer :     iny :     lda (index),y :     sta pointer+1 :     ldy #00 - 
  664. lda (pointer),y :     jsr chrout :     iny :     cpy length :     bne - :    
  665. jmp send'var
  666.  
  667. ;*** get asc text
  668.  
  669. big = *
  670.  
  671. :     jsr chrget :     jsr frmevl :     jsr frestr :     sta length :     lda
  672. index    ;lo :     ldy index+1  ;hi :     jsr strout :     jsr space
  673.  
  674. ;*** get two bytes   ;positives
  675.  
  676. :     jsr chkcmm :     jsr frmevl :     jsr getadr     ;y-lo  a-hi :     ldx
  677. linnum     ;x-lo :     lda linnum+1   ;a-hi :     jsr linprt :     jsr space
  678.  
  679. ;*** get two bytes  ;negatives
  680.  
  681. :     jsr chkcom :     jsr frmevl :     jsr conint ;y-lo ; a-hi :     lda
  682. datlin ;hi than lo byte :     ldx datlin+1 :     jsr linprt :     jsr space
  683.  
  684. ;*** get two bytes   ;positives
  685.  
  686. :     jsr chkcom :     jsr frmevl :     jsr getadr   ;y-lo  a-hi :     ldx
  687. linnum   ;or linnum :     lda linnum+1 :     jsr linprt :     jsr space
  688.  
  689. ;*** get two bytes than one byte
  690.  
  691. :     jsr chkcom :     jsr getnum :     stx var :     ldx linnum :     lda
  692. linnum+1 :     jsr linprt :     jsr space :     lda #00 :     ldx var :    
  693. jsr linprt :     jsr space
  694.  
  695. ;*** get one byte
  696.  
  697. :     jsr getinx :     lda #00 :     jsr linprt :     rts
  698.  
  699. space lda "," :     jmp chrout :     jsr linprt
  700.  
  701. send'var = *
  702.  
  703. :     jsr chrget :     jsr ptrget :     sta index :     sty index+1 :     ldy
  704. #00 :     lda #estore-store :     sta (index),y :     iny :     lda <store :  
  705. sta (index),y :     iny :     lda >store :     sta (index),y :     rts
  706.  
  707. store = * :     .asc "send this stuff" estore = *
  708.  
  709.  ------------
  710. Category 5,  Topic 18
  711. Message 2         Fri Feb 10, 1995
  712. E.GBELL [e.g.bell]           (Forwarded) 
  713.  
  714.  Dave:  could you resend this message, but save it with  '*sn' so that
  715.  the format does not get trashed.  :)  I love source code of any size,
  716.  but this would be a bit of work getting into a format I could understand
  717.  and work with easily.   Thanks!
  718.  ------------
  719. Category 5,  Topic 18
  720. Message 3         Fri Feb 10, 1995
  721. C128.JBEE                    (Forwarded) 
  722.  
  723.  You need to use *sn when sending formatted text to GEnie :)
  724.  ------------
  725. Category 5,  Topic 18
  726. Message 4         Wed Feb 22, 1995
  727. D.BELTER                     (Forwarded) 
  728.  
  729.  Ok lets try this again,  that was strange since all it was formatted with
  730.  was spaces,  never had a problem before and it looked ok before I saved it.
  731.  
  732.  So here it again...
  733.  
  734.  print"1. asm":print"2. run":inputa:ifa=1then1070
  735.  z$=chr(0):a=2000:b=125:a$="var. test"+z$:b$="ptrget test":q$=chr(34)
  736.  printq$;:sys49152+3,b$,c$:c=len(c$):c$=mid(c$,1)
  737.  printq$:printc$,c,len(c$):gosub1061
  738.  sys49152,a$,a,a+a,a+a+a,a+a+a+a,b+b,b
  739.  print
  740.  sys49152,"i read this"+z$,1000,-3000,5000,7000,125,255
  741.  end
  742.  sys45195c$
  743.  vp=peek(780)+peek(782)*256:printvp;peek(vp+1)+peek(vp+2)*256:return
  744.  sys 999
  745.  .org 49152
  746.  .mem
  747.  
  748.  ;******* c o n s t a n t s *******
  749.  
  750.  ; < - lo  ; > - hi
  751.  
  752.  chrget   =$0073 ;get comma
  753.  chkcom   =$aeff ;get comma
  754.  frmevl   =$ad9e
  755.  strout   =$ab1e ;a-lo,y-hi
  756.  ptrget   =$b08b ;a-lo,y-hi
  757.  conint   =$b1aa ;y-lo,a-hi
  758.  len      =$b77c
  759.  frestr   =$b6a3 ;a-len,x-lo,y-hi
  760.  comp'len =$b3a2
  761.  getbyt   =$b79b ;x-lo
  762.  getnum   =$b7eb ;get 16 and 8 bit
  763.  getadr   =$b7f7 ;y-lo,a-hi
  764.  linprt   =$bdcd ;print a-hi,x-lo
  765.  getinx   =$e200 ;same as - getbyt
  766.  chkcmm   =$e20e ;same as - chkcom
  767.  chrout   =$ffd2
  768.  movstr   =46728 ;a-len;x-lo;y-hi
  769.  
  770.  ;******* v a r i a bl e s *******
  771.  
  772.  linnum   =$14
  773.  index    =$22
  774.  datlin   =$64
  775.  var      =$fb
  776.  pointer  =$fd
  777.  length   =$02
  778.  
  779.  ;*******  start of program  ******
  780.  
  781.  :     jmp big
  782.  
  783.  ;ptrget ascii test
  784.  
  785.  :     jsr chrget
  786.  :     jsr ptrget
  787.  :     sta index
  788.  :     sty index+1
  789.  :     ldy #00
  790.  :     lda (index),y
  791.  :     sta length
  792.  :     iny
  793.  :     lda (index),y
  794.  :     sta pointer
  795.  :     iny
  796.  :     lda (index),y
  797.  :     sta pointer+1
  798.  :     ldy #00
  799.  -     lda (pointer),y
  800.  :     jsr chrout
  801.  :     iny
  802.  :     cpy length
  803.  :     bne -
  804.  :     jmp send'var
  805.  
  806.  ;*** get asc text
  807.  
  808.  big = *
  809.  
  810.  :     jsr chrget
  811.  :     jsr frmevl
  812.  :     jsr frestr
  813.  :     sta length
  814.  :     lda index    ;lo
  815.  :     ldy index+1  ;hi
  816.  :     jsr strout
  817.  :     jsr space
  818.  
  819.  ;*** get two bytes   ;positives
  820.  
  821.  :     jsr chkcmm
  822.  :     jsr frmevl
  823.  :     jsr getadr     ;y-lo  a-hi
  824.  :     ldx linnum     ;x-lo
  825.  :     lda linnum+1   ;a-hi
  826.  :     jsr linprt
  827.  :     jsr space
  828.  
  829.  ;*** get two bytes  ;negatives
  830.  
  831.  :     jsr chkcom
  832.  :     jsr frmevl
  833.  :     jsr conint ;y-lo ; a-hi
  834.  :     lda datlin ;hi than lo byte
  835.  :     ldx datlin+1
  836.  :     jsr linprt
  837.  :     jsr space
  838.  
  839.  ;*** get two bytes   ;positives
  840.  
  841.  :     jsr chkcom
  842.  :     jsr frmevl
  843.  :     jsr getadr   ;y-lo  a-hi
  844.  :     ldx linnum   ;or linnum
  845.  :     lda linnum+1
  846.  :     jsr linprt
  847.  :     jsr space
  848.  
  849.  ;*** get two bytes than one byte
  850.  
  851.  :     jsr chkcom
  852.  :     jsr getnum
  853.  :     stx var
  854.  :     ldx linnum
  855.  :     lda linnum+1
  856.  :     jsr linprt
  857.  :     jsr space
  858.  :     lda #00
  859.  :     ldx var
  860.  :     jsr linprt
  861.  :     jsr space
  862.  
  863.  ;*** get one byte
  864.  
  865.  :     jsr getinx
  866.  :     lda #00
  867.  :     jsr linprt
  868.  :     rts
  869.  
  870.  space lda ","
  871.  :     jmp chrout
  872.  :     jsr linprt
  873.  
  874.  send'var = *
  875.  
  876.  :     jsr chrget
  877.  :     jsr ptrget
  878.  :     sta index
  879.  :     sty index+1
  880.  :     ldy #00
  881.  :     lda #estore-store
  882.  :     sta (index),y
  883.  :     iny
  884.  :     lda <store
  885.  :     sta (index),y
  886.  :     iny
  887.  :     lda >store
  888.  :     sta (index),y
  889.  :     rts
  890.  
  891.  store = *
  892.  :     .asc "send this stuff"
  893.  estore = *
  894.  
  895.  
  896.  
  897.  ------------
  898.  
  899. 5 ? ************
  900. Topic 20        Sun Sep 11, 1994
  901. T.BROWN25 [Tim]              (Forwarded) 
  902. Sub: Hi-Res Printing                        
  903.  
  904. I need help compacting character data stored in RAM
  905.  
  906.  
  907. 5 message(s) total.
  908.  ************
  909.  ------------
  910. Category 5,  Topic 20
  911. Message 1         Sun Sep 11, 1994
  912. T.BROWN25 [Tim]              (Forwarded) 
  913.  
  914.  Greetings to one and all,
  915.     And thanks for reading this help request!
  916.  
  917.     I've encountered a bit of a dilemma while coding a paint program and would
  918. appreciate any advice on how to deal with it.
  919.  
  920.     The system I'm working with is a C64 & 1541 II, no JIFFYDOS or any other
  921. enhancements.
  922.  
  923.     Basically, the program is a utility to create multicolor bitmap screens
  924. for use in other programs.  RUNPaint, DOODLE, and GEOS may be similiar.  You
  925. can't easily use GEOS pics in non-GEOS programs, however.
  926.     I want to prevent the tool icons from cluttering the drawing area, and to
  927. not have to scroll.  The whole screen as it appears in the using program needs
  928. to be visible.  The program will have several features, but for now, this is
  929. what is coded:
  930.  
  931.  - multicolor bitmap
  932.  - keyboard & joystick control
  933.  - line draw routine
  934.  - 16 x  zoom
  935.  - printing keyboard characters in
  936.    8,10,12,14, & 16 point sizes
  937.  
  938.  Future enhancements: mouse, REU, patterns, etc.
  939.  
  940.     Everything is coded in machine language and bug free.  The program works
  941. fine for now.  The problem that I have is that the character data eats too
  942. much memory
  943.  KERNAL ROM is the only ROM I use, no BASIC or CHARACTER ROM involved in the
  944. program.  For now there is plenty of available RAM.
  945.  However, if a selection of styles to print is desired, (and it is), another
  946. set of character data would break the bank.
  947.  
  948.  What I need is a way of compacting my character data.
  949.  
  950.     What follows is an example of how I print characters to the screen.  The
  951. size of the character will determine the number of pixels tall, or rows. 
  952. Using bit-pairs, more than one screen byte may have to be used per row.  An 8-
  953. point character will have 4  bit-pairs in each of 8 rows.  A 10-point
  954. character will have 5 bit-pairs in each of 10 rows, etc.
  955.  
  956.  8-point: 00000000
  957.           00001100
  958.           00111111
  959.           00110011
  960.           00111111
  961.           00110011
  962.           00110011
  963.           00110011
  964.  
  965.  10-point: 00000000 00000000
  966.            00001111 00000000
  967.            00111111 11000000
  968.            00110000 11000000
  969.            00110000 11000000
  970.            00111111 11000000
  971.            00111111 11000000
  972.            00110000 11000000
  973.  
  974.            00110000 11000000
  975.            00110000 11000000
  976.            00000000 00000000
  977.            00000000 00000000
  978.            00000000 00000000
  979.            00000000 00000000
  980.            00000000 00000000
  981.            00000000 00000000
  982.  
  983.  What I would like to be able to do is have one size defined in RAM and be
  984. able to expand it at will to fit the other sizes.
  985.  But, as can be seen from the above examples, taking the data from the 8-point
  986. character and manipulating it to form the 10-point character is not exactly
  987. feasable.  Therefore, a seperate set of data is required for each size
  988. character set.
  989.  
  990.     At present, I've compacted the 20 bytes that define the 10-point "A" in
  991. the above example so that it takes only 12.5 bytes to store the data.  The
  992. data is stored 10 bits at a time like so:
  993.  
  994.  00000000 00000011 11000011 11111100
  995.  11000011 00110000 11001111 11110011
  996.  11111100 11000011 00110000 11001100
  997.  00110000
  998.  
  999.  During printing, a subroutine breaks-up the data and aligns it into columns,
  1000. then plots it to the screen.
  1001.  
  1002.  So, for one font with all sizes, the memory requirements for storage is as
  1003. follows:
  1004.  
  1005.  8pnt-   8 x 91 char =  728 bytes
  1006.  10pt-12.5 x 91 char = 1137.5
  1007.  12pt-  18 x 91 char = 1638 bytes
  1008.  14pt-24.5 x 91 char = 2229.5
  1009.  16pt-  32 x 91 char = 2912 bytes
  1010.                      -------------
  1011.              total   = 8645 bytes
  1012.  
  1013.  What could I do differently to save memory and still accomplish the same
  1014. thing?  I'd like to have different styles in memory at the same time; at
  1015. present I can't.
  1016.  
  1017.     If anyone can understand this spaghetti that I've written, please give me
  1018. whatever advise that you can.  I thank you in advance.
  1019.  
  1020.              Sincerely,
  1021.  
  1022.              T.J. Brown
  1023.  ------------
  1024. Category 5,  Topic 20
  1025. Message 2         Sun Sep 11, 1994
  1026. CBM-ED [e.g.bell]            (Forwarded) 
  1027.  
  1028.  TB:
  1029.   TB>  8-point: 00000000
  1030.   TB>           00001100
  1031.   TB>           00111111
  1032.  
  1033.   TB>  10-point: 00000000 00000000
  1034.   TB>            00001111 00000000
  1035.   TB>            00111111 11000000
  1036.  
  1037.   TB> taking the data from the 8-point character and manipulating it
  1038.   TB> to form the 10-point character is not exactly feasable
  1039.  
  1040.  Why not?  It seems to me that the only problem you are running into here
  1041.  is locking yourself into thinking in terms of 8 bit bytes.  I can 
  1042.  understand why, but from what you are showing here, except for the 
  1043.  height, it would be a fairly straight forward procedure to create
  1044.  wider or narrower characters.
  1045.  
  1046.  Perhaps it is the 'spaghetti' you have written.  I know I've talked to
  1047.  you about this before.  What algorithm did you use to finally compact
  1048.  the font you have compacted.  I can see one tricky part would be the
  1049.  fact that you are working with multi-color, but your point sizes are all
  1050.  in multiples of 2, right?  Here is what I suggested to you before, as
  1051.  I remember it.
  1052.  
  1053.  Decide on one or more 'key' bits in a letter's byte, perhaps decided by
  1054.  the point size being rotated.  For example:
  1055.  
  1056.          10 pt.    bits 6/7
  1057.          14 pt.    bits 4/5
  1058.          12 pt     bits 2/3
  1059.          16 pt     bits 0/1
  1060.  
  1061.  Then, your expansion routine could duplicate the appropriate bit pairs
  1062.  while expanding... for example, using the above scheme, your routine for
  1063.  a 10 point font would duplicate bits 6/7 in the expansion, giving you
  1064.  a 10 point 'emulation' of th original character... it would have 2 
  1065.  extra bits in it, which I don't think you are going to be able to avoid
  1066.  under any circumstance, for each row of the character in the bitmap, 
  1067.  but they would be 'predictable' throughout any character set,so to speak.
  1068.  Such a scheme would probabl work from the middle instead of the ends of
  1069.  course (in terms of bit pairs duplicated).  The height would be done 
  1070.  similarly as far as deciding which 'row' of bit pairs was duplicated 
  1071.  in the final character (or rows) to get the desired extra number of
  1072.  rows to bring the character up to final height.  Does this make sense?
  1073.  If I were doing the project, I *think* this is the approach I would take
  1074.  as I understand things right now.
  1075.  
  1076.  From you demo characters, the only fly in the ointment above would be
  1077.  the 16 point characters, believe it or not, because one row of your
  1078.  example (one column actually) is all '00' pairs, naturally, to allow
  1079.  for intercharacter spacing.  The obvious solution to this (to me) is to
  1080.  make the column affected by a 16 pitch the same as the one for 14 pitch,
  1081.  or else make it user-selectable between pairs 2/3, 4/5, and 6/7... if 
  1082.  you get my drift... this could even be presented as a feature, allowing
  1083.  a minor difference between characters in a given font. (You could evene
  1084.  extend the principle, I suppose to include 10, 12, and 14 point fonts,
  1085.  AND to the height expansion as well).
  1086.  
  1087.  For example:  For a 10 point font, you need 10 bits for your character.
  1088.  Create it using ASL:ROL combinations, but when you get to the specified
  1089.  'duplicate' bit pair, do it twice.  When you get to the specified 
  1090.  'duplicate' row of bit pairs, do the whole row twice.  For a 12 point 
  1091.  font, you would have 2 specified bit pairs and 4 specified rows of bit
  1092.  pairs. For 14, you would have 3 specified bit pairs and 6 specified
  1093.  
  1094.  rows of bits, and for 16, you would have all 4 bit pairs and all 8 rows
  1095.  for duplication.  In each of the expansions, you could allow user selection
  1096.  of which bit pairs and rows were slated for double expansion in both 
  1097.  directions, even allowing them to be the same ones... lots of effect with
  1098.  no RAM overhead, even with a single font.
  1099.  
  1100.  The down side is the same as what I mentioned before.  You have to track
  1101.  the position of each character so you will know where to start next.  
  1102.  You have to stop thinking in terms of 8 bit 'cards', tho this might 
  1103.  just involve only keeping a record of where the previous character 
  1104.  started in the bit map and adding an appropriate amount to get to the 
  1105.  next location.... same for the height.  You would have to do this anyway
  1106.  unless you are sticking exclusively to starting on 8 bit boundaries, 
  1107.  which I can't imagine you would be doing.... you said you already have
  1108.  plot routines.  Incidentally, a down side of all of this is that it would
  1109.  probably preclude proportional font, but that might be kind of limited
  1110.  anyway by the multi-color thing.  But if it was important, you *might*
  1111.  want to take a clue from the way proportional font characters are 
  1112.  defined for printers that support user-creatable fonts... they have
  1113.  specifiers I believe, right in the character set, to tell the printer
  1114.  how much spacing is required by the character, etc.
  1115.  
  1116.  I guess all this is enough to consider for now.  Remember, the above is
  1117.  only theory, not any practical experience.  It may be too confining for
  1118.  what you want to do.  In theory, though, I believe it does what  you 
  1119.  want.  It eliminates the need for compaction entirely... it would use
  1120.  normal font files and just work with the data from there, giving you also
  1121.  a very predictable location for data for all characters, which would
  1122.  allow you a way to set up a table to use to determine absolute inter-
  1123.  characer spacing required for each character... perhaps 2 tables, one
  1124.  for space 'before' the character and one for number of actual pixels
  1125.  in the character.  That seems like it would work quite nicely at a cost
  1126.  of no more than 512 bytes.  (I like that idea.  hehehe  :)
  1127.  ------------
  1128. Category 5,  Topic 20
  1129. Message 3         Sun Sep 11, 1994
  1130. CBM-ED [e.g.bell]            (Forwarded) 
  1131.  
  1132.  BTW, why ar you using only 91 characters?  And how are you arriving at
  1133.  half-bytes (14pt-24.5 x 91 char = 2229.5)?
  1134.  ------------
  1135. Category 5,  Topic 20
  1136. Message 4         Thu Sep 15, 1994
  1137. T.BROWN25 [Tim]              at 21:59 EDT
  1138.  
  1139.  Thanks for replying e.g.bell,
  1140.  
  1141.     Believe me, since we first talked, I've taken your advice to heart and
  1142. have been working on it.  There are problems, however.  (And just to get this
  1143. out of the way, the spaghetti I was referring to was the BB message, not my
  1144. code:)
  1145.  
  1146.     Aesthetics is the primary goal, then compactness.  I'm trying to find a
  1147. way to comply with your suggestions, but looking at the examples in the first
  1148. post:
  1149.  
  1150.  To convert the 8-point to 10-point, bits 2 & 3 could be duplicated and then
  1151. inserted at that position for each row to create the 10-point; rows 3 & 4
  1152. duplicated, also.  (Counting bits R to L starting w/0)
  1153.  The same algorythm wouldn't work on the letter "B", however.  The bit
  1154. duplication is fine, but different rows.
  1155.  
  1156.     I'm beginning to see some light in the dark recesses of my mind after
  1157. reading your suggestion of two tables; one for the data and perhaps one to
  1158. indicate which rows/bits to manipulate.
  1159.  
  1160.     I do appreciate your suggestions, Ed.  Like Johnny5, though, I need lots
  1161. of input.  I'm hoping that my post will draw several schemes that I might
  1162. tweak.
  1163.  
  1164.     As to your question of my present algorythm, I've compacted the 20 bytes
  1165. that define the 10-point "A" into 12.5 bytes:
  1166.  
  1167.  00000000 00000011 11000011 11111100
  1168.  
  1169.  11000011 00110000 11001111 11110011
  1170.  
  1171.  11111100 11000011 00110000 11001100
  1172.  
  1173.  00110000
  1174.  
  1175.  Every ten bits is a row in the letter.  The subroutine reads the first two
  1176. bytes and stores them.  The bits in the template are then ROL'ed twice.  Bytes
  1177. 2 & 3 are then stored, etc.
  1178.  After ten iterations, the stored data is then manipulated based upon the
  1179. position it is to be plotted to, AND'ed with the appropriate value, and then
  1180. plotted to the screen.
  1181.  
  1182.     Your other question was pertaining to 1/2 bytes.  You're right.  20 into
  1183. 12.5 should be 20 into 13.
  1184.  91 characters is another space saver.  Since this is a paint program, I left
  1185. out the graphic characters from the character sets.  Also, reverse characters
  1186. are accomplished by EOR'ing the data rather than a seperate set of data.
  1187.  
  1188.     Thanks for taking the time to reply, Ed.  You've been quite a help and I'm
  1189. looking hard at you're solution.  Hope to hear from you again.
  1190.  
  1191.              T.J. Brown
  1192.  ------------
  1193. Category 5,  Topic 20
  1194. Message 5         Fri Sep 16, 1994
  1195. CBM-ED [e.g.bell]            at 04:51 EDT
  1196.  
  1197.   TB>  To convert the 8-point to 10-point, bits 2 & 3 could be
  1198.   TB> duplicated and then inserted at that position for each row to
  1199.   TB> create the 10-point; rows 3 & 4 duplicated, also.  (Counting
  1200.   TB> bits R to L starting w/0)  The same algorythm wouldn't work on
  1201.   TB> the letter "B", however.  The bit duplication is fine, but
  1202.   TB> different rows.
  1203.  
  1204.  Then go back to a table lookup message for each of the characters...
  1205.  From your scheme, it seems to me that each table would take only 91
  1206.  bytes, and each byte could be a bit mask of which bits get duplicated.
  1207.  That way you 1] have a map for the algorithm to use when duplicating the
  1208.  characters, and 2] a way to allow other fonts to be created... namely
  1209.  saving the TABLES instead of the characters.. see what I mean.  Your
  1210.  program need not deal with character sets at all, just the bit map
  1211.  tables... except for the 1 8 point character set.  
  1212.  
  1213.  I never figured my post would answer all of your questions, just jog the
  1214.  thought process.
  1215.  
  1216.  I thought later about the reversing of chars as far as my asking about
  1217.  only 91 chars/set.  :)  Tho what I'm suggesting here would allow all of
  1218.  them at a minimal addition of bytes, and nowhere near what you are 
  1219.  currently using to do the same thing.  
  1220.  
  1221.  Does this all seem to clarify anything?  :)
  1222.  
  1223.  BTW, you would need 2 91 byte tables for each point size other than 8,
  1224.  which is still only like 1400 bytes or so for all point sizes for any
  1225.  font.
  1226.  ------------
  1227.  
  1228. 5 ? ************
  1229. Topic 22        Sat Oct 08, 1994
  1230. W.OVE                        at 15:02 EDT
  1231. Sub: Boot sector Information                
  1232.  
  1233. I would like to know the format of the boot sector.
  1234. 11 message(s) total.
  1235.  ************
  1236.  ------------
  1237. Category 5,  Topic 22
  1238. Message 1         Sat Oct 08, 1994
  1239. W.OVE                        at 15:07 EDT
  1240.  
  1241. I know that the first 3 bytes are cbm. It is followed by the file  name to be
  1242. booted. If the file name is followed by machine code, is that code loaded into
  1243. the drive or is it loaded into the computer. I am trying to make an auto boot
  1244. disk not auto boot. but removing the boot sector keeps the program from
  1245. loading. It seems to me I could  write a program to get the program to boot
  1246. up, But I am not sure what to do with the code following the file name. I have
  1247. been unaable to find  any information on this is the libs.
  1248.  
  1249. thank you w. ove
  1250.  ------------
  1251. Category 5,  Topic 22
  1252. Message 2         Sat Oct 08, 1994
  1253. CBM-ED [e.g.bell]            at 17:01 EDT
  1254.  
  1255.  Bill:  I'll have the information for you hopefully by tomorrow.
  1256.  The code is loaded into the compter, though, for that part of
  1257.  uour question.  There is also a checksum or CRC calculated from the
  1258.  code in the boot sector.
  1259.  
  1260.  I have a very good reference I just have to locate it so I can give
  1261.  you the correct information, and I'm not going to have a chance today.
  1262.  BTW, have you tried to BOOT your program from the drive instead of
  1263.  loading it?
  1264.  
  1265.   i.e.             boot "program",u<device>
  1266.  
  1267.  ------------
  1268. Category 5,  Topic 22
  1269. Message 3         Sat Oct 08, 1994
  1270. CBM-ED [e.g.bell]            at 18:12 EDT
  1271.  
  1272.  Bill:  Here is hopefully enough information to help you solve your
  1273.  problem:
  1274.  
  1275.  Boot sector data:
  1276.  Bytes          Function
  1277.  0-2            CBM identification code
  1278.  3-4            Memory address for following boot sectors
  1279.  5              Configuration index for following boot sectors
  1280.  6              Block counter for number of following boot sectors
  1281.  7 to 1st 0     Boot message - null terminated
  1282.  next byte to 0 Name of program to load - null terminated
  1283.  
  1284.  Bytes following the filename null-terminator is any machine langauge
  1285.  code to be called by the boot process.
  1286.  
  1287.  Finally...
  1288.  "The bytes following the filename are interpreted as a machine language
  1289.  program and the boot routine passes control to this program.  From this
  1290.  point on, the programmer is responsible for starting the program 
  1291.  loaded, or for loading another program, or for branching to another of
  1292.  the boot blocks."
  1293.  
  1294.  The above information is quoted from the Abacus book '128 Internals',
  1295.  pages 188-190.  There is more information there, but it seems the above
  1296.  will get you where you want to go.  Let us know how you make out.
  1297.  ------------
  1298. Category 5,  Topic 22
  1299. Message 4         Sun Oct 09, 1994
  1300. W.OVE                        at 11:28 EDT
  1301.  
  1302. Thanjk you for your prompt reply.
  1303.  
  1304. I have been able to modify the superbase v3 boot disk so that it can be used
  1305. for storing other programs etc. without interfering with superbase loading.  I
  1306. have moved other programs to the disk  and am able to load them and run them. 
  1307. The problem is that every time I reset or quit superbase it reloads itself. 
  1308. Superbase will not reload unless you reset the system or you simply type
  1309. "boot" <return>. I was hoping that I could make so type of loader program that
  1310. would provide the information that is currently in the boot sector and so
  1311. eliminate the boot sector so that I would not be bothered with always removing
  1312. the disk from the drive. The boot sector is set up exactlly in the manner that
  1313. you indicaated. In the 1581 manual it talks of booting information being
  1314. loaded into the drive when using a file named  CBM of the type "user". I think
  1315. I need to know where that machine code get loaded. Are the first two bytes of
  1316. the code a load address? I am perhaps in way over my head.
  1317.  
  1318. thank you w. ove
  1319.  ------------
  1320. Category 5,  Topic 22
  1321. Message 5         Sun Oct 09, 1994
  1322. CBM-ED [e.g.bell]            at 18:51 EDT
  1323.  
  1324.  Bill:
  1325.   WO> In the 1581 manual it talks of booting information being loaded
  1326.   WO> into the drive when using a file named  CBM of the type
  1327.   WO> "user". I think I need to know where that machine code get
  1328.   WO> loaded. Are the first two bytes of the code a load address
  1329.  
  1330.  I believe that what you are talking about is someting totally unrelated to
  1331.  boot sectors.  There is a file you can create for the 1581 that will auto
  1332.  execute but it is unrelated to specific software.  It is a feature anyone
  1333.  can use, and in fact, someone even published a way to use such a file to
  1334.  actually move the boot sector to another area on the disk.  This peculiar
  1335.  feature is used to boot CP/M disks, if I remember correctly, because they
  1336.  cannot give up the normal boot sector due to their directory location.
  1337.  I'm not saying that nothing is loaded into the drive by superbase.  I don't
  1338.  know that.  If it is, you probably are in over your head.  I only say that
  1339.  because I've never done any drive RAM programming, and I feel personally
  1340.  I'd have to work pretty hard to get it done.  The file you are talking
  1341.  about on 1581 disks will always be named 'COPYRIGHT CBM 86',and does not
  1342.  get tied to specific software unless they have made it do that.  Is there
  1343.  such a file on your disk.  If so, read the 1581 manual on page 87.  It 
  1344.  says the first 2 bytes contain the load address, the 3rd byte contains the
  1345.  length of the code/chars to follow, and finally a trailing checksum.  It 
  1346.  also says the load address is the start address for the code.
  1347.  
  1348.  Are you saying that when you just QUIT from superbase that it reboots 
  1349.  itself??
  1350.  
  1351.   WO> every time I reset or quit superbase it reloads itself
  1352.  
  1353.  You may have to disassemble the boot sector to do what you want to do.
  1354.  That is  unless the boot sector is only booting the program and nothing
  1355.  more.  Still, that is not such a  daunting task, I wouldn't think.  How
  1356.  many sectors could it be?
  1357.  ------------
  1358. Category 5,  Topic 22
  1359. Message 6         Sun Oct 09, 1994
  1360. H.HERMAN1                    at 22:43 EDT
  1361.  
  1362. Here's one thing that you may want to try, but if you do, do it carefully:
  1363.  
  1364. (1)  Using a sector editor, block copy the boot sector from the SuperBase
  1365. disk, onto another.
  1366.  
  1367. (2)  Then fill the boot sector on the SuperBase book with nulls.
  1368.  
  1369. (3)  Try running SuperBase from the newly changed disk.  If it runs okey, you
  1370. are home free.  If not, then write back the boot sector which you earlier
  1371. saved, back onto the SB disk.
  1372.  
  1373. One note of caution:  If this does work, I would still permanently keep in
  1374. storage that boot sector, in case it turns out that some rarely used part of
  1375. SB needs that code to properly run.
  1376.  
  1377. I did something akin to this on my very heavilly copy-protected Pocket Filer 2
  1378. disk.  This particular disk always sits in drive 8.  RAMLink will usually
  1379. autoboot "Main Menu", as it is supposed to.  But at times, some programs exit
  1380. by booting unit 8.  Therefore, I wanted to change the boot sector to also boot
  1381. "Main Menu", and not to boot Pocket Filer 2.
  1382.  
  1383. The boot sector for Filer 2 is safely tucked away on a storage disk, and
  1384. instead that sector was over-written with the custom boot.  To my delight it
  1385. has no effect on Filer2.  However, even if it did, there is no harm done, as
  1386. that sector could be resurrected. 
  1387.  
  1388. One more word of caution:  anyone fooling around with ANY Pocket disk must be
  1389. very careful, as only some sectors are "user accessible".  Most of the Pocket
  1390. disk cannot be accessed without destroying the disk, due to the copy-
  1391. protection.  So "BE CAREFUL"!!!!
  1392.  
  1393. Howie
  1394.  ------------
  1395. Category 5,  Topic 22
  1396. Message 7         Tue Oct 11, 1994
  1397. W.OVE                        at 19:33 EDT
  1398.  
  1399. I have tried the following things without success. 1) I did fill boot sector
  1400. with nulls.  Program won't load. 2) I tried loading the machine code into
  1401. computer using first two bytes as load address then sysing to it.  Locked up
  1402. computer. Loaded machine code into drive ram using first two bytes as load
  1403. address Resulted in horrible racket will not be repeated.
  1404.  
  1405. I would like to make another try. I need to know what the computer does when
  1406. it boots a program after a cold start.  You get a message booting.. Is that
  1407. message generated by the computer or is that comming from the drive. I did
  1408. notice on a memory map that an area is identified as boot sector work space.
  1409. What goes in that space?
  1410.  
  1411. I tried to dissamble the machine code and it seems to be gibberish. I started
  1412. the dissambly from the beginning and again from other bytes. But nothing
  1413. dissambled to anything more that a whole lot of question marks and seldom used
  1414. instructions. ( not an lda in the lot).
  1415.  
  1416. Thank your for your help and sugestions. I am not a programer. I merely  hack
  1417. to try and get thing the way I want them to be. w.ove
  1418.  ------------
  1419. Category 5,  Topic 22
  1420. Message 8         Tue Oct 11, 1994
  1421. CBM-ED [e.g.bell]            at 22:10 EDT
  1422.  
  1423.  Bill:
  1424.   WO> You get a message booting.. Is that message generated by the
  1425.   WO> computer or is that comming from the drive.
  1426.  
  1427.  That message is generated by the computer.  I would have to do some
  1428.  research as far as your other questions go.  I don't know how you tried
  1429.  to disassemble the machine code either... from the boot sector?  If so,
  1430.  can you save it to a file and upload it?  How big is it?  When you do the
  1431.  disassembly, or I should say instead of doing a disassembly, use the 'm'
  1432.  command of the monitor to see if what you are looking at is text instead
  1433.  of code.
  1434.  
  1435.   WO> 2) I tried loading the machine code into computer using first
  1436.   WO> two bytes as load address then sysing to it.  Locked up
  1437.   WO> computer
  1438.  
  1439.  I have found through experence that when a SYS locks up the computer it
  1440.  is very frequently because the proper MMU configuration is not in
  1441.  context.  Try this again, but explicitly force the configuration with the
  1442.  BANK command.  Try bank 15.
  1443.  
  1444.  What machine code did you load into the drive RAM anyway?  From what I see
  1445.  of the info I have on $0b00 block, when an auto boot disk is detected, the
  1446.  sector 0 of track 1 is read into this area, and the 1st 3 bytes examined.
  1447.  If the CBM is detected, the boot process proceeds.  "It would be possible
  1448.  to simulate a boot by filling the buffer with the proper values, then
  1449.  jumping into the BOOT_CALL routine at address 63737/$f8f9.
  1450.  
  1451.  Try booting the disk, but pressing STOP before it is complete.  Then
  1452.  examine the contents of this area.  Duplicate that, then proceed with the
  1453.  call (BANK 15) listed above).  Perhaps that will help you emulate what the
  1454.  actual boot sector does.  BTW, the book (Mapping the 128) says that there
  1455.  is a Kernal jump table entry for the boot routine  at 65363/$ff53, which
  1456.  you should use if you do all of this.  Try it first, and if it doesn't work
  1457.  try the other one.  Let us know how you make out.
  1458.  egb
  1459.  ------------
  1460. Category 5,  Topic 22
  1461. Message 9         Wed Oct 12, 1994
  1462. H.HERMAN1                    at 06:32 EDT
  1463.  
  1464. >I have tried the following things without success. 1) I did fill boot sector
  1465. >with nulls.  Program won't load....
  1466.  
  1467. When you did this, did you:  dload"filename",u8  <-- or whatever drive?
  1468.  
  1469. In other words, did you try to DLOAD, instead of BOOT?
  1470.  
  1471. Howie
  1472.  ------------
  1473. Category 5,  Topic 22
  1474. Message 10        Fri Oct 14, 1994
  1475. CBM-ED [e.g.bell]            at 06:44 EDT
  1476.  
  1477.  Bill:  Try bloading the file called 'sbloader' and tell me what happens.
  1478.  From the demo boot sector you sent me, I can tell several things.  First,
  1479.  there seems to be only the one boot sector involved.  There is no boot 
  1480.  message, and no machine language follows the boot procedure, at least
  1481.  nothing valid.  I even checked my list of undocumented opcodes and it does
  1482.  not seem that they are involved.
  1483.  
  1484.  One of the autobooting schemes that is used is to load programs in over the
  1485.  operating system vectors.  After the load, then, when the system takes a 
  1486.  normal jump through certain vectors, it is directed to code loaded into 
  1487.  that area, which in turn would finish up the loading process.  This may be
  1488.  what is happening here.  You will know this is what is happening if you
  1489.  do the bload above and the full program loads and then auto-starts.  If 
  1490.  it doesn't auto-start, it may still be that all you have to do is SYS to 
  1491.  the start address of this file once it is loaded.  Give this a try and 
  1492.  let me know how you make out. 
  1493.  egb
  1494.  ------------
  1495. Category 5,  Topic 22
  1496. Message 11        Sat Oct 15, 1994
  1497. W.OVE                        at 11:14 EDT
  1498.  
  1499. I have tried all the sugestions and I really appreciate you taking the time to
  1500. respond. the program "sbloader" is the same strange jumble of information that
  1501. is contained in the boot sector. I have broke into the progrm during the boot
  1502. process and can only report that I am very confused by what it is doing.
  1503.  
  1504. However on the good news front I solved my problem of the program 
  1505. autobooting, by copying the boot sector the program "sbloader"  and a couple
  1506. other files to different disk and have erased them on the  other disk. So now
  1507. the program doesn't boot and I caan boot it off  drive 9. The loader loades in
  1508. from drive 9 and the it does a normal load of the program on drive 8.  It is a
  1509. left handed solution for sure, but it does what I was hoping. thank you for
  1510. your assistssnce. w.ove
  1511.  ------------
  1512.  
  1513. 5 ?