home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / CompSysCBM / 072396K.TXT < prev    next >
Text File  |  2019-04-13  |  27KB  |  684 lines

  1. The above flow explanation ignores some subtleties like carriage return
  2. stripping and multiple space reduction.  Those are left out because at
  3. least one tag, the <PRE> tag (preformatted text) overrides those rules. 
  4. <PRE> text is displayed in a monospaced font exactly as it is prepared
  5. in the document.  Text is not wrapped, and spaces are not reduced.  So,
  6. we will make those formatting options that are normally turned on.
  7.  
  8. @(A): Conclusion
  9.  
  10. I regret that we haven't gotten very far in the development process with
  11. this installment, but we'll make up for lost time in the next
  12. installment.  One thing that I would like to encourage from readers is
  13. comments and suggestions.  Do you see a problem with some of the above
  14. information?  Do you have a better way to parse some of the information? =
  15.  
  16. Do you see limitations in the data structures? Since we haven't delved
  17. into some of these aspects yet, do you have some ideas of your own? I
  18. can guarantee that I'm ready to discuss them with you; however, I can't
  19. read your mind.  I think it's important that this project be completed,
  20. as it forms the core of a successful WWW browser, and I see everyone
  21. wanting to know when one will be available.  I am less concerned that my
  22. name appear on the finished product.  In fact, I think a product that
  23. draws on the talent of the entire Commodore community would most likely
  24. exceed the quality a single individual can afford a piece of software. 
  25. So, fire up those assemblers and put on those thinking caps.  
  26.  
  27. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  28. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  29. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
  30.  
  31. @(#)gfx: Creating 3-D Dungeon Crawls
  32.          by Todd S. Elliott (telliott@ubmail.ubalt.edu)
  33.          http://ubmail.ubalt.edu/~telliott/commodore.html
  34.     
  35. @(A): Introduction
  36.  
  37. What? Another article in C=3DHacking that deals with the subject of 3-D?
  38. Well, not in the same vein as Mr. Judd's study in 3 Dimensions for
  39. rendering shaded 3-D polygons in real time. (See Polygonomy in C=3DHackin=
  40. g
  41. 12.) No, this article only deals with the aspect of the 3-D look and
  42. feel in those dungeon crawls you see for the c64. Some titles spring to
  43. mind, like the gold box series by SSI in collaboration with TSR, i.e.,
  44. Pool of Radiance, Curse of the Azure Bonds, or other popular titles such
  45. as the Bard's Tale Trilogy.
  46.  
  47. With the techniques described, the aspiring Dungeon Master (DM) can
  48. create a rich world to torture his players at the local terminal of the
  49. beloved c64! That, and some generous helpings from the local pizza
  50. delivery company. "Hey! Look out for the grease! Arrrgh! Now the `A' key
  51. is stained!" ;)
  52.  
  53. @(A): Nuts and Bolts
  54.    
  55. Let's begin with the 3-D screen. It is comprised of a 12x12 square of
  56. custom characters, which never change position. The 12x12 square looks
  57. like this:
  58.  
  59. characters 01,02,24,25,48,49,..,96,97,120,121
  60.            03,04,26,27,50,51,..,98,99,122,123
  61.            ..
  62.            ..
  63.            22,23,46,47,70,71,..,118,119,142,143
  64.  
  65. The 144 characters are positioned in an unusual way: they flow in two
  66. character columns, run down for 24 characters, then go back up for the
  67. next two-character columns. Think of these two-character columns as
  68. SEAMS in the 3-D window. Right now, there are six such SEAMS in the 3-D
  69. window for the dungeon. Of course, these are not the actual characters
  70. (screen codes), (I forget what they are right now), but they are in a
  71. continuous sequence, i.e., no broken or interrupted series of screen
  72. codes. (If memory serves me correctly, they are the last 144 screen
  73. codes in the 256 screen code table.) The corresponding color codes never
  74. change, for the sake of speed.
  75.  
  76. Next, we deal with the concept of CELLS in the 3-D window. There are a
  77. total of 13 CELLS which we can utilize individually to show an object,
  78. which in turn, is displayed in the 3-D window in the correct
  79. perspective. By objects, I mean walls or doors. The perspective is from
  80. the user's standpoint. This creates the illusion of the 3-D look and
  81. feel, but does not simulate true 3-D rendering on the fly such as
  82. Polygonamy by Mr. Judd. (See Polygonomy, C=3DHacking 12.)  Let's take a
  83. look at all 13 cells, to give us an idea of what each one does:
  84.  
  85. Cell 01 - Farthest left side object.
  86. Cell 02 - Middle left side object.
  87. Cell 03 - Immediate left side object.
  88. Cell 04 - Farthest right side object.
  89. Cell 05 - Middle right side object.
  90. Cell 06 - Immediate right side object.
  91. Cell 07 - Farthest front object.
  92. Cell 08 - Middle front object.
  93. Cell 09 - Immediate front object . (Currently used for backdrop only;
  94.           fills the entire 12x12 screen.)
  95. Cell 10 - Farthest left side object situated in front.
  96. Cell 11 - Middle left side object situated in front.
  97. Cell 12 - Farthest right side object situated in front.
  98. Cell 13 - Middle right side object situated in front.
  99.  
  100. The 3-D engine, before it starts to redraw the 12x12 screen, checks the
  101. user's (you!) orientation. If you are facing north, the engine will know
  102. this and configure the 3-D window accordingly. Let's assume that the
  103. user is facing north, and the 3-D engine now looks in the dungeon map
  104. for relevant objects to place on the screen. The 3-D engine will look
  105. for doors or walls only. In future revisions, this is expected to
  106. change. Currently, the map value for a wall is 128 and for a door is 7.
  107.  
  108. First of all, the 3-D engine looks in Cell 3. If it finds an object
  109. there, it will paint a wall or door and will skip the search in Cell 11.
  110. The reason why Cell 11 was skipped is because an object was found in
  111. Cell 3, which would overwrite Cell 11. We don't want the 3-D engine
  112. accidentally overwriting Cell 3 with Cell 11 on top. Next, it searches
  113. for an object in Cell 6, and if it finds an object there, it will skip
  114. Cell 13. Last, it will search in Cell 8, and if an object is found, it
  115. will skip all remaining cells except for Cells 10 & 12. This is to
  116. ensure that there are no overlapping cells which result in a less-than
  117. harmonious 3-D look and feel. This hunt and eliminate approach employed
  118. by the 3-D engine can be referred to as a first-last approach. There are
  119. three layers of information for the 3-D engine to process, and it starts
  120. from the 1st layer to the 3rd layer, minimizing conflicts and results in
  121. a natural 3-D look.
  122.  
  123. Here's the sample code for the direction of north:
  124.  
  125.    ;paint the north surroundings
  126.    ; Note: the .Y register refers to the location in the map for the 3-D
  127.    ; engine to search.
  128.    ; position the paint location
  129.    npaint  =3D*
  130.            lda #101
  131.            sta subtract+1
  132.            sta addition+1
  133.            jsr minus
  134.    ;first block module
  135.            ldy #100:jsr cell3
  136.    ;second block module
  137.            bne +:ldy #74:jsr cell11
  138.    +       ldy #102:jsr cell6
  139.            bne +:ldy #78:jsr cell13
  140.    ;third block module
  141.    +       ldy #76:jsr cell8:bne +
  142.    ;fourth block module
  143.            ldy #50:jsr cell2
  144.    ;fifth block module
  145.            ldy #52:jsr cell5
  146.    ;sixth block module
  147.            ldy #26:jsr cell7:bne +
  148.    ;seventh block module
  149.            ldy #0:jsr cell1
  150.    ;eighth block module
  151.            ldy #2:jsr cell4
  152.    +       ldy #24:jsr cell10
  153.            ldy #28:jsr cell12
  154.    ;position the party
  155.            jmp plus
  156.   
  157. @(A): Drawing the Screen
  158.  
  159. Now, on to the actual drawing of the 12x12 3-D screen! First, the 3-D
  160. engine immediately draws a backdrop to Cell 9. This is the floor and the
  161. sky you see in the 3-D world. (This step may be unnecessary in the
  162. future.) Then, the 3-D engine takes the object found in a particular
  163. cell and draws the object on the SEAM in the 12x12 window. Remember the
  164. SEAM's, eh? Depending on the size of the object, the 3-D engine may
  165. encompass two or more SEAM's in one sitting. First, it takes the pointer
  166. values from the graphic tables, extracts the raw graphics data, and
  167. stashes the same raw data on to the character dot data area. Please note
  168. that the 3-D engine does not stash the data to the screen; only to the
  169. character dot data area. Remember that the 12x12 had a character grid-
  170. the VIC-II chip continuously updates the characters with its
  171. corresponding dot data. Hence the reason why the characters never change
  172. in the 12x12 3-D window. This is needed for two reasons: One, the 12x12
  173. grid uses only 144 of the 256 available characters, leaving some left
  174. over for regular character. Two, it allows the 3-D engine to `unroll'
  175. the graphics updating loop using self-modifying code , resulting in
  176. speed increases.
  177.  
  178. Here's a sample code for the grunt screen updating routine:
  179.  
  180.    ;to paint the 3d surroundings
  181.    paint   =3D*
  182.            lda #59:ldy #128; This is the lo-hi byte representation of
  183.                            ; the character
  184.            sta dummy+2:sty dummy+1; dot data area.
  185.            lda <milleu:ldy >milleu; the pointer to where the backdrop
  186.                                   ; can be found.
  187.            sta dumb+1:sty dumb+2
  188.            ldx #$03
  189.    -       lda #$00
  190.            sta disflag,x; this flag is used for hidden objects.
  191.            tay
  192.    dumb    lda $ffff,y
  193.    dummy   sta $ffff,y; This is the self-modifying code to draw the
  194.                       ; backdrop.
  195.            dey  
  196.            bne dumb
  197.            inc dummy+2
  198.            inc dumb+2
  199.            dex
  200.            bpl - 
  201.            ldy #127
  202.    -       lda 22016,y
  203.            sta 16256,y; The remaining part of the backdrop is drawn.
  204.            dey
  205.            bpl -
  206.            jmp direction
  207.  
  208.    ; routine for printing two char wide column on the dungeon window
  209.    table   =3D*
  210.            lda cassette,y; retrieves the pointer values from a table.
  211.            sta twain+1; The table is stored in the cassette buffer at
  212.                       ; 820.
  213.            iny
  214.            lda cassette,y
  215.            sta twain+2
  216.            lda chartable,x
  217.            sta seam+1; This retrieves the pointer values from a table
  218.                      ; for
  219.            inx       ; the character dot data area.
  220.            lda chartable,x
  221.            sta seam+2
  222.            ldy #192; to output enough bytes to fill 24 characters.
  223.            twain lda $ffff,y; Self-modifying code used here to draw the
  224.                             ; 3-D screen.
  225.    seam    sta $ffff,y
  226.            dey
  227.            bne twain
  228.            dey
  229.            rts
  230.  
  231. @(A): Conclusions
  232.  
  233. Whew! The 3-D engine has finally done its work and waits for the user to
  234. press a key for a new facing. The 3-D engine by itself is quite small
  235. and flexible enough to handle as much as the programmer wants to throw
  236. at it! The power is in the tables and the 3-D hunt/eliminate routines.
  237.  
  238. The 3-D Dungeon Demo can be found in this issue of Commodore Hacking
  239. (Reference: code, SubRef: gfxcode), on the Commodore Hacking MAILSERV
  240. server (Reference: code), at http://www.msen.com/~brain/pub/dungeon.sda
  241. or in the file DUNGEON.SDA available at my site.  There may be a c128
  242. version in the offing, but in 40 col. mode. Of course, there are no
  243. planned versions for the c65. ;) Please note that it does not contain
  244. the source code. However, upon request, I will be happy to send you the
  245. source code in Buddy format. (Right now, I'm trying to make the source
  246. code assembler neutral to work in either ACEsembler or the Buddy assemble=
  247. r.
  248.   
  249. Right now, I have already done work in producing a Dungeon Master's
  250. environment- with a 12x12 screen grabber routine and a Retouch Studio.
  251. The 3-D engine will be overhauled completely to create a 3-D environment
  252. in the hi-res multi-color screen, as opposed to using custom characters.
  253. In the future, I hope to have a complete environment, where the user can
  254. design dungeons, comment them, add a bestiary, add custom doors and
  255. walls, and map editors for the purpose of playing pen & paper dungeon
  256. games. This way, the program only shows the visual aspects of the pen &
  257. paper genre; it will not have combat or character interaction. I expect
  258. a version to be ready by the end of summer '96. I'm not sure how I will
  259. release the software, but I will choose an appropriate medium for mass
  260. distribution that is accessible to C=3D users.
  261.  
  262. That's it! Feel free to drop me a line regarding this article. I'd be
  263. happy and will try my best to answer any questions or comments about
  264. this article. Until then, Happy 8-Bit computing!
  265.  
  266. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  267. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  268. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
  269.   
  270. @(#)trivia: Commodore Trivia
  271.             by Jim Brain (j.brain@ieee.org)
  272.            
  273. @(A): Introduction
  274.  
  275. As some may know, these questions are part of a contest held each month o=
  276. n
  277. the Internet, in which the winner receives a donated prize.  I encourage
  278. those who can received the newest editions of trivia to enter the contest.
  279.  
  280. This article contains the questions and answers for trivia editions #27-2=
  281. 8,
  282. with questions for edition #29 and the current contest, #30.  Why two set=
  283. s
  284. of questions?  Well, as some may know.  I have recently moved, and that
  285. has put me behind in posting answers.  At present, my reference books
  286. are still packed in storage, so I can't finish the answers.
  287.    
  288. If you wish, you can subscribe to the trivia mailing list and receive the
  289. newest editions of the trivia via Internet email.  To add your name to th=
  290. e
  291. list, please mail a message:
  292.   
  293. To: brain@mail.msen.com
  294. Subject: MAILSERV
  295. Body:
  296. subscribe trivia Firstname Lastname
  297. help
  298. quit
  299.   
  300. @(A): Trivia Questions
  301.  
  302. Q $1A0) Commodore produced an assembler for the 128 called HCD65.  What
  303.         does HCD stand for?
  304.        
  305. A $1A0) Hedly C. Davis, the writer of the assembler.
  306.  
  307. Q $1A1) Who wrote most of RAM DOS?
  308.  
  309. A $1A1) Although many assume Fred Bowen wrote RAMDOS, Hedly Davis actuall=
  310. y
  311.         wrote the bulk of it.
  312.  
  313. Q $1A2) What is the name of the first C64 disk copy program?  (hint: it
  314.         sported a "gas gauge".)
  315.  
  316. A $1A2) 1541 Backup.
  317.  
  318. Q $1A3) What was the case color of the original Commodore 64s?
  319.  
  320. A $1A3) Ivory, just like the case color of the VIC-20.  In fact, early
  321.         cases WERE VIC-20 cases.
  322.  
  323. Q $1A4) There are at least two ways to enter 64 mode from 128 mode on a C=
  324. 128:
  325.         go 64 and sys 65357.  They produce the same result (64 mode), but
  326.         they differ in at least one noticeable way.  How?
  327.  
  328. A $1A4) sys 65357 doesn't ask the "Are You Sure?" question.
  329.  
  330. Q $1A5) What CPU powers the B-128 computer system?
  331.  
  332. A $1A5) The 6509 CPU.
  333.  
  334. Q $1A6) What type of drive mechanisms are in the D series hard drives fro=
  335. m
  336.         Commodore?
  337.  
  338. A $1A6) The D9060 and D9090 drives used "Winchester" hard drive mechanism=
  339. s.
  340.  
  341. Q $1A7) Commodore produced a 16kB RAM expander for the Commodore VIC-20.
  342.         What is its model number?
  343.  
  344. A $1A7) The VIC-1111.
  345.  
  346. Q $1A8) Commodore produced at least one disk drive with an optical track
  347.         one sensor.  Which drive?
  348.  
  349. A $1A8) Certain early versions of the 1541C drive had a functional track
  350.         1 sensor.  Later, due to compatibility problems, it was disabled,=
  351.  
  352.         and then later, the sensor was removed from the mechanism.  In
  353.         addition, 1571 drives and 1581 units have optical track sensors.
  354.  
  355. Q $1A9) The Commodore PET series used the IEEE bus to communicate with
  356.         peripherals.  Each peripheral had a unique ID.  What range of IDs
  357.         are supported by the PET?
  358.  
  359. A $1A9) IDs 4-15 are supported, although you cannot connect all 12 device=
  360. s
  361.         up at one time.
  362.  
  363. Q $1AA) Many people have developed Commodore software with the PAL assemb=
  364. ler.
  365.         What does PAL stand for?
  366.  
  367. A $1AA) Personal Assembly Language (PAL).
  368.  
  369. Q $1AB) Many people remember Compute's Gazette.  This magazine is best kn=
  370. own
  371.         for the word processor program it shared with thousands of
  372.         subscribers.  Name the program?
  373.  
  374. A $1AB) SpeedScript.
  375.  
  376. Q $1AC) In some 6502 assemblers, the opcode "bge" is available.  It stand=
  377. s
  378.         for "branch if greater than or equal to".  What more common opcod=
  379. e
  380.         is this opcode referring to?
  381.  
  382. A $1AC) bcs (Branch Carry Set)
  383.  
  384. Q $1AD) If I wanted to do a "blt" (branch if result less than), what 6502=
  385.  
  386.         opcode would I use?
  387.  
  388. A $1AD) bcc (Branch Carry Clear)
  389.  
  390. Q $1AE) Each Commodore peripheral has a device number, which is associate=
  391. d
  392.         with a type of device.  8-15 implied disk drive, 4-5 implies
  393.         printer.  These have remained constant from the PET to the C128.
  394.         However, one peripheral in the PET was phased out and its device
  395.         number was reused.  What device number was reused?
  396.  
  397. A $1AE) Device #2.  The PET systems used #2 as a second tape drive, but i=
  398. n
  399.         the newer computers, #2 refers to the RS-232 port.
  400.  
  401. Q $1AF) What is the maximum amount of general purpose RAM can one utilize
  402.         in a stock C64?  (I need an exact number here)
  403.  
  404. A $1AF) In the Ultimax memory configuration, if you guarantee no interrup=
  405. ts
  406.         can occur, one can utilize all but the first two memory locations
  407.         for general purpose RAM, giving 65534 bytes of RAM.  If you can't
  408.         guarantee you'll never receive an NMI, you lose 2 more bytes for =
  409. that
  410.         vector, giving 65532 bytes available.
  411.  
  412. Q $1B0) What was COMPUTE!'s original sub title?
  413.     =09
  414. A $1B0) "The Journal for Progressive Computing".
  415.  
  416. Q $1B1) After COMPUTE! was absorbed by General Media, how did the name
  417.         change?
  418.     =09
  419. A $1B0) The name, having gained an exclamation point and lost a period ma=
  420. ny
  421.          years before, reverted back to the period as the ending punctuat=
  422. ion.
  423.  
  424. Q $1B2) What Commodore content magazine was named after a nautical term?
  425.     =09
  426. A $1B0) "Ahoy!"
  427.  
  428. Q $1B3) What Commodore content magazine was named after a BASIC keyword?
  429.     =09
  430. A $1B0) "RUN"
  431.  
  432. Q $1B4) What CPU gets control first when a Commodore 128 is booted?
  433.     =09
  434. A $1B0) The Z80 CPU has control first.
  435.  
  436. Q $1B5) What CPU powered the Commodore C900?
  437.     =09
  438. A $1B0) The Zilog Z8000, from the company who brought us the popular Z80.
  439.  
  440. Q $1B6) How large is the monitor installed in the SX64?
  441.     =09
  442. A $1B0) 5" diagonal.
  443.  
  444. Q $1B7) What color scheme does the SX64 boot up into?
  445.     =09
  446. A $1B0) White screen with cyan border and blue text.
  447.  
  448. Q $1B8) What is printed as the stock SX64 boot up screen?
  449.     =09
  450. A $1B0)      *****  SX-64 BASIC V2.0  *****
  451.          64K RAM SYSTEM  38911 BASIC BYTES FREE
  452.  
  453.         READY.
  454.         _
  455.  
  456. Q $1B9) The SX64 has a reset switch behind the door that holds the
  457.         monitor controls.  What is strange about the rest switch?
  458.     =09
  459. A $1B0) The reset switch only resets the disk drive.  Most people assume =
  460. it
  461.         resets the entire computer system.
  462.  
  463. Q $1BA) What common port is not included on the SX64?
  464.     =09
  465. A $1B0) The Cassette Port.
  466.  
  467. Q $1BB) In the mid 1980's, a company called Berkeley Softworks created
  468.         a graphical user environment for the Commodore 64.  What was it
  469.         called?
  470.     =09
  471. A $1B0) Graphical Environment Operating System (GEOS).
  472.  
  473. Q $1BC) Berkeley Softworks eventually changed their name to what?
  474.     =09
  475. A $1B0) GEOWorks.  They now develop the GEOS OS for Personal Digital
  476.         Assistants (PDA).
  477.  
  478. Q $1BD) Most everyone is familiar with MSD disk drives.  What does MSD
  479.         stand for?
  480.     =09
  481. A $1B0) Micro Systems Development, Inc.
  482.  
  483. Q $1BE) On the NMOS 6502, what two addressing modes have but one opcode
  484.         each that can operate in that mode?
  485.       
  486. A $1B0) Actually, there is only one such mode, indirect.  jmp (xxxx) is
  487.         the only opcode that can utilize that addressing mode.
  488.  
  489. Q $1BF) How many transfer register opcodes are there on the NMOS 6502?
  490.         
  491. A $1B0) 6 (TAX, TAY, TSX, TXA, TXS, TYA).
  492.  
  493. Q $1C0) What are the two configurations for the LORAM, HIRAM, GAME, and E=
  494. XROM
  495.         pins that will allow the use of a full 64kB of RAM in the C64?
  496.     =09
  497. Q $1C1) What is the first thing that the C64 (and VIC) KERNAL does upon
  498.         powerup?
  499.     =09
  500. Q $1C2) What KERNAL routine is used to set a DOS channel to input? 
  501.     =09
  502. Q $1C3) What KERNAL routine is used to set a DOS channel to output? 
  503.     =09
  504. Q $1C4) Before calling the routines in $1C2 and $1C3, what register must
  505.         you load?
  506.     =09
  507. Q $1C5) What 3 devices can the KERNAL NOT load from?
  508.     =09
  509. Q $1C6) In the Commodore KERNAL, there are "high" and "low" level routine=
  510. s.
  511.         To which class of routines does "SECOND" belong?
  512.     =09
  513. Q $1C7) If a programmer calls the KERNAL routine "STOP" and the RUN/STOP
  514.         key is NOT pressed, what is returned in the .A register?
  515.     =09
  516. Q $1C8) The Commodore KERNAL routines are all accessed via a jump table.
  517.         What routine is used to change the values in the KERNAL jump tabl=
  518. e?
  519.     =09
  520. Q $1C9) A call is made to a KERNAL routine, the call returns with the C
  521.         bit set and the .A register holds $02.  What error does this
  522.         indicate?
  523.     =09
  524. Q $1CA) If a call to READST is made, and a $40 is returned in .A, what
  525.         does this indicate?
  526.     =09
  527. Q $1CB) What routine can be called to determine the physical format of th=
  528. e
  529.         Commodore 64 screen in characters?
  530.     =09
  531. Q $1CC) The Commodore 64 starts a non-destructive RAM test at what locati=
  532. on?
  533.     =09
  534. Q $1CD) Which way does the RAM test proceed: up or down?
  535.     =09
  536. Q $1CE) Which KERNAL routine is used ONLY in conjunction with a Commodore
  537.         IEEE card?
  538.       
  539. Q $1CF) Many hybrid BASIC/ML programs use SYS to transfer control from BA=
  540. SIC
  541.         to ML.  However, a few use USR(X).  When using the latter functio=
  542. n,
  543.         where does BASIC fetch the ML routine's starting address from?
  544.  
  545. Q $1D0) To load a program from the current location on a cassette tape, w=
  546. hat
  547.         two key combination must a user press on a VIC-20 or C64.
  548.     =09
  549. Q $1D1) If I issue the BASIC statement OPEN "JIM,S,W", What type of file
  550.         am I opening?
  551.     =09
  552. Q $1D2) Is BASIC in the Commodore computer systems an "interpreted" or
  553.         "compiled" language
  554.     =09
  555. Q $1D3) What type of variable is A%?
  556.     =09
  557. Q $1D4) If I issue the BASIC line PRINT:PRINT "A","B" what column does
  558.         the "B" show up on when run on a C64?
  559.     =09
  560. Q $1D5) What column does "B" show up on if I run the BASIC line in $1D4 o=
  561. n
  562.         a VIC-20?
  563.     =09
  564. Q $1D6) Alphabetically, what is the first BASIC 2.0 to have a 3 letter
  565.         abbreviation?
  566.     =09
  567. Q $1D7) How many times does the statement FOR T=3D1TO0 execute?
  568.     =09
  569. Q $1D8) What base does the BASIC LOG command use for its logarithm
  570.         function?
  571.     =09
  572. Q $1D9) A =3D NOT B can be written as which expression:
  573.         
  574.         a) A =3D -B
  575.         b) A =3D -(B+1)
  576.        
  577. Q $1DA) What does INT(-15.43) return?
  578.     =09
  579. Q $1DB) What does ASC$("JIM") return?
  580.      
  581. Q $1DC) What is the abbreviation for GET#?
  582.     =09
  583. Q $1DD) What is the largest integer value that Commodore BASIC can handle=
  584. ?
  585.     =09
  586. Q $1DE) What is the ONLY Commodore Editor key not affected by "quote mode=
  587. "
  588.          
  589. Q $1DF) What is the range of RND?
  590.         
  591. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  592. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
  593. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
  594.  
  595. @(#)error: ? DS, DS$: rem The Error Channel
  596.  
  597. We here at Hacking Headquarters are actually perfect, but the online
  598. networks occasionally globally alter the issue after it leaves our hands.
  599. The printed version is similarly changed by the print shop.  We think
  600. it's an attempt to discredit us, but we will thwart them again by simply
  601. printing the corrections to the mistakes THEY introduced below. 
  602.    
  603. @(e)dbldma: Speed up RAMLink transfers with the Double-DMA Technique
  604.  
  605. Brett Tabke wrote in to correct some misinformation contained in this
  606. article in Issue #11.  In the article's discussion of RAMDOS, it was
  607. written that "RAMDOS continually pages its code in and out of main
  608. memory" during transfers.  Mr. Tabke, who has researched the RAMDOS code
  609. extensively, notes that the above is incorrect.  RAMDOS pages the main
  610. code in to initiate the transfer, but the bulk of transfers are handled
  611. by the 256 byte interface that remains in memory at all times. 
  612.  
  613. @(e)mags: Hacking the Mags
  614.  
  615. We reprinted Jeff Jones' electronic mail address as printed in LOADSTAR
  616. LETTER #31, but Jeff sent us a note mentioning the address had changed,
  617. and the correct email address is jeff@loadstar.com.
  618.   
  619. @(e)cmdcpu: Underneath the Hood of the SuperCPU
  620.  
  621. In this article in version 1.0 of Issue #12, there were two references to=
  622.  
  623. "Exploiting the 65C816S CPU", an article pulled from the issue for space
  624. reasons.  We regret the error.  The full article on the 65C816S appears i=
  625. n
  626. this issue (Reference: cpu).
  627.  
  628. @(e)gfx: Taking to TED: The MOS 7360/8360 Display ICs
  629.  
  630. In early versions of Issue #12, the TED IC article was incorrectly
  631. attributed to Harsfalvi Levente.  Hungarians customarily sign names with
  632. the last name first, opposite English notation (implying that the other
  633. way must be Hungarian notation :-).  The article should be attributed to
  634. Levente Harsfalvi.  Version 1.3 of the issue fixes this problem.
  635.  
  636. @(e)polygon: Polygonamy: A Study in 3 Dimensions
  637.  
  638. After the publication of this article in Issue 12, Stephen Judd noted tha=
  639. t
  640. the following information was not included in the article:
  641.  
  642. Memory map:
  643.  
  644. $0800-$1BFF  Tables
  645. $1C00-$1FFF  Color info for bitmap #1
  646. $2000-$3FFF  Bitmap 1
  647. $4000-$58FF  Fill routine for bitmap #1
  648. $5900-$5BFF  Tables
  649. $5C00-$5FFF  Color info for bitmap #2
  650. $6000-$7FFF  Bitmap #2
  651. $8000-$A6FF  Code
  652. $A700-$BFFF  Fill routine for bitmap #2
  653. $C000-$C5FF  Yet more tables
  654. $C600-$C6FF  List of points for plotting routine
  655. $C700-$C7FF  Fill patterns
  656. $C800-$CDFF  A few more tables
  657.  
  658. The fill pattern table may be broken down further.  Each fill pattern
  659. is eight bytes, so to get the address in the fill table multiply the
  660. pattern number by eight:
  661.  
  662. 0 - Empty (clear)
  663. 1 - $FF (solid)
  664. 2 - Brick
  665. 3 - CrossSmall
  666. 4 - Inverse of 3
  667. 5 - Dither 1
  668. 6 - Dither 2 (inverse of 5)
  669. 7 - Zigs
  670. 8 - Zags
  671. 9 - Zigzag
  672. 10- Holes
  673. 11- Smiley
  674. 12-15 Not used
  675. 16-23 Shockwave    \ Animated patterns, eight frames each
  676. 24-31 Squaredance  /
  677.  
  678. If you have a freezer cartridge you might want to try changing the
  679. patterns.  You might also turn on the multicolor bit (bit 4 of $D016)
  680. to see what a multicolor Polygonamy might look like, and change the
  681. patterns (not to mention the color info) to be more multicolor-friendly.
  682.  
  683.  
  684.