home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / HACK4-2OF5.SFX / hack4.2-5
Encoding:
Text File  |  1990-02-12  |  37.0 KB  |  781 lines

  1.   ╘ITLE ╙CREEN ┬ACK╟ROUND
  2.   -----------------------
  3.   ╘HE TITLE SCREEN ╔ ENVISONED AS A BORDERED SCREEN (USING THE NORMAL ├= 
  4.   CHARACTER SET - IE: ├= ┴,╙,┌,╪ ON THE KEYBOARD) WITH OUR BITMAP IN THE MIDDLE
  5.   AND UNDER-NEATH IT A SHORT DESCRIPTION OF THE GAME AND GAME-PLAY INSTRUCTIONS.
  6.  
  7.   ╬OW THIS IS MY IDEA OF THE SCREEN LAYOUT (ROUGH DRAWING AS WE'RE NOT USING
  8.   THE ACTUAL SCREEN DIMENSIONS):
  9.  
  10.      +-------------------------------------------------------------+
  11.      ▄ -╠╧╟╧ ----------------------------------------------------- ▄
  12.      ▄ --------------X 3 LINES------------------------------------ ▄
  13.      ▄ ----------------------------------------------------------- ▄
  14.      ▄                                                             ▄
  15.      ▄                   ╙PACE ╔NVASION ├64/128                    ▄
  16.      ▄                     ╨ROGRAMMING : ├RAIG ╘AYLOR              ▄
  17.      ▄                     ╟RAPHICS    : ╨ASI ╧JALA                ▄
  18.      ▄                     ╙OUND       : ????????????              ▄
  19.      ▄                                                             ▄
  20.      ▄ ----------------------------------------------------------- ▄
  21.      ▄ ╘O ╨LAY:                                                    ▄
  22.      ▄    ╒SE JOYSTICK IN PORT 2, MOUSE IN PORT 1 OR KEYBOARD:     ▄
  23.      ▄            ┴ - ╠EFT, ┌ - ╥IGHT   ╙PACE - ╞IRE               ▄
  24.      ▄              ╞1 - ╥ESTART                                   ▄
  25.      ▄                                                             ▄
  26.      +-------------------------------------------------------------+
  27.  
  28.   ╘ITLE ╙CREEN ╞ORMATTING
  29.   -----------------------
  30.   ╫E COME INTO A PROBLEM HERE -- THE SCREEN IS SOME 1000 CHARACTERS ON THE ├64,
  31.   AND 2000 CHARACTERS FOR THE ├=128.  ╔T WOULD BE EXTREMELY WASTEFUL TO STORE
  32.   THAT MANY CHARACTERS IN MEMORY JUST TO REPRODUCE A TITLE SCREEN - AND MOST OF
  33.   THEM CONSISTING OF SPACES AT THAT!!  
  34.  
  35.   ╫HAT WE'LL DO IS TO JUST SPECIFY THE ADDRESS ON SCREEN, THE # OF CHARACTERS
  36.   AND THEN LIST THE CHARACTERS. ╔T WILL BE SIMILAIR TO OUR CUSTOM CHARACTER
  37.   TABLE DRIVER ABOVE BUT WILL BE DIFFERENT ENOUGH THAT A NEW ROUTINE IS 
  38.   WARRENTED. ╫E WILL HOWEVER USE THE TWO SUBROUTINES WRITEBYTE AND SETADRS
  39.   THAT WERE DEVELOPED IN THE PREVIOUS ROUTINE. ╘HE DATA WILL LOOK LIKE THE
  40.   FOLLOWING:
  41.  
  42.        .WORD ADDRESS
  43.        .BYTE NUM_OF_CHARS ($00= END OF DATA)
  44.        .ASCII "TEXT"
  45.        .BYTE ADDRESS .... ETC.... 
  46.  
  47.   AND WE'LL ENTER WITH .┴┘ CONTAINING THE ADDRESS OF THE TABLE.
  48.  
  49.   ╙O BASICALLY WE COME UP WITH THE FOLLOWING:
  50.  
  51. -------------------------------------------------------------------------------
  52.        WRITE'TXT = *
  53.                STA ZP1         ; SAVE .AY IN TABLE ADDRESS
  54.                STY ZP1+1
  55.                LDY #$00
  56.    LOOP'W'TEXT = *
  57.                JSR GET'BYTE   ; SET ADDRESS.
  58.                STA WRK
  59.                JSR GET'BYTE
  60.                STA WRK+1
  61.                JSR GET'BYTE    ; GET # OF CHARS TO WRITE OUT.
  62.                CMP #$00
  63.                BEQ +           ; IF ZERO THEN EXIT.
  64.                TAX
  65.                JSR SETADRS     ; SET ADDRESS TO WRK,WRK+1
  66.              - JSR GET'BYTE
  67.                JSR WRITEBYTE   ; WRITE OUT BYTE.
  68.                DEX
  69.                BNE -
  70.                SEC
  71.                BCS LOOP'W'TEXT ; THIS IS AN ABSOLUTE JUMP TO LOOP 
  72.              + RTS             ; RETURN.
  73.  
  74. -------------------------------------------------------------------------------
  75.  
  76.   ╘HIS IS SIMILAIR TO OUR PREVIOUS ROUTINE, AND WAS IN FACT COPIED AND MODIFIED 
  77.   FROM THE PREVIOUS ROUTINE. 
  78.  
  79.  
  80. ╓╔╔╔. ─EBUGGING
  81.       ---------
  82.  
  83.   ╬OW, NOT ALL PROGRAMS ARE PERFECT, AND DURING THE DEVELOPMENT OF THIS 
  84.   PORTION OF THE GAME THERE WERE SEVERAL ERRORS FOUND. ╘RACING AN ERROR IN
  85.   ═ACHINE/┴SSEMBLY-╠ANGUAGE IS LIKE TRYING TO FIND A GRAMMATICAL ERROR IN A
  86.   LANGUAGE YOU DON'T KNOW. ;-) ┬UT SERIOUSLY, THERE ARE SEVERAL WAYS TO TRACK
  87.   DOWN ERRORS IN YOUR CODE.
  88.  
  89.   1 - ╘RY TRACING IT THROUGH BY HAND PLAYING "╫HAT IF ╔ WERE THE COMPUTER" AND
  90.       FOLLOWING WHAT EACH REGISTER DOES.
  91.  
  92.   2 - ┴RE YOU SWITCHING THE ╠O╚I ORDER OF VARIABLES? ╔E: IS IT LDA #< OR 
  93.       LDA #>?? 
  94.  
  95.   3 - ╙ET ┬╥╦ POINTS AND RUN THE PROGRAM / SUBROUTINE WITHIN A MACHINE LANGUAGE
  96.       MONITOR AND MAKE SURE THE REGISTERS / MEMORY LOCATIONS CONTAIN THE VALUES
  97.       THAT THEY SHOULD. ╔F NOT, FIND OUT WHY.
  98.  
  99.   4 - ╘RY TO SIMPLIFY YOUR CODE IN TERMS OF PROGRAMMING EASE - ═AKE THE 
  100.       ASSEMBLER DO THE WORK FOR YOU - IT'S A LOT LESS LIKELY TO MAKE ERRORS 
  101.       THAN YOU ARE.
  102.   
  103.   5 - ╘HINK LOGICALLY!!!
  104.   
  105.   6 - ├HANGE SOMETHING AT RANDOM AND PRAY.
  106.  
  107.   ╔ CAN'T STRESS NUMBERS 3 AND 5 ENOUGH. ─URING THE WRITING OF THE INSTALL'CHAR 
  108.   ROUTINE THERE WERE NUMEROUS BUGS THAT WERE EVENTUALLY TRACKED DOWN BY 
  109.   SETTING A ┬╥╦ INSTRUCTION FURTHER ALONG IN THE CODE AND SEEING EXACTLY WHAT
  110.   THE REGISTER / MEMORY LOCATIONS WERE. ┴LSO THE USE OF TEMPORARY LOAD AND
  111.   STORE INSTRUCTIONS INTO "SAFE" REGIONS OF MEMORY HELPED ME MONITOR WHAT SOME
  112.   OF THE VALUES WERE.
  113.  
  114.   ╞OR EXAMPLE, AT ONE POINT ╔ HAD A SECTION OF CODE SIMILAIR TO THE FOLLOWING:
  115.  
  116.              CLC
  117.              LDA VALUE
  118.              ADC DATA
  119.              BNE +
  120.              INC DATA+1
  121.            + [.... ]
  122.  
  123.   ┴ND IT'S PURPOSE WAS TO ADD VALUE TO DATA. ╬OW ╔'VE FOUND SIMPLE ERRORS ARE
  124.   USUALLY FOUND LAST, AFTER COMPLEX ERRORS. ┴ND NOT UNTIL A SET A BREAK POINT
  125.   LIKE:
  126.  
  127.              CLC
  128.              LDA VALUE
  129.              ADC DATA    <-----═ISSING ╔NSTRUCTION AFTER HERE-------------+
  130.              BNE +                                                        ▄
  131.              INC DATA+1                                                   ▄
  132.            + ┬╥╦                                                          ▄
  133.              [.... ]                                                      ▄   
  134.                                                                           ▄
  135.   DID ╔ ACTUALLY FIGURE OUT THAT ╔ WAS MISSING THE ╙╘┴ ─┴╘┴ INSTRUCTION --+
  136.  
  137.   ╙O, WHEN WRITING, MODIFYING, AND TRYING TO DEBUG CODE TRY TO TAKE YOUR TIME
  138.   AND ISOLATE EVERY POSSIBLE PROBLEM. ┴LSO DON'T BE AFRAID TO STOP THE CODE
  139.   MID-STREAM AS IN THE ABOVE WITH USE OF THE ┬╥╦. ┘OU CAN ALWAYS REMOVE IT
  140.   (AND PROBAHLY SHOULD) IN THE FINAL CODE AND IT SERVES AS A VERY VALUABLE 
  141.   DEBUGGING TOOL WITH THE AID OF A MACHINE-LANGUAGE MONITOR.
  142.  
  143.   
  144. ╔╪. ═EMORY ═AP ├ONSIDERATIONS
  145.     -------------------------
  146.  
  147.   ┬EFORE YOU START A PROGRAM IT'S A GOOD IDEA TO CONSIDER WHERE IN MEMORY YOU
  148.   WILL HAVE EVERYTHING. ╬OW WE'VE ALREADY STARTED SOME OF THE PROGRAM ABOVE
  149.   AND JUST BLINDLY PICKED NUMBERS AT RANDOM IT SEEMED LIKE $3000 FOR THE 
  150.   CHARACTER SET FOR THE ├=64 ETC... ╫E DIDN'T - ╔'M INTRODUCING THE ═EMORY
  151.   ═AP ├ONSIDERATIONS HERE TO SHOW THE EXAMPLE OF WHAT IF WE DIDN'T THINK
  152.   ABOUT HOW MEMORY WAS GOING TO BE ORGANIZED.
  153.  
  154.   ╘HE ├=64 ONLY HAS 64K OF MEMORY OF WHICH TYPICALLY THE RANGE $0800-$A000
  155.   IS AVAILABLE AND $C000-$CFFF IS ALSO.  ╔F WE HAD BLINDLY PICKED NUMBERS
  156.   ALL OVER THE PLACE TO STORE OUR CODE THEN WE WOULD HAVE A DISORGANIZED
  157.   PROGRAM THAT WOULD MOST LIKELY ACCIDENTALLY USE ONE SUBROUTINES STORAGE
  158.   AS TEMPORARY DATA FOR ANOTHER. ╔T'S LIKE SHOOTING RANDOMLY IN ╠ASER ╘AG
  159.   NOT CHECKING TO SEE IF THERE IS A TARGET THERE OR NOT FIRST... ╘HE END
  160.   RESULT: ├HAOS.
  161.  
  162.   ├URRENTLY WE'RE NOT FOLLOWING THE RULE FOR "TEMPORARY VARIABLES" BUT AS
  163.   WE GRADUALLY FADE OUT OF THE NORMAL ├-64/128 DEFAULT MODE AND WRITE OUR
  164.   OWN ROUTINES / INTERRUPT HANDLERS WE'LL SWITCH THINGS OVER. ┴LSO, ON THE
  165.   ├=128 INSTEAD OF USING ┬ANK 0 WITH THE ╔/╧ BLOCK ENABLED WE'RE CURRENTLY
  166.   USING THE ┬┴╬╦ 15 CONFIGURATION AS THE PROGRAM DOESN'T EXTEND PAST $4000
  167.   YET ($0000-$4000 IS COMMON MEMORY IN THE NORMAL ├=128 CONFIGUARTION).
  168.  
  169.   64 ├ONSIDERATIONS
  170.   -----------------
  171.   ╘HE 64 WILL HAVE FREE MEMORY IN THE FOLLOWING AREAS: $0800-$A000, AND
  172.   $C000-$CFFF. ╚OWEVER, IF WE DISABLE THE ┬ASIC ╥OM WE CAN HAVE THE WHOLE
  173.   AREA FROM $0800-$CFFF FREE FOR OUR PROGRAM. ┬ECAUSE WE DON'T NEED THE
  174.   ┬ASIC ╥OM WE WILL DO JUST THAT (IN THE LISTING NOW WE CURRENTLY WON'T BUT 
  175.   IT WILL BE DONE IN A FUTURE ISSUE). ╘HEREFORE HAVING THE CHARACTER SET
  176.   AT $3000-$5000, THE MUSIC DATA AT $5000-$8000, THE PROGRAM WILL HAVE THE
  177.   AREA FREE FROM $8000-$CFFF. $0800-$3000 WILL BE AVAILABLE IF NEEDED FOR
  178.   ROUTINES WHO NEED TEMPORARY STORAGE. 
  179.  
  180.   ╘EMPORARY ╙TORAGE IS GOING TO BE DEFINED AS FOLLOWS. ┼ACH ROUTINE THAT NEEDS
  181.   TEMPORARY STORAGE WILL BE ASSIGNED A "LEVEL" NUMBER. ╘HE LOWER LEVELS WILL
  182.   BE ASSIGNED LEVEL 1 ON UP TO LEVEL 3. ╘HE RANGE $0800-$3000 WILL BE 
  183.   BROKEN DOWN INTO THE FOLLOWING SUB-RANGES.
  184.  
  185.        ╠EVEL 1: $0800-$1000
  186.        ╠EVEL 2: $1000-$1800
  187.        ╠EVEL 3: $1800-$3000
  188.   
  189.   ╘HIS WAY WHEN WRITING THE SUB-ROUTINES WE CAN BE ASSURED THAT A SECTION OF
  190.   MEMORY IS NOT OVERWRITTEN BY A SUBROUTINE WE CALL. ╫HEN WE ACTUALLY START
  191.   PROGRAMMING WE'LL DECIDE WHERE IN EACH SUB-RANGE THE ROUTINE WILL HAVE 
  192.   ACCESS TO.
  193.  
  194.   128 ├ONSIDERATIONS
  195.   ------------------
  196.   ╘HE 128 HAS TWO "BANKS" OF 64K EACH. ╬ORMALLY FOR LARGE PROGRAMS WE WOULD 
  197.   THINK ABOUT USING BOTH BANKS - (FROM THE IDEA: ╚EY! - ╫E GOT IT, WHY NOT
  198.   FLAUNT IT?) BUT WE WON'T BE USING BOTH BANKS.
  199.  
  200.   ╞REE MEMORY ON THE ├128 TYPICALLY CONSISTS OF THE RANGE $0400-$09FF
  201.   (WHERE WE'LL BE OVERWRITING THE 40 COLUMN SCREEN (WHICH WE'RE GONNA BLANK
  202.   ANYWAY) AND THE ┬ASIC RUN-TIME STACK.) ┴LSO THE AREA FROM $0B00-$0FFF
  203.   IS FREE (OVERWRITING THE TAPE AREA, THE RS-232 BUFFERS,L AND THE SPRITE
  204.   DEFINITION AREA). ┴LSO $1300-$CFFF WILL BE FREE. 
  205.  
  206.   ╬OW, THE ├=128 HAS DIFFERENT MEMORY MAPS IT CAN CONFIGURE ITSELF TO - 
  207.   ┬ANK 15 IS THE STANDARD MODE UNDER MOST BASIC PROGRAMS AND ALLOWS THE
  208.   PROGRAMMER TO DIRECTLY "SYS" TO CALLS. ╘HE ══╒ (MEMORY MANAGEMENT UNIT -
  209.   THE CHIP THAT DOES EVERYTHING) SEES MEMORY IN A SLIGHTLY DIFFERANT WAY
  210.   THAN FROM BASIC. ╫E'LL COVER IT IN MORE DETAIL WHEN WE EXAMINE THE MEM_INIT
  211.   ROUTINE. ╞OR NOW, WE'RE JUST GONNA SET UP IN THE PROGRAM AND NOT IN THE
  212.   CODING SEGMENTS. ╘HE EXPLANATION OF WHAT WE'RE DOING WILL BE "REVEALED"
  213.   IN A FUTURE ISSUE. 
  214.  
  215.   ╫E WILL USE ┬ANK 0 OF MEMORY AND FROM $1300+ WILL BE THE PROGRAM. ╘HE RANGES
  216.   OF $0400-$09FF AND $0B00-$0FFF WILL BE USED IN A SIMILAIR MANNAR AS THE ├64
  217.   RANGES WERE FOR ╘EMPORARY ╙TORAGE. ╫E WILL ALSO HAVE THE ╔/╧ SECTION FROM
  218.   $D000-$DFFF SWAPPED IN. ╘HIS IS NOT A STANDARD "BASIC ┬┴╬╦ #" BUT WHEN WE
  219.   COVER THE INIT'MEMORY ROUTINE WE'LL SEE HOW WE CAN DO THIS. ═USIC DATA
  220.   WILL BE FROM $A000-$D000. 
  221.   
  222.  
  223. ╪.  ╠OOKING ╞ORWARD / ┬ACK
  224.     ----------------------
  225.  
  226.   ╚OPEFULLY THROUGH THE LISTING AND THE DISCUSSION OF THE ROUTINES YOU HAVE
  227.   STARTED TO UNDERSTAND THE BASIC CONCEPT OF PROGRAMMING: BREAKING DOWN PROBLEMS
  228.   INTO SMALLER SOLVABLE STEPS. ╘RY LOOKING BACK OVER THE CODE ASKING YOURSELF
  229.   WHY THAT INSTRUCTION IS THERE. ╫HAT WOULD HAPPEN IF YOU SWITCHED THE ORDER?
  230.   ╔S THERE AN EASIER, BETTER WAY TO DO THE SAME THING? ╫HY? ┬ETTER YET, HOW?
  231.   ┼XAMINE THE CODE, MESS WITH IT, MUCK IT UP SO IT DOESN'T WORK AND THEN FIGURE
  232.   OUT EXACTLY WHY. ╘HE ONLY WAY TO LEARN IS BY EXPERIMENTATION. (┬╘╫, MUCK UP
  233.   A _COPY_ OF IT - NOT THE ORIGINAL ... *GRINS*)
  234.  
  235.   ╘AKE A LOOK AT THE DIFFERENT SECTIONS OF CODE AND ANALYZE THEM TO SEE HOW
  236.   THEY DO WHAT THEY DO. ╘AKE A LOOK AT HOW THE CODE WAS ORGANIZED IN TERMS
  237.   OF SIMPLIFICATION. ╘RACE THROUGH EACH SUBROUTINE SO THAT YOU'RE ABLE TO 
  238.   KNOW WHAT THE RETURN VALUES WILL BE. ╔N OTHER WORDS: ╙TUDY, ╙TUDY, ╙TUDY!!
  239.   ╔'M IN SCHOOL AND SO ╔ KNOW ╔ JUST USED THE DREADED '╙' WORD BUT THAT'S 
  240.   WHAT YOU'RE GOING TO HAVE TO DO IF YOU'RE INTERESTED IN LEARNING 65XX/85XX
  241.   MACHINE LANGUAGE. ╘HE ONLY WAY TO LEARN IT (EASILY) IS TO STUDY OTHER 
  242.   PEOPLE'S CODE AND TRY TO UNDERSTAND WHY THEY DID WHAT THEY DID.
  243.  
  244.   ╬EXT TIME WE WILL TAKE A LOOK AT THE INPUT ROUTINES FOR THE MOUSE, JOYSTICK
  245.   AND KEYBOARD SCANNING. ╔N ADDITION WE WILL ALSO ALLOW THE PLAYER TO MOVE
  246.   THE SHIP AROUND ON THE SCREEN TO TEST THE INPUT DRIVERS. 
  247.  
  248.   ╔N ADDATION, ╔ AM STILL LOOKING FOR AN INDIVIDUAL TO HELP WITH MUSIC AND
  249.   SOUND COMPOSITION FOR THIS PROGRAM. ┴ KNOWLEDGE OF THE ╙╔─ CHIP AND 
  250.   PROGRAMMING IS HELPFUL BUT NOT REQUIRED. ╔F YOU'RE WILLING TO HELP THEN
  251.   PLEASE EMAIL ME AT DUCK@PEMBVAX1.PEMBROKE.EDU
  252.  
  253.  
  254. ╪╔. ╠ISTINGS
  255.     --------
  256.  
  257.   ┬ECAUSE OF THE ENORMITY OF THE PROGRAM LISTING (SOME 1,500+ LINES) IT WILL 
  258.   NOT BE LISTED IN THIS ARTICLE BUT WILL INSTEAD BE AVAILABLE VIA ANONYMOUS
  259.   FTP AT CCOSUN.CALTECH.EDU UNDER PUB/RKNOP/╚┴├╦╔╬╟.═┴╟ AS INVAS1.SFX. 
  260.  
  261.   ╞OR THOSE OF YOU ON THE MAILING LIST WHO WOULD LIKE TO RECIEVE IT, A ═AIL-
  262.   ╙ERVER WILL BE SET UP SOON TO HANDLE REQUESTS AND INFORMATION WILL BE
  263.   SENT TO YOU CONCERNING INFORMATION ABOUT USING IT AS SOON AS IT'S COMPLETED.
  264.  
  265.   ╔N THE INVASION1.SFX FILE THERE ARE THE FOLLOWING FILES:
  266.  
  267.        INVASION.SRC - THE MAIN FILE
  268.        GRAPHICS.SRC - HANDLES ALL GRAPHICS ROUTINES
  269.        LOGO.DAT     - CUSTOM CHARACTER LOGO
  270.        CHARS64.DAT  - ALIEN CUSTOM CHARACTERS FOR ├=64
  271.        CHARS128.DAT - ALIEN CUSTOM CHARACTERS FOR ├=128
  272.        TITLETXT.DAT - TEXT DATA FOR TITLE SCREEN
  273.        TITLECOL.DAT - COLOR DATA FOR TITLE SCREEN
  274.        INVASION-128 - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=128
  275.        INVASION-64  - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=64
  276.  
  277.   ╬OTE: ╞OR THE ├OMMODORE 128 IT'S RECOMMENDED THAT YOU DO A RUN/STOP-RESTORE
  278.   AND THEN A "┬┴╬╦15:╙┘╙7168" TO EXECUTE THE PROGRAM. ╞OR THE ├OMMODORE 64 IT'S
  279.   RECOMMENDED THE BORDER BE CHANGED VIA: "╨╧╦┼53280,0:╨╧╦┼53281,0:╙┘╙ 32768" TO
  280.   RUN THE PROGRAM.
  281.  
  282. ==============================================================================
  283. ╘HE ─EMO ├ORNER:
  284.  
  285. ╞╠╔ - MORE COLOR TO THE SCREEN   
  286. BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI OR ALBERT@CC.TUT.FI)
  287.                         ╫RITTEN ON 16-═AY-91   ╘RANSLATION 01-╩UN-92
  288.     
  289. (┴LL TIMINGS ARE IN ╨┴╠, ALTHO THE PRINCIPLES WILL APPLY TO ╬╘╙├ TOO)
  290.  
  291. ┴LL OF US HAVE HEARD COMPLAINTS ABOUT THE COLOR CONSTRAINTS ON ├64. ╧NE 8X8
  292. PIXEL CHARACTER POSITION MAY ONLY CARRY FOUR DIFFERENT COLORS.  ╞╠╔ PICTURE
  293. CAN HAVE ALL OF THE 16 COLORS IN ONE CHAR POSITION.  ╫HAT THEN IS THIS ╞╠╔
  294. AND HOW IT IS DONE ?
  295.  
  296. ╔N THE NORMAL MULTICOLOR MODE CAN ONE CHARACTER POSITION (4X8 PIXELS) HAVE
  297. ONLY FOUR DIFFERENT COLORS AND ONE OF THEM IS THE COMMON BACKGROUND COLOR.
  298. ├OLOR CODES ARE STORED IN HALF BYTES (NYBBLES) TO THE VIDEO MATRIX MEMORY
  299. (ANYWHERE VIDEO MATRIX POINTER POINTS AT, NORMALLY $0400) AND TO THE COLOR
  300. MEMORY ($─800-$─┬╞╞). ╔N MULTICOLOR MODE THE COLOR OF EACH PIXEL IS
  301. DETERMINED BY TWO BITS IN THE GRAPHICS MEMORY. ┬IT PAIR 11 WILL REFER TO
  302. COLOR MEMORY, BACKGROUND COLOR IS THE COLOR FOR BIT PAIR 00, AND VIDEO
  303. MATRIX WILL DEFINE THE COLORS FOR BIT PAIRS 01 AND 10.
  304.  
  305.  
  306. _╫HAT HAPPENS IN THE ╓╔├ ?_
  307.  
  308. ╓╔├ (╓IDEO ╔NTERFACE ├ONTROLLER) FETCHES COLOR INFORMATION FROM MEMORY ON
  309. EACH BAD LINE. ╘HIS WILL STEAL TIME FROM PROCESSOR, BECAUSE ╓╔├ NEEDS TO USE
  310. PROCESSOR'S BUS CYCLES. ┬AD LINE IS A CURSE IN THE ├64 WORLD. ╞ORTUNATELY
  311. ╓╔├'S DATA BUS IS 12 BITS WIDE AND SO THE COLOR DATA FETCH FOR EACH CHARACTER
  312. POSITION WILL TAKE ONLY ONE BUS CYCLE. ├OLOR MEMORY IS PHYSICALLY WIRED TO
  313. THE ╓╔├ DATABUS LINES ─8-─11.
  314.  
  315. ╚OW DOES ╓╔├ KNOW WHERE TO FETCH THE GRAPHICAL INFORMATION ? ╙OME OF YOU KNOW
  316. THE MYSTICAL FORMULAS NEEDED TO MESS WITH THE PIXELS IN THE HIRES SCREEN.
  317. ╚OW ARE THESE FUNCTIONS OBTAINED ? ┴RE THEY JUST MAGIC ? ╬O, THERE ARE SOME
  318. INTERNAL COUNTERS IN ╓╔├. ╘HEY ALWAYS POINT TO THE RIGHT PLACE IN GRAFIX
  319. MEMORY AND THE ADDRESS IS DETERMINED LIKE THIS:
  320.  
  321. ┴13  ┴12 ┴11 ┴10 ┴9  ┴8  ┴7  ┴6  ┴5  ┴4  ┴3  ┴2  ┴1  ┴0
  322. ├┬13 ╓├9 ╓├8 ╓├7 ╓├6 ╓├5 ╓├4 ╓├3 ╓├2 ╓├1 ╓├0 ╥├2 ╥├1 ╥├0
  323.  
  324. ┴DDRESS BITS ┴15 AND ┴14 CHANGE ACCORDING TO THE SELECTED VIDEO BANK.
  325. ┴DDRESS BIT ┴13 IS ├┬13, WHICH MAY BE FOUND IN ╓╔├ REGISTER $18. ╔T
  326. SELECTS THE RIGHT SIDE OF THE VIDEO BANK TO BE THE BITMAP MEMORY. ╫ITH
  327. THESE BITS YOU CAN SET THE BITMAP TO EIGHT DIFFERENT PLACES IN MEMORY.
  328. ╚OWEVER, SOME OF THEM ARE USELESS BECAUSE OF THE CHARACTER ╥╧═ IMAGES AND
  329. ZERO PAGE/STACK. ╥EST OF THE BITS COME FROM THE INTERNAL COUNTERS.
  330.  
  331. ╓├9-╓├0 (╓IDEO ├OUNTER) FORMS THE ADDRESS BITS 12-3. ╘HE COUNTER ROLLS
  332. THROUGH ALL 1000 CHARACTER POSITIONS, 0-39 ON THE FIRST EIGHT LINES, 40-79
  333. ON THE SECOND EIGHT LINES AND SO ON. ╘HE LOWEST THREE BITS COME FROM THE ROW
  334. COUNTER, ╥├2-╥├0. ╘HIS IS ANOTHER ╓╔├ COUNTER AND IT COUNTS THE SCAN LINES
  335. FROM ZERO TO SEVEN.
  336.  
  337.  
  338. _┴ SOFTWARE GRAPHICS MODE - ╞╠╔_
  339.  
  340. ╓╔├ WILL SYSTEMATICALLY GO THROUGH EVERY BYTE IN THE BITMAP MEMORY, BUT HOW
  341. DOES IT KNOW WHERE AND WHEN TO GET THE COLOR INFORMATION ? ╘HIS IS WHERE
  342. THE MAIN PRINCIPLE OF ╞╠╔ (╞LEXIBLE ╠INE ╔NTERPRETATION) LIES. ├OLOR DATA
  343. IS FETCHED (AND THIS MEANS IT IS A BAD LINE), WHEN THE LINE COUNTER MATCHES
  344. WITH THE VERTICAL SCROLL REGISTER. ╓├9-╓├0 DEFINES WHERE THE COLOR DATA IS
  345. INSIDE THE VIDEO MATRIX AND COLOR MEMORY.
  346.  
  347. ╔F WE CHANGE THE VERTICAL SCROLL REGISTER, WE CAN FOOL ╓╔├ TO THINK THAT
  348. EVERY LINE IS A BAD LINE, SO IT WILL FETCH THE COLOR INFORMATION ON EVERY
  349. LINE TOO. ┬ECAUSE ╓╔├ WILL FETCH THE COLORS CONTINUOSLY, WE CAN GET
  350. INDEPENDENT COLORS ON EACH SCAN LINE. ╫E JUST HAVE TO CHANGE COLORS AND ╓╔├
  351. WILL HANDLE THE REST. ╒NFORTUNATELY THE RESULT IS THE LOSS OF 40 PROCESSOR
  352. CYCLES PER LINE (SEE THE ═ISSING ├YCLES ARTICLE FOR MORE INFORMATION ABOUT
  353. ╓╔├ STEALING CYCLES).
  354.  
  355.  
  356. _─OING IT IN PRACTICE_
  357.  
  358. ╔N PRACTICE THERE IS NO TIME TO CHANGE COLOR MEMORY, BUT IN MULTICOLOR
  359. MODE ╓╔├ USES VIDEO MATRIX FOR COLOR INFORMATION TOO. ╫E HAVE JUST ENOUGH
  360. TIME TO CHANGE THE VIDEO MATRIX POINTER, $─018. ╬OW ╓╔├ WILL SEE A
  361. DIFFERENT VIDEO MATRIX ON EACH SCAN LINE, DIFFERENT BLOCK OF MEMORY. ╫ITH
  362. THE FOUR UPPER BITS IN THE REGISTER WE SELECT ONE OF THE 16 VIDEO MEMORIES
  363. IN THE VIDEO BANK. ╩UST REMEMBER THAT THE REGISTER ALSO SELECTS THE POSITION
  364. OF THE GRAPHICS MEMORY (BITMAP) INSIDE THE VIDEO BANK.
  365.  
  366. ┬ECAUSE WE HAVE TO KEEP THE BITMAP IN THE SAME VIDEO BANK, WE ONLY HAVE HALF
  367. OF THE BANK FREE FOR VIDEO MATRICES. ╞ORTUNATELY, THAT'S ALL WE NEED TO GET
  368. INDIVIDUAL MULTICOLOR COLORS FOR EACH LINE AND CHARACTER POSITION.
  369. ╓╔├ WILL FETCH THE COLOR DATA FROM THE EIGHT VIDEO MATRICES AND THEN IT WILL
  370. ROLL ON TO THE NEXT 40 BYTES. ┴FTER EIGHT LINES AND MATRICES WE WILL SELECT
  371. THE FIRST VIDEO MATRIX AGAIN. (╙EE PICTURE 1)
  372.  
  373. ╒SUALLY IT IS NOT NECASSARY TO USE THE WHOLE SCREEN FOR A ╞╠╔ PICTURE,
  374. ESPECIALLY IF YOU WANT TO HAVE A SCROLLER OR SOME OTHER EFFECTS. ┘OU JUST
  375. HAVE TO MAKE SURE THAT ╓╔├ IS FOOLABLE IN THE USUAL WAY. ╘HE TIMING IS ALSO
  376. VERY IMPORTANT, EVEN ONE CYCLE VARIATIONS IN THE ROUTINE ENTRY ARE NOT
  377. ALLOWED. ╘HERE IS MANY WAYS TO DO THE SYNCHRONIZATION. ╧NE WAY IS TO USE A
  378. SPRITE, AS IN THE PREVIOUS ARTICLE. (╙EE ├= ╚ACKING, ╓OL. 1, ╔SS. 3, ╘HE
  379. ─EMO ├ORNER: ═ISSING ├YCLES).
  380.  
  381.  
  382. _╬OT MUCH TIME_
  383.  
  384. ┬ECAUSE A BAD LINE WILL STEAL 40 CYCLES, THERE IS ONLY 23 CYCLES LEFT ON
  385. EACH SCAN LINE. ╔T IS ENOUGH FOR CHANGING THE VIDEO MATRIX AND BACKGROUD
  386. COLOR. ╘HERE IS NOT A MOMENT TO LOSE, BECAUSE YOU MUST CHANGE THE VERTICAL
  387. SCROLL REGISTER, VIDEO MATRIX POINTER AND THE BACKGROUND COLOR. ╘HIS IS WHY
  388. YOU CAN'T HAVE SPRITES IN FRONT OF A ╞╠╔ PICTURE.
  389.  
  390. ╫ITH ╞╠╔ WE GET TWO SELECTABLE COLORS FOR EACH CHARACTER POSITION AND LINE,
  391. EACH SCAN LINE CAN HAVE IT'S OWN BACKGROUND COLOR AND EACH CHARACTER POSITION
  392. STILL HAS ITS OWN CHARACTER COLOR FROM COLOR MEMORY. ╔N THEORY EACH CHARACTER
  393. POSITION COULD HAVE 25 DIFFERENT COLORS, UNFORTUNATELY ╓╔├ ONLY HAS 16.
  394.  
  395.  
  396. _┴ LITTLE FEATURE_
  397.  
  398. ╓╔├ DOES NOT LIKE IT WHEN WE CHANGE THE VERTICAL SCROLL REGISTER ($─011),
  399. AND IS A BIT ANNOYED. ╔T 'SEES' CODE 255 (LIGHT GRAY) IN VIDEO MATRIX
  400. AND 9 (BROWN) IN THE COLOR MEMORY INSTEAD OF THE CORRECT VALUES STORED THERE.
  401. ┴CTUALLY THE COLOR VALUE SEEMS TO BE THE LOWER NYBBLE OF THE DATA BYTE
  402. CURRENTLY ON THE DATA BUS (ACCESSED BY THE PROCESSOR (╠─┴#=$┴9)).
  403. ╒NFORTUNATELY THERE IS NO CHANCE TO DO THE REGISTER CHANGE IN THE BORDER
  404. AND THUS THE THREE LEFTMOST CHARACTER COLUMNS ARE A BIT USELESS, BECAUSE
  405. THE COLORS ARE FIXED.
  406.  
  407. ╚OWEVER, THIS DOESN'T MEAN THAT YOU CAN'T USE THOSE THREE COLUMNS. ╞╠╔
  408. EDITORS MAY NOT SUPPORT THE FIXED COLORS THOUGH, SO IT MAY BE HARD TO USE
  409. THEM.
  410.  
  411.  
  412. _╫HAT TO DO WITH ╞╠╔ ?_
  413.  
  414. ┬ECAUSE ╞╠╔ WILL EAT UP ALL THE AVAILABLE PROCESSOR TIME (NO ├OPPER :-),
  415. IT IS NOT SUITABLE FOR ANY ACTION-GAMES. ┼ACH ╞╠╔ PICTURE TAKES ABOUT 17 K┬
  416. OF MEMORY: NOT SO MANY PICTURES FIT ON ONE FLOPPY. ╙O, THE ONLY PLACE FOR ╞╠╔
  417. IS DEMOS, INTROS, BOARD-TYPE GAMES AND MAYBE A ╟╔╞ VIEWER..
  418.  
  419. --------------------------------------------------------------------------
  420. ╨ICTURE 1: ╞ROM WHICH MATRIX ╓╔├ FETCHES THE MULTICOLOR VALUES
  421.  
  422.  _          ___________________________________________________________
  423. ▄      ... ▄ ═ATRIX0       ▄ ═ATRIX0       ▄ ═ATRIX0       ▄
  424. ▄      ,  .▄____3__________▄____4__________▄____5__________▄  ...
  425. ▄       ╒ .▄ ═ATRIX1       ▄ ═ATRIX1       ▄ ═ATRIX1       ▄
  426. ▄       S .▄____3__________▄____4__________▄____5__________▄ .
  427. ▄├HAR   E  ▄ ═ATRIX2       ▄ ═ATRIX2       ▄ ═ATRIX2       ▄ .
  428. ▄╠INE   L  ▄____3__________▄____4__________▄____5__________▄ .
  429. ▄┌ERO   E  ▄ ═ATRIX3       ▄ ═ATRIX3       ▄ ═ATRIX3       ▄
  430. ▄       S  ▄____3__________▄____4__________▄____5__________▄
  431. ▄       S, ▄ ═ATRIX4       ▄ ═ATRIX4       ▄ ═ATRIX4       ▄
  432. ▄          ▄____3__________▄____4__________▄____5__________▄
  433. ▄       C  ▄ ═ATRIX5       ▄ ═ATRIX5       ▄ ═ATRIX5       ▄
  434. ▄       O  ▄____3__________▄____4__________▄____5__________▄
  435. ▄       L  ▄ ═ATRIX6       ▄ ═ATRIX6       ▄ ═ATRIX6       ▄
  436. ▄       U  ▄____3__________▄____4__________▄____5__________▄
  437. ▄       M  ▄ ═ATRIX7       ▄ ═ATRIX7       ▄ ═ATRIX7       ▄
  438. ▄_      N  ▄____3__________▄____4__________▄____5__________▄
  439.         S  ▄ ═ATRIX0       ▄ ═ATRIX0       ▄ ═ATRIX0       ▄
  440.            ▄___43__________▄___44__________▄___45__________▄
  441.            ▄ ═ATRIX1       ▄ ═ATRIX1       ▄ ═ATRIX1       ▄
  442.            ▄___43__________▄___44__________▄___45__________▄
  443.            ▄
  444.            ▄   ...
  445.            ▄ .
  446.            ▄ .
  447.            ▄ .
  448.  
  449. --------------------------------------------------------------------------
  450. _┴DDITIONAL READING_
  451.  
  452. ╔F YOU HAVE AN ┴MIGA YOU MIGHT WANT TO GET YOUR HANDS INTO MY CONVERSION
  453. PROGRAMS IN ├64╟╞╪1.LHA. ╘HE PACKET ALSO INCLUDES ╞╠╔ VIEWER FOR ╨┴╠ ├64'S
  454. AND SOME DOCUMENTATION ABOUT THE ╞╠╔ FILE FORMAT. ╔T ALSO HAS THE SAME
  455. UTILITIES FOR ╦OALA FORMAT PICTURES.
  456.  
  457. ┴VAILABLE FROM:
  458. CWAVES.STFX.CA
  459. NIC.FUNET.FI:/PUB/AMIGA/GRAPHICS/APPLICATIONS/CONVERT
  460.  
  461.  
  462. ├64╟╞╪.DOC
  463.                         ├64╟FX1.0
  464.            ┴ ├64 GRAFIX FORMAT CONVERSION PACKAGE
  465.            )1991,1992  ╨ASI '┴LBERT' ╧JALA
  466.  
  467.            ┼-MAIL: PO87553@CS.TUT.FI
  468.                    ALBERT@CC.TUT.FI
  469.  
  470. ╘HIS PACKAGE CONTAINS PROGRAMS WHICH ARE USED TO CONVERT PORTABLE
  471. PIXMAP (PPM) FILES TO ├64 GRAPHICS FORMATS (╞╠╔ AND KOALA) UNDER
  472. ┴MIGA╧╙. ╘HE PACKAGE INCLUDES ├ SOURCE CODES FOR THE PROGRAMS, SO
  473. IT IS POSSIBLE TO PORT THE PROGRAMS TO ANOTHER ENVIRONMENT. ├64╟╞╪1.1
  474. INCLUDES ╒NIX-COMPILABLE SOURCES.
  475.  
  476. ╔N ADDITION TO THIS PACKAGE YOU NEED E.G. ╨┬═╨LUS TO CONVERT ┴MIGA
  477. ILBM FILES TO PPM FIRST. ┴ND OF COURSE SOME WAY TO TRANSFER FILES
  478. BETWEEN THE MACHINES.
  479.  
  480. =============================================================================
  481. ╥╙-232 ├ONVERTER
  482. BY ╫ARREN ╘USTIN (WARREN@COL.HP.COM)
  483.  
  484.   ╘HIS ARTICLE PRESENTS A WAY TO INTERFACE FROM THE ├= RS232 HARDWARE
  485. BEHIND THE USER PORT TO A STANDARD 25PIN FEMALE RS232 CONNECTOR USING ONLY
  486. ONE ╔├ AND A FEW CAPACITORS.  ╔T IS NOT A ╒┴╥╘ OR A ╙╫╔╞╘╠╔╬╦ TYPE INTERFACE
  487. WHICH TAKE PLACE OF THE INTERNAL ├= RS232 CIRCUITRY, BUT A SIMPLE LEVEL SHIFTING
  488. INTERFACE THAT USES THE INTERNAL RS232 ROUTINES AND TRANSLATES THE USER PORT
  489. LEVELS TO RS232 LEVELS.  ╘HEREFORE YOU CAN ONLY GET UPTO 2400BAUD/9600BAUD
  490. (├=64/├=128) WITH THIS DESIGN.
  491.  
  492.   ╘HE "OLD" WAY TO DO THIS WAS TO USED ═├1488 AND ═├1489 PARTS (A LINE
  493. DRIVER AND LINE RECEIVER), HOWEVER THESE REQUIRED A NEGATIVE SUPPLY TO INTERFACE
  494. PROPERLY.  ╘HE USER PORT ONLY SUPPLIES +5VOLTS, HENCE THIS PRESENTS A PROBLEM.
  495. ╘HERE HAS BEEN SUCCESS USING THESE PARTS OR DISCRETE TRANSISTORS AND RESISTORS
  496. SINCE MANY MODEMS ARE SOMEWHAT FRIENDLY AND SEEM TO WORK EVEN THOUGH THE LEVELS
  497. WERE MARGINAL.  ┴LSO, SOME SIGNALS WERE NOT USED, ALLOWING FOR POTENTIAL
  498. PROBLEMS.  ┴NOTHER WAY TO SOLVE THIS PROBLEM WAS TO BUY A $25-30 INTERFACE.  ╔F
  499. YOU CAN FIND THE ╔├ BELOW, YOU HAVE ANOTHER CHOICE THAT IS RELATIVELY
  500. INEXPENSIVE.
  501.  
  502.    ╘HE ╠╘1133 IS BASICALLY THE ═├1488 AND 1489 PUT TOGETHER INTO ONE PART
  503. WITH AN INTERNAL CHARGE PUMP SCHEME THAT ALLOWS THE INTERNAL DRIVERS TO OUTPUT
  504. +5 AND -5 VOLTS TO THE RS232 CONNECTOR.  ╔T ALSO HAS ENOUGH DRIVERS AND
  505. RECEIVERS TO HANDLE ALL OF THE SIGNALS THAT THE ├= USES FOR RS232.
  506.  
  507.    ╙O WITH THIS ╔├, 5 CAPACITORS AND THE TWO CONNECTORS (USER PORT AND
  508. RS232) YOU CAN BUILD YOUR OWN INTERFACE TO THE STANDARD 25 PIN MODEM CABLE.
  509.  
  510.    ╚ERE ARE THE PLANS FOR AN ╒SER PORT ╘╧ ╥╙232 CONNECTOR USING JUST ╧╬┼ ╔├ AND
  511. 4 CAPACITORS.  ╔T USES A ╠INEAR ╘ECHNOLOGY ╠╘1133 BUFFER THAT HAS 3 ╥╙232
  512. DRIVERS AND 5 RECEIVERS.  ╔T HAS WORKED FOR ME WITH NO PROBLEMS AND TAKES
  513. A MINIMUM AMOUT OF WIRING TO GET TO WORK.  ═Y BOARD IS ONLY THE WIDTH OF
  514. THE USER PORT AND ABOUT 1.5 INCHES DEEP IN SIZE.
  515.  
  516. ╨ARTS LIST:
  517. ----------
  518.      ╠╘1133├╬ PLASTIC DIP OR ╠╘1133├╩ CERAMIC DIP ╥╙232 DRIVER FROM ╠INEAR
  519.         ╘ECHNOLOGIES
  520.  
  521.         (╔T TAKES 27M┴ MAX (17M┴ TYPICAL) SO IS WELL BELOW THE 100M┴ 
  522.          LIMIT OF THE USER PORT)
  523.  
  524.          ─RIVER ╔N PINS  (15,19,21)  ╘╘╠/├═╧╙ COMPATIBLE.  ╒NUSED INPUTS
  525.                            ▄  ▄  ▄   SHOULD BE TIED TO +5V.
  526.          ─RIVER ╧UT PINS (11, 7, 5)  ╥╙232 COMPATIBLE.  ╙HORT CIRCUIT 
  527.                                      PROTECTED FROM -30V TO +30V.
  528.          ╥ECEIVER ╔N PINS  (6, 8, 9, 10,12)  ┴CCEPT ╥╙232 LEVELS (+-30V)
  529.                             ▄  ▄  ▄   ▄  ▄   AND HAVE 0.4V OF HYSTERESIS TO
  530.                             ▄  ▄  ▄   ▄  ▄   PROVIDE NOISE IMMUNITY.
  531.          ╥ECEIVER ╧UT PINS (20,18,17,16,14)  ╘╘╠/├═╧╙ OUTPUTS.
  532.  
  533.          ╬╧╘┼: ╠INES ABOVE INDICATE WHICH INPUTS GO WITH WHICH OUTPUTS, AND
  534.                THE PAIRS CAN BE INTERCHANGED FREELY.  ╔ CONNECTED THEM AS
  535.                DESCRIBED BELOW BECAUSE THE WIRING WORKED OUT THE BEST FOR ME. 
  536.  
  537.      4 - >= 1U╞ CAPACITORS   ╒SED TO GENERATE ╥╙232 VOLTAGES BY A CHARGE PUMP
  538.                              TECHNIQUE INSIDE ╔├
  539.      1   1U╞ CAPACITOR  ╘O BYPASS THE 5VOLT SUPPLY FOR NOISE REJECTION.
  540.  
  541.      1   ╒SER PORT FEMALE CONNECTOR.  (╔ JUST DUG THIS UP, ╔'M NOT SURE 
  542.          WHERE THESE CAN BE FOUND, ╔ THINK IT IS 0.159" SPACING, 24PIN.
  543.  
  544.      1   ╥╙232 25PIN FEMALE CONNECTOR.  ├AN BE FOUND AT ╥-╙HACK
  545.         
  546.      ╙OME SORT OF .1" SPACING PROTO BOARD
  547.  
  548. ├ONNECTIONS:
  549. -----------
  550.  
  551.   ╒SER PORT CONNECTOR (╠OOKING INTO THE ├64 OR ├128)
  552.  
  553.          1  2  3  4  5  6  7  8  9 10 11 12
  554.         ------------------------------------
  555.         ▄╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪▄
  556.         ------------------------------------
  557.          ┴  ┬  ├  ─  ┼  ╞  ╚  ╩  ╦  ╠  ═  ╬
  558.  
  559. ╟ROUND & ╨OWER:
  560. --------------
  561.  
  562.   ╨INS 1, ┴, 12, ╬ TO ╟ROUND OF BOARD.
  563.   ╠╘1133 PIN 2 TO PIN 2 OF ╒SER PORT CONNECTOR (+5 VOLTS)
  564.   1U╞ CAPACITOR BETWEEN PIN2 AND GROUND (BYPASS CAP)
  565.   ╠╘1133 PIN 13 TO ╟ROUND.
  566.   ╥╙232 CONNECTOR PINS 7 & 1 TO ╟ROUND.
  567.  
  568. ╠╘1133 CAPACITORS:
  569.   1U╞ FROM PIN 1 (╓+) TO GROUND  (╔F POLARIZED (ELECTROLYTIC) + SIDE TO PIN 1)
  570.   1U╞ FROM PIN 24 (╓-) TO GROUND (┴S ABOVE BUT + SIDE TO GROUND)
  571.   1U╞ FROM PIN 3 (├1+) TO PIN 4 (├1-) (┴GAIN IF POLARIZED, + SIDE TO PIN 3)
  572.   1U╞ FROM PIN 22 (├2+) TO PIN 23 (├2-) (┴GAIN IF POLARIZED, + SIDE TO PIN 22)
  573.     
  574.  
  575.     ├OMMODORE SIDE                                       ╥╙232 SIDE
  576.   ╒SER PORT    ╙IGNAL    ╨IN OF       ╙IGNAL        ╨IN OF       ╥╙232
  577.   PIN          NAME      ╠╘1133      DIRECTION      ╠╘1133       CONNECTOR
  578.   ---------    ------    ------      ---------      ------       ---------
  579.    ┬  ╞╠┴╟2     ─IN        20         <--             6              3
  580.    ├   ╨┬0      ─IN     ALSO CONNECT TO ABOVE PIN 20
  581.    ─   ╨┬1      ╥╘╙        21             -->         5              4
  582.    ┼   ╨┬2      ─╘╥        19         <--             7              20
  583.    ╞   ╨┬3      ╥╔         18             -->         8              22
  584.    ╚   ╨┬4      ─├─        17             -->         9              8
  585.    ╩   ╨┬5      ╬OT USED
  586.    ╦   ╨┬6      ├╘╙        16             -->         10             5
  587.    ╠   ╨┬7      ─╙╥        14         <--             12             6
  588.    ═   ╨┴2      ─OUT       15             -->         11             2
  589.  
  590.  
  591. ╘HIS ASSUMES THAT YOU WANT TO CONNECT ALL OF THE COMMUNICATION LINES.  ╔ DID
  592. IT THIS WAY BECAUSE THE ├128 PROGRAMMERS REFERENCE GUIDE HAD ALL OF THE SIGNALS
  593. ABOVE LISTED.  ╔F YOU WANT TO DROP ╥╔ (RING INDICATOR) YOU COULD ALSO USE AN
  594. ╠╘1134 WHICH HAS 4 DRIVERS AND 4 RECEIVERS.
  595.  
  596. ╨ARTS ╙UBSTITUTION:
  597.  
  598.    ╘HERE ARE OTHER ╔├'S AVAILABLE WHICH WILL WORK IN THIS APPLICATION.
  599. ╘HE RS232 BUS LEVELS FOR THE ╠╘ PARTS ARE SPEC'ED AT ▐ +/- 7V TYPICAL, WHILE
  600. THE ═┴╪╔═ PARTS ARE +/-9V TYPICAL.  (┬OTH ARE MIN AT +/- 5V WHICH SHOULD WORK
  601. IN ALL APPLICATIONS).  ╔ THINK THAT AN INTERFACE CAN BE DONE WITH ONLY 3
  602. LINES, ─IN(╥X), ─OUT(╘X), AND EITHER ─╙╥ OR ├╘╙, SO IF YOU CAN'T GET THE
  603. ╠╘1133 ONE OF THESE OTHERS MIGHT WORK, ALTHOUGH THE PINOUTS WOULD BE DIFFERENT.
  604. ╘HE MAX YOU WOULD NEED IS WHAT THE ╠╘1133 SUPPLIES, 3 DRIVERS & 5 RECEIVERS.
  605.  
  606. ╚ERE IS A DESCRIPTION OF PARTS THAT MIGHT BE SUBSTITUTED:
  607. (╬OTE, WITH ALL OF THEM YOU SHOULD USE A BYPASS CAP ON THE +5V SUPPLY WHICH
  608.  ╔ HAVE ╬╧╘ INCLUDED IN THE COUNTS BELOW.)
  609.  
  610.                  ╥╙232     ╥╙232    # OF ┼╪╘┼╥╬┴╠
  611. ╬┴═┼     ╨╔╬╙   ─╥╔╓┼╥╙  ╥┼├┼╔╓┼╥╙       ├┴╨╙       ├╧══┼╬╘╙
  612. -------------------------------------------------------------------------
  613. ╠INEAR ╘ECHNOLOGY PARTS...
  614. (╧N THE PARTS WITH SHUTDOWN (╙─), THE PIN MUST BE TIED TO +5 TO OPERATE)
  615. ╠╘1133    24       3         5             4        ╔N ARTICLE ABOVE
  616. -------------------------------------------------------------------------
  617. ╠╘1130    28       5         5             4        ╧VERKILL (╙─P14)
  618. ╠╘1131    28       5         4             4        2 EX ─R, 1 < ╥CVR
  619. ╠╘1132    24       5         3             4        2 EX ─R, 2 < ╥CVR
  620. ╠╘1134    24       4         4             4        1 < ╥CVR
  621. ╠╘1136    28       4         5             4        1 EX ─R  (╙─P14)
  622. ╠╘1137    28       3         5             4        ╙─P13
  623. ╠╘1138    28       5         3             4        ╠╘1132 W/╙─P13
  624.  
  625. ═┴╪╔═ PARTS... (╙OME ALSO HAVE A ╘╘╠ ┼╬_ PIN THAT MUST BE TIED TO 0V TO OPERATE)
  626.                (╧N THESE PARTS, ╙─ MUST BE TIED TO 0V TO OPERATE!)
  627. ═┴╪232    16       2         2             4        ═AY WORK
  628. ═┴╪233    20       2         2             0!       ╬O EXTERNAL CAPS
  629. ═┴╪235    24       5         5             0!       ╧VERKILL, BUT ╬╧ CAPS,
  630.                                                     ╙─P21, ┼╬_P20
  631. ═┴╪236    24       4         3             4        1 EX ─R, 2 < ╥CVR,
  632.                                                     ╙─P21, ┼╬_P20
  633. ═┴╪237    24       5         3             4        2 EX ─╥, 2 < ╥CVR
  634. ═┴╪238    24       4         4             4        1 EX ─╥, 1 < ╥CVR
  635.  
  636.   ╔N SUMMARY, YOU CAN SEE THERE ARE MANY DIFFERENT PARTS YOU COULD USE,
  637. ESPECIALLY IF YOU DON'T NEED ALL THE SIGNALS.  ╘HE ═┴╪╔═ PARTS SEEM TO
  638. DO THE JOB IN FEWER PINS AND A LITTLE BETTER TYPICAL DRIVE SPEC AND ╔
  639. WOULD RECOMMEND THE ═┴╪235 OVERALL SINCE YOU ONLY NEED 1 BYPASS CAP TO
  640. MAKE IT OPERATE!
  641.  
  642. =============================================================================
  643. ╔NTRODUCTION TO THE ╓╔├-╔╔
  644. BY ╨ASI '┴LBERT' ╧JALA ( ... )
  645.  
  646. ╘HE ╓IDEO ╔NTERFACE ├ONTROLLER USED IN ├64 HAVE SEVERAL DIFFERENT OPERATING
  647. MODES AND DIFFERENT GRAPHICAL PRIMITIVES. ┬ASICALLY THERE IS A) CHARACTER
  648. MODE, B) BITMAP MODE AND C) MOVABLE OBJECTS THAT CAN BE MIXED WITH THE
  649. OTHER GRAPHICS. ╘HESE PRIMITIVES CAN ALSO BE PUT INTO A MORE COLORFUL MODE,
  650. BUT YOU LOSE HALF OF THE RESOLUTION IN THAT PROCESS.
  651.  
  652.  
  653. ╔. ╙TANDARD ├HARACTER ─ISPLAY ═ODE
  654.  
  655. ╔N THE CHARACTER DISPLAY MODE, ╓╔├ FETCHES CHARACTER POINTERS FROM VIDEO
  656. MATRIX, WHICH CONSISTS OF 1000 8-BIT BYTES FORMATTED AS 25 ROWS OF 40
  657. CHARACTERS EACH. ╘HE 8-BIT CHARACTER CODE IMPLIES 256 DIFFERENT CHARACTERS
  658. SIMULTANEOUSLY ONSCREEN.
  659.  
  660. ┼ACH CHARACTER CODE CAN HAVE AN UNIQUE IMAGE, WHICH CONSISTS OF 8 BYTES IN
  661. CHARACTER MEMORY. ╘HE POSITION OF THE CHARACTER MEMORY CAN BE MOVED WITH THE
  662. CHARACTER BASE POINTER AND THUS IT IS POSSIBLE TO HAVE SEVERAL CHARACTER SETS
  663. SIMULTANEOSLY IN MEMORY. ╧NE CHARACTER MEMORY IS 2048 BYTES.
  664.  
  665. ╔N ADDITION TO THE CHARACTER CODE, EACH POSITION IN VIDEO MATRIX HAS AN
  666. ASSOCIATED COLOR NYBBLE (4 BITS) IN COLOR MEMORY ($─800-$─╞╞╞). ╞OR EACH
  667. ZERO-BIT IN THE CHARSET THE BACKGROUND COLOR FROM REGISTER $21 IS DISPLAYED,
  668. THE COLOR-NYBBLE IS USED FOR THE ONE-BIT.
  669.  
  670.  
  671. ╔╔. ├HARACTER ═ULTICOLOR ═ODE
  672.  
  673. ╔N CHARACTER MULTICOLOR MODE, COLOR SELECTION IS INCREASED. ┼ACH BYTE IS
  674. FETCHED FROM THE CHARACTER MEMORY JUST LIKE IN THE STANDARD CHARACTER MODE,
  675. BUT THEY ARE INTERPRETED DIFFERENTLY. ╔N THIS MODE BYTES ARE DIVIDED INTO
  676. BIT-PAIRS. ╞OR BIT PAIR "00" THE BACKGROUND COLOR FROM REGISTER $21 IS
  677. DISPLAYED, BACKGROUND COLOR #1 IS USED FOR BIT PAIR "01" AND BACKGROUND
  678. COLOR #2 FOR BIT PAIR "10". ╘HE COLOR NYBBLE WILL DEFINE THE COLOR FOR BIT
  679. PAIR "11".
  680.  
  681. ╘HE HIGHEST BIT IN THE COLOR MEMORY DEFINES WHETHER THE CHARACTER IS TO BE
  682. DISPLAYED IN MULTICOLOR ("1") OR IN STANDARD MODE ("0"). ┬ECAUSE OF THIS,
  683. ONLY COLORS IN THE RANGE FROM 0 TO 7 ARE POSSIBLE FOR BIT PAIR "11". ┴ND SINCE
  684. TWO BITS ARE REQUIRED TO SPECIFY ONE DOT COLOR, THE CHARACTER IS NOW DISPLAYED
  685. AS A 4X8 MATRIX INSTEAD OF THE 8X8 MATRIX AND THE SIZE OF THE DOTS ARE DOUBLED
  686. HORIZONTALLY.
  687.  
  688.  
  689. ╔╔╔. ┼XTENDED ├OLOR ═ODE
  690.  
  691. ╘HE EXTENDED COLOR MODE ALLOWS THE SELECTION OF ONE BACKGROUND COLOR FROM FOUR
  692. POSSIBILITIES FOR EACH CHARACTER POSITION IN THE NORMAL 8X8 RESOLUTION. ╘HE
  693. CHARACTER IMAGE DATA IS PROCESSED LIKE IN STANDARD CHARACTER MODE, BUT THE
  694. TWO MOST SIGNIFICANT BITS IN THE CHARACTER CODE (VIDEO MATRIX) ARE USED TO
  695. SELECT THE RIGHT BACKGROUND COLOR REGISTER. ╧NLY CHARACTER IMAGES FROM 0 TO 63
  696. ARE ACCESSIBLE, BECAUSE TWO OF THE MOST SIGNIFICANT BITS ARE USED FOR THE
  697. BACKGROUND COLOR SELECTION.
  698.  
  699. ┼XTENDED COLOR MODE AND MULTICOLOR MODE SHOULD NOT BE SELECTED SIMULTANEOSLY,
  700. BECAUSE THIS WILL RESULT A BLACK SCREEN. ╚OWEVER, THIS IS A VERY EASY WAY TO
  701. HIDE SOMETHING IF NEEDED.
  702.  
  703.  
  704. ╔╓. ╙TANDARD ┬IT ═AP ═ODE
  705.  
  706. ╔N BIT MAP MODE, A ONE-TO-ONE CORRESPONDENCE EXISTS BETWEEN EACH DISPLAYED
  707. DOT AND A MEMORY BIT. ╘HE BIT MAP PROVIDES A RESOLUTION OF 320╚ X 200╓
  708. INDIVIDUALLY CONTROLLED PIXELS. ╘HE VIDEO MATRIX IS STILL ACCESSED AS IN
  709. CHARACTER MODE, BUT THE DATA IS INTERPRETED AS COLOR DATA. ╫HEN A BIT IS "0"
  710. IN THE BIT MAP DATA, THE COLOR FROM THE LOWER NYBBLE IS SELECTED. ╘HE
  711. HIGHER NYBBLE FROM THE VIDEO MATRIX IS USED FOR THE BIT "1".
  712.  
  713.  
  714. ╓. ═ULTICOLOR ┬IT ═AP ═ODE
  715.  
  716. ╔N MULTICOLOR BIT MAP MODE TWO BITS IN THE BIT MAP MEMORY DETERMINE THE COLOR
  717. OF ONE PIXEL. ╔F THE BIT PAIR IS "11", THE COLOR FOUND FROM THE COLOR MEMORY
  718. IS USED. ╘HE BACKGROUND COLOR IS USED FOR BIT PAIR "00" AND THE VIDEO MATRIX
  719. DEFINES THE COLORS FOR BIT PAIRS "01" AND "10". ┴S IT TAKES TWO BITS TO DEFINE
  720. ONE PIXEL COLOR, THE HORIZAONTAL RESOLUTION IS HALVED TO 160╚ X 200╓.
  721.  
  722.  
  723. ╓╔. ═OVABLE ╧BJECT ┬LOCKS (═╧┬S)
  724.  
  725. ╘HE MOVABLE OBJECT BLOCK IS A SPECIAL TYPE OF GRAPHICAL OBJECT WHICH CAN BE
  726. DISPLAYED INDEPENDENTLY FROM THE OTHER GRAPHICS. ┼ACH ONE OF THE ═╧┬S CAN
  727. BE MOVED INDEPENDENTLY ANYWHERE IN THE SCREEN. ┼IGHT UNIQUE ═╧┬S CAN BE
  728. DISPLAYED SIMULATANIOUSLY, EACH DEFINED BY 64 BYTES IN MEMORY WHICH ARE
  729. DISPLAYED AS A 24 X 21 PIXEL ARRAY.
  730.  
  731. ┼ACH ═╧┬ CAN BE SELECTIVELY ENABLED (═N┼="1") OR DISABLED (═N┼="0"). ┴ ═╧┬
  732. IS POSITIONED VIA ITS ╪ AND ┘ POSITION REGISTERS. ╬INE BITS ARE NEEDED TO
  733. DEFINE THE VERTICAL POSITION AND THE MOST SIGNIFICANT BITS OF ALL ═╧┬S ARE
  734. STORED IN THE REGISTER $10. ┴S ╪ LOCATIONS 23 TO 347 AND ┘ LOCATIONS 50 TO
  735. 249 ARE ENTIRELY VISIBLE ON THE SCREEN, ═╧┬S CAN BE SMOOTHLY MOVED TO AN
  736. OFF-SCREEN POSITION.
  737.  
  738. ┼ACH ═╧┬ HAS ITS OWN COLOR REGISTER AND A ═╧┬ CAN BE DISPLAYED EITHER IN
  739. STANDARD OR MULTICOLOR MODE (═N═├="1"). ┴S USUALLY, MULTICOLOR MODE GIVES
  740. MORE COLORS, BUT HALVES THE HORIZONTAL RESOLUTION. ╔N MULTICOLOR MODE BIT
  741. PAIR "00" IS TRANSPARENT, THE ═╧┬ COLOR REGISTER DEFINES THE COLOR FOR PAIR
  742. "10", AND ═╧┬ MULTICOLOR REGISTERS GIVE THE COLORS FOR PAIRS "01" AND "11".
  743.  
  744. ═╧┬S CAN BE SELECTIVELY EXPANDED IN BOTH DIRECTIONS. ╫HEN ═╧┬ IS EXPANDED,
  745. THE PIXEL SIZE ALSO EXPANDS AND IT IS STILL DISPLAYED AS 24 X 21 MATRIX
  746. (12 X 21 IN MULTICOLOR MODE).
  747.  
  748. ═╧┬ PRIORITIES DEFINE WHETHER A ═╧┬ APPEARS BEHIND OR ON TOP OF THE CHARACTER
  749. OR BIT MAP GRAPHICS. ┴ "1" IN ═N─╨ MEANS ═╧┬ IS DISPLAYED BEHIND. ═╧┬
  750. COLLISION REGISTERS MAY BE USED TO DETECT IF A NON-TRANSPARENT DATA OF TWO
  751. ═╧┬S OR A ═╧┬ AND CHARACTER OR BITMAP FOREGROUND DATA IS COLLIDING.
  752.  
  753. [┼D'S ╬OTE: ═╧┬'S ARE ╙PRITES. ├OMMODORE INITIALLY REFERRED TO THEM AS ═╧┬'S
  754. AND STILL DOES IN SOME AREAS.]
  755.  
  756.  
  757. ╓╔╔. ╧THER FEATURES
  758.  
  759. ╘HE DISPLAY SCREEN MAY BE BLANKED BY SETTING THE ─┼╬ BIT TO A "0". ╘HE ENTIRE
  760. SCREEN WILL BE FILLED WITH THE BORDER COLOR AS SET IN REGISTER 32 ($20).
  761. ╫HEN THE SCREEN IS BLANKED, ╓╔├ WILL NEED ONLY TRANSPARENT MEMORY CYCLES AND
  762. THE PROCESSOR IS NOT SLOWED DOWN. ╚OWEVER, ═╧┬ DATA IS STILL FETCHED, IF
  763. THE ═╧┬S ARE NOT ALSO DISABLED.
  764.  
  765. ╘HE NORMAL DISPLAY CONSISTS OF 25 ROWS OF 40 CHARACTERS EACH. ╘HE DISPLAY
  766. WINDOW CAN BE REDUCED TO 24 ROWS AND 38 CHARACTERS. ╘HIS HAS NO EFFECT ON HOW
  767. THE DATA IS INTERPRETED, ONLY THE CHARACTERS NEXT TO THE BORDER ARE COVERED
  768. BY THE BORDER. ╥╙┼╠ CONTROLS THE NUMBER OF ROWS ("1" FOR 25 ROWS) AND ├╙┼╠
  769. CONTROLS THE NUMBER OF COLUMNS ("1" FOR 40 COLUMNS).
  770.  
  771. ╘HE DISPLAY DATA MAY BE SCROLLED UP TO ONE CHARACTER SPACE IN BOTH VERTICAL
  772. AND HORIZONTAL DIRECTION. ╨OSITION OF THE SCREEN IS SET WITH THE 3 LOWEST
  773. ORDER (LEAST SIGNIFICANT) BITS IN REGISTERS 22 ($16) AND 17 ($11).
  774.  
  775. ╠IGHT PEN LATCH IS USED TO CATCH THE POSITION OF THE LIGHT PEN WHEN A PULSE
  776. IS RECEIVED IN THE ╠╨ PIN. ╘HE VALUE IS LATCHED ONLY ONCE IN A FRAME.
  777.  
  778. ╘HE RASTER REGISTER IS A DUAL-FUNCTION REGISTER. ┴ READ FROM THE RASTER
  779. REGISTER RETURNS THE CURRENT RASTER POSITION AND A WRITE TO IT WILL SET THE
  780. RASTER COMPARE VALUE. ╫HEN THE WRITTEN VALUE AND THE CURRENT RASTER LINE
  781.