home *** CD-ROM | disk | FTP | other *** search
- ╘ITLE ╙CREEN ┬ACK╟ROUND
- -----------------------
- ╘HE TITLE SCREEN ╔ ENVISONED AS A BORDERED SCREEN (USING THE NORMAL ├=
- CHARACTER SET - IE: ├= ┴,╙,┌,╪ ON THE KEYBOARD) WITH OUR BITMAP IN THE MIDDLE
- AND UNDER-NEATH IT A SHORT DESCRIPTION OF THE GAME AND GAME-PLAY INSTRUCTIONS.
-
- ╬OW THIS IS MY IDEA OF THE SCREEN LAYOUT (ROUGH DRAWING AS WE'RE NOT USING
- THE ACTUAL SCREEN DIMENSIONS):
-
- +-------------------------------------------------------------+
- ▄ -╠╧╟╧ ----------------------------------------------------- ▄
- ▄ --------------X 3 LINES------------------------------------ ▄
- ▄ ----------------------------------------------------------- ▄
- ▄ ▄
- ▄ ╙PACE ╔NVASION ├64/128 ▄
- ▄ ╨ROGRAMMING : ├RAIG ╘AYLOR ▄
- ▄ ╟RAPHICS : ╨ASI ╧JALA ▄
- ▄ ╙OUND : ???????????? ▄
- ▄ ▄
- ▄ ----------------------------------------------------------- ▄
- ▄ ╘O ╨LAY: ▄
- ▄ ╒SE JOYSTICK IN PORT 2, MOUSE IN PORT 1 OR KEYBOARD: ▄
- ▄ ┴ - ╠EFT, ┌ - ╥IGHT ╙PACE - ╞IRE ▄
- ▄ ╞1 - ╥ESTART ▄
- ▄ ▄
- +-------------------------------------------------------------+
-
- ╘ITLE ╙CREEN ╞ORMATTING
- -----------------------
- ╫E COME INTO A PROBLEM HERE -- THE SCREEN IS SOME 1000 CHARACTERS ON THE ├64,
- AND 2000 CHARACTERS FOR THE ├=128. ╔T WOULD BE EXTREMELY WASTEFUL TO STORE
- THAT MANY CHARACTERS IN MEMORY JUST TO REPRODUCE A TITLE SCREEN - AND MOST OF
- THEM CONSISTING OF SPACES AT THAT!!
-
- ╫HAT WE'LL DO IS TO JUST SPECIFY THE ADDRESS ON SCREEN, THE # OF CHARACTERS
- AND THEN LIST THE CHARACTERS. ╔T WILL BE SIMILAIR TO OUR CUSTOM CHARACTER
- TABLE DRIVER ABOVE BUT WILL BE DIFFERENT ENOUGH THAT A NEW ROUTINE IS
- WARRENTED. ╫E WILL HOWEVER USE THE TWO SUBROUTINES WRITEBYTE AND SETADRS
- THAT WERE DEVELOPED IN THE PREVIOUS ROUTINE. ╘HE DATA WILL LOOK LIKE THE
- FOLLOWING:
-
- .WORD ADDRESS
- .BYTE NUM_OF_CHARS ($00= END OF DATA)
- .ASCII "TEXT"
- .BYTE ADDRESS .... ETC....
-
- AND WE'LL ENTER WITH .┴┘ CONTAINING THE ADDRESS OF THE TABLE.
-
- ╙O BASICALLY WE COME UP WITH THE FOLLOWING:
-
- -------------------------------------------------------------------------------
- WRITE'TXT = *
- STA ZP1 ; SAVE .AY IN TABLE ADDRESS
- STY ZP1+1
- LDY #$00
- LOOP'W'TEXT = *
- JSR GET'BYTE ; SET ADDRESS.
- STA WRK
- JSR GET'BYTE
- STA WRK+1
- JSR GET'BYTE ; GET # OF CHARS TO WRITE OUT.
- CMP #$00
- BEQ + ; IF ZERO THEN EXIT.
- TAX
- JSR SETADRS ; SET ADDRESS TO WRK,WRK+1
- - JSR GET'BYTE
- JSR WRITEBYTE ; WRITE OUT BYTE.
- DEX
- BNE -
- SEC
- BCS LOOP'W'TEXT ; THIS IS AN ABSOLUTE JUMP TO LOOP
- + RTS ; RETURN.
-
- -------------------------------------------------------------------------------
-
- ╘HIS IS SIMILAIR TO OUR PREVIOUS ROUTINE, AND WAS IN FACT COPIED AND MODIFIED
- FROM THE PREVIOUS ROUTINE.
-
-
- ╓╔╔╔. ─EBUGGING
- ---------
-
- ╬OW, NOT ALL PROGRAMS ARE PERFECT, AND DURING THE DEVELOPMENT OF THIS
- PORTION OF THE GAME THERE WERE SEVERAL ERRORS FOUND. ╘RACING AN ERROR IN
- ═ACHINE/┴SSEMBLY-╠ANGUAGE IS LIKE TRYING TO FIND A GRAMMATICAL ERROR IN A
- LANGUAGE YOU DON'T KNOW. ;-) ┬UT SERIOUSLY, THERE ARE SEVERAL WAYS TO TRACK
- DOWN ERRORS IN YOUR CODE.
-
- 1 - ╘RY TRACING IT THROUGH BY HAND PLAYING "╫HAT IF ╔ WERE THE COMPUTER" AND
- FOLLOWING WHAT EACH REGISTER DOES.
-
- 2 - ┴RE YOU SWITCHING THE ╠O╚I ORDER OF VARIABLES? ╔E: IS IT LDA #< OR
- LDA #>??
-
- 3 - ╙ET ┬╥╦ POINTS AND RUN THE PROGRAM / SUBROUTINE WITHIN A MACHINE LANGUAGE
- MONITOR AND MAKE SURE THE REGISTERS / MEMORY LOCATIONS CONTAIN THE VALUES
- THAT THEY SHOULD. ╔F NOT, FIND OUT WHY.
-
- 4 - ╘RY TO SIMPLIFY YOUR CODE IN TERMS OF PROGRAMMING EASE - ═AKE THE
- ASSEMBLER DO THE WORK FOR YOU - IT'S A LOT LESS LIKELY TO MAKE ERRORS
- THAN YOU ARE.
-
- 5 - ╘HINK LOGICALLY!!!
-
- 6 - ├HANGE SOMETHING AT RANDOM AND PRAY.
-
- ╔ CAN'T STRESS NUMBERS 3 AND 5 ENOUGH. ─URING THE WRITING OF THE INSTALL'CHAR
- ROUTINE THERE WERE NUMEROUS BUGS THAT WERE EVENTUALLY TRACKED DOWN BY
- SETTING A ┬╥╦ INSTRUCTION FURTHER ALONG IN THE CODE AND SEEING EXACTLY WHAT
- THE REGISTER / MEMORY LOCATIONS WERE. ┴LSO THE USE OF TEMPORARY LOAD AND
- STORE INSTRUCTIONS INTO "SAFE" REGIONS OF MEMORY HELPED ME MONITOR WHAT SOME
- OF THE VALUES WERE.
-
- ╞OR EXAMPLE, AT ONE POINT ╔ HAD A SECTION OF CODE SIMILAIR TO THE FOLLOWING:
-
- CLC
- LDA VALUE
- ADC DATA
- BNE +
- INC DATA+1
- + [.... ]
-
- ┴ND IT'S PURPOSE WAS TO ADD VALUE TO DATA. ╬OW ╔'VE FOUND SIMPLE ERRORS ARE
- USUALLY FOUND LAST, AFTER COMPLEX ERRORS. ┴ND NOT UNTIL A SET A BREAK POINT
- LIKE:
-
- CLC
- LDA VALUE
- ADC DATA <-----═ISSING ╔NSTRUCTION AFTER HERE-------------+
- BNE + ▄
- INC DATA+1 ▄
- + ┬╥╦ ▄
- [.... ] ▄
- ▄
- DID ╔ ACTUALLY FIGURE OUT THAT ╔ WAS MISSING THE ╙╘┴ ─┴╘┴ INSTRUCTION --+
-
- ╙O, WHEN WRITING, MODIFYING, AND TRYING TO DEBUG CODE TRY TO TAKE YOUR TIME
- AND ISOLATE EVERY POSSIBLE PROBLEM. ┴LSO DON'T BE AFRAID TO STOP THE CODE
- MID-STREAM AS IN THE ABOVE WITH USE OF THE ┬╥╦. ┘OU CAN ALWAYS REMOVE IT
- (AND PROBAHLY SHOULD) IN THE FINAL CODE AND IT SERVES AS A VERY VALUABLE
- DEBUGGING TOOL WITH THE AID OF A MACHINE-LANGUAGE MONITOR.
-
-
- ╔╪. ═EMORY ═AP ├ONSIDERATIONS
- -------------------------
-
- ┬EFORE YOU START A PROGRAM IT'S A GOOD IDEA TO CONSIDER WHERE IN MEMORY YOU
- WILL HAVE EVERYTHING. ╬OW WE'VE ALREADY STARTED SOME OF THE PROGRAM ABOVE
- AND JUST BLINDLY PICKED NUMBERS AT RANDOM IT SEEMED LIKE $3000 FOR THE
- CHARACTER SET FOR THE ├=64 ETC... ╫E DIDN'T - ╔'M INTRODUCING THE ═EMORY
- ═AP ├ONSIDERATIONS HERE TO SHOW THE EXAMPLE OF WHAT IF WE DIDN'T THINK
- ABOUT HOW MEMORY WAS GOING TO BE ORGANIZED.
-
- ╘HE ├=64 ONLY HAS 64K OF MEMORY OF WHICH TYPICALLY THE RANGE $0800-$A000
- IS AVAILABLE AND $C000-$CFFF IS ALSO. ╔F WE HAD BLINDLY PICKED NUMBERS
- ALL OVER THE PLACE TO STORE OUR CODE THEN WE WOULD HAVE A DISORGANIZED
- PROGRAM THAT WOULD MOST LIKELY ACCIDENTALLY USE ONE SUBROUTINES STORAGE
- AS TEMPORARY DATA FOR ANOTHER. ╔T'S LIKE SHOOTING RANDOMLY IN ╠ASER ╘AG
- NOT CHECKING TO SEE IF THERE IS A TARGET THERE OR NOT FIRST... ╘HE END
- RESULT: ├HAOS.
-
- ├URRENTLY WE'RE NOT FOLLOWING THE RULE FOR "TEMPORARY VARIABLES" BUT AS
- WE GRADUALLY FADE OUT OF THE NORMAL ├-64/128 DEFAULT MODE AND WRITE OUR
- OWN ROUTINES / INTERRUPT HANDLERS WE'LL SWITCH THINGS OVER. ┴LSO, ON THE
- ├=128 INSTEAD OF USING ┬ANK 0 WITH THE ╔/╧ BLOCK ENABLED WE'RE CURRENTLY
- USING THE ┬┴╬╦ 15 CONFIGURATION AS THE PROGRAM DOESN'T EXTEND PAST $4000
- YET ($0000-$4000 IS COMMON MEMORY IN THE NORMAL ├=128 CONFIGUARTION).
-
- 64 ├ONSIDERATIONS
- -----------------
- ╘HE 64 WILL HAVE FREE MEMORY IN THE FOLLOWING AREAS: $0800-$A000, AND
- $C000-$CFFF. ╚OWEVER, IF WE DISABLE THE ┬ASIC ╥OM WE CAN HAVE THE WHOLE
- AREA FROM $0800-$CFFF FREE FOR OUR PROGRAM. ┬ECAUSE WE DON'T NEED THE
- ┬ASIC ╥OM WE WILL DO JUST THAT (IN THE LISTING NOW WE CURRENTLY WON'T BUT
- IT WILL BE DONE IN A FUTURE ISSUE). ╘HEREFORE HAVING THE CHARACTER SET
- AT $3000-$5000, THE MUSIC DATA AT $5000-$8000, THE PROGRAM WILL HAVE THE
- AREA FREE FROM $8000-$CFFF. $0800-$3000 WILL BE AVAILABLE IF NEEDED FOR
- ROUTINES WHO NEED TEMPORARY STORAGE.
-
- ╘EMPORARY ╙TORAGE IS GOING TO BE DEFINED AS FOLLOWS. ┼ACH ROUTINE THAT NEEDS
- TEMPORARY STORAGE WILL BE ASSIGNED A "LEVEL" NUMBER. ╘HE LOWER LEVELS WILL
- BE ASSIGNED LEVEL 1 ON UP TO LEVEL 3. ╘HE RANGE $0800-$3000 WILL BE
- BROKEN DOWN INTO THE FOLLOWING SUB-RANGES.
-
- ╠EVEL 1: $0800-$1000
- ╠EVEL 2: $1000-$1800
- ╠EVEL 3: $1800-$3000
-
- ╘HIS WAY WHEN WRITING THE SUB-ROUTINES WE CAN BE ASSURED THAT A SECTION OF
- MEMORY IS NOT OVERWRITTEN BY A SUBROUTINE WE CALL. ╫HEN WE ACTUALLY START
- PROGRAMMING WE'LL DECIDE WHERE IN EACH SUB-RANGE THE ROUTINE WILL HAVE
- ACCESS TO.
-
- 128 ├ONSIDERATIONS
- ------------------
- ╘HE 128 HAS TWO "BANKS" OF 64K EACH. ╬ORMALLY FOR LARGE PROGRAMS WE WOULD
- THINK ABOUT USING BOTH BANKS - (FROM THE IDEA: ╚EY! - ╫E GOT IT, WHY NOT
- FLAUNT IT?) BUT WE WON'T BE USING BOTH BANKS.
-
- ╞REE MEMORY ON THE ├128 TYPICALLY CONSISTS OF THE RANGE $0400-$09FF
- (WHERE WE'LL BE OVERWRITING THE 40 COLUMN SCREEN (WHICH WE'RE GONNA BLANK
- ANYWAY) AND THE ┬ASIC RUN-TIME STACK.) ┴LSO THE AREA FROM $0B00-$0FFF
- IS FREE (OVERWRITING THE TAPE AREA, THE RS-232 BUFFERS,L AND THE SPRITE
- DEFINITION AREA). ┴LSO $1300-$CFFF WILL BE FREE.
-
- ╬OW, THE ├=128 HAS DIFFERENT MEMORY MAPS IT CAN CONFIGURE ITSELF TO -
- ┬ANK 15 IS THE STANDARD MODE UNDER MOST BASIC PROGRAMS AND ALLOWS THE
- PROGRAMMER TO DIRECTLY "SYS" TO CALLS. ╘HE ══╒ (MEMORY MANAGEMENT UNIT -
- THE CHIP THAT DOES EVERYTHING) SEES MEMORY IN A SLIGHTLY DIFFERANT WAY
- THAN FROM BASIC. ╫E'LL COVER IT IN MORE DETAIL WHEN WE EXAMINE THE MEM_INIT
- ROUTINE. ╞OR NOW, WE'RE JUST GONNA SET UP IN THE PROGRAM AND NOT IN THE
- CODING SEGMENTS. ╘HE EXPLANATION OF WHAT WE'RE DOING WILL BE "REVEALED"
- IN A FUTURE ISSUE.
-
- ╫E WILL USE ┬ANK 0 OF MEMORY AND FROM $1300+ WILL BE THE PROGRAM. ╘HE RANGES
- OF $0400-$09FF AND $0B00-$0FFF WILL BE USED IN A SIMILAIR MANNAR AS THE ├64
- RANGES WERE FOR ╘EMPORARY ╙TORAGE. ╫E WILL ALSO HAVE THE ╔/╧ SECTION FROM
- $D000-$DFFF SWAPPED IN. ╘HIS IS NOT A STANDARD "BASIC ┬┴╬╦ #" BUT WHEN WE
- COVER THE INIT'MEMORY ROUTINE WE'LL SEE HOW WE CAN DO THIS. ═USIC DATA
- WILL BE FROM $A000-$D000.
-
-
- ╪. ╠OOKING ╞ORWARD / ┬ACK
- ----------------------
-
- ╚OPEFULLY THROUGH THE LISTING AND THE DISCUSSION OF THE ROUTINES YOU HAVE
- STARTED TO UNDERSTAND THE BASIC CONCEPT OF PROGRAMMING: BREAKING DOWN PROBLEMS
- INTO SMALLER SOLVABLE STEPS. ╘RY LOOKING BACK OVER THE CODE ASKING YOURSELF
- WHY THAT INSTRUCTION IS THERE. ╫HAT WOULD HAPPEN IF YOU SWITCHED THE ORDER?
- ╔S THERE AN EASIER, BETTER WAY TO DO THE SAME THING? ╫HY? ┬ETTER YET, HOW?
- ┼XAMINE THE CODE, MESS WITH IT, MUCK IT UP SO IT DOESN'T WORK AND THEN FIGURE
- OUT EXACTLY WHY. ╘HE ONLY WAY TO LEARN IS BY EXPERIMENTATION. (┬╘╫, MUCK UP
- A _COPY_ OF IT - NOT THE ORIGINAL ... *GRINS*)
-
- ╘AKE A LOOK AT THE DIFFERENT SECTIONS OF CODE AND ANALYZE THEM TO SEE HOW
- THEY DO WHAT THEY DO. ╘AKE A LOOK AT HOW THE CODE WAS ORGANIZED IN TERMS
- OF SIMPLIFICATION. ╘RACE THROUGH EACH SUBROUTINE SO THAT YOU'RE ABLE TO
- KNOW WHAT THE RETURN VALUES WILL BE. ╔N OTHER WORDS: ╙TUDY, ╙TUDY, ╙TUDY!!
- ╔'M IN SCHOOL AND SO ╔ KNOW ╔ JUST USED THE DREADED '╙' WORD BUT THAT'S
- WHAT YOU'RE GOING TO HAVE TO DO IF YOU'RE INTERESTED IN LEARNING 65XX/85XX
- MACHINE LANGUAGE. ╘HE ONLY WAY TO LEARN IT (EASILY) IS TO STUDY OTHER
- PEOPLE'S CODE AND TRY TO UNDERSTAND WHY THEY DID WHAT THEY DID.
-
- ╬EXT TIME WE WILL TAKE A LOOK AT THE INPUT ROUTINES FOR THE MOUSE, JOYSTICK
- AND KEYBOARD SCANNING. ╔N ADDITION WE WILL ALSO ALLOW THE PLAYER TO MOVE
- THE SHIP AROUND ON THE SCREEN TO TEST THE INPUT DRIVERS.
-
- ╔N ADDATION, ╔ AM STILL LOOKING FOR AN INDIVIDUAL TO HELP WITH MUSIC AND
- SOUND COMPOSITION FOR THIS PROGRAM. ┴ KNOWLEDGE OF THE ╙╔─ CHIP AND
- PROGRAMMING IS HELPFUL BUT NOT REQUIRED. ╔F YOU'RE WILLING TO HELP THEN
- PLEASE EMAIL ME AT DUCK@PEMBVAX1.PEMBROKE.EDU
-
-
- ╪╔. ╠ISTINGS
- --------
-
- ┬ECAUSE OF THE ENORMITY OF THE PROGRAM LISTING (SOME 1,500+ LINES) IT WILL
- NOT BE LISTED IN THIS ARTICLE BUT WILL INSTEAD BE AVAILABLE VIA ANONYMOUS
- FTP AT CCOSUN.CALTECH.EDU UNDER PUB/RKNOP/╚┴├╦╔╬╟.═┴╟ AS INVAS1.SFX.
-
- ╞OR THOSE OF YOU ON THE MAILING LIST WHO WOULD LIKE TO RECIEVE IT, A ═AIL-
- ╙ERVER WILL BE SET UP SOON TO HANDLE REQUESTS AND INFORMATION WILL BE
- SENT TO YOU CONCERNING INFORMATION ABOUT USING IT AS SOON AS IT'S COMPLETED.
-
- ╔N THE INVASION1.SFX FILE THERE ARE THE FOLLOWING FILES:
-
- INVASION.SRC - THE MAIN FILE
- GRAPHICS.SRC - HANDLES ALL GRAPHICS ROUTINES
- LOGO.DAT - CUSTOM CHARACTER LOGO
- CHARS64.DAT - ALIEN CUSTOM CHARACTERS FOR ├=64
- CHARS128.DAT - ALIEN CUSTOM CHARACTERS FOR ├=128
- TITLETXT.DAT - TEXT DATA FOR TITLE SCREEN
- TITLECOL.DAT - COLOR DATA FOR TITLE SCREEN
- INVASION-128 - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=128
- INVASION-64 - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=64
-
- ╬OTE: ╞OR THE ├OMMODORE 128 IT'S RECOMMENDED THAT YOU DO A RUN/STOP-RESTORE
- AND THEN A "┬┴╬╦15:╙┘╙7168" TO EXECUTE THE PROGRAM. ╞OR THE ├OMMODORE 64 IT'S
- RECOMMENDED THE BORDER BE CHANGED VIA: "╨╧╦┼53280,0:╨╧╦┼53281,0:╙┘╙ 32768" TO
- RUN THE PROGRAM.
-
- ==============================================================================
- ╘HE ─EMO ├ORNER:
-
- ╞╠╔ - MORE COLOR TO THE SCREEN
- BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI OR ALBERT@CC.TUT.FI)
- ╫RITTEN ON 16-═AY-91 ╘RANSLATION 01-╩UN-92
-
- (┴LL TIMINGS ARE IN ╨┴╠, ALTHO THE PRINCIPLES WILL APPLY TO ╬╘╙├ TOO)
-
- ┴LL OF US HAVE HEARD COMPLAINTS ABOUT THE COLOR CONSTRAINTS ON ├64. ╧NE 8X8
- PIXEL CHARACTER POSITION MAY ONLY CARRY FOUR DIFFERENT COLORS. ╞╠╔ PICTURE
- CAN HAVE ALL OF THE 16 COLORS IN ONE CHAR POSITION. ╫HAT THEN IS THIS ╞╠╔
- AND HOW IT IS DONE ?
-
- ╔N THE NORMAL MULTICOLOR MODE CAN ONE CHARACTER POSITION (4X8 PIXELS) HAVE
- ONLY FOUR DIFFERENT COLORS AND ONE OF THEM IS THE COMMON BACKGROUND COLOR.
- ├OLOR CODES ARE STORED IN HALF BYTES (NYBBLES) TO THE VIDEO MATRIX MEMORY
- (ANYWHERE VIDEO MATRIX POINTER POINTS AT, NORMALLY $0400) AND TO THE COLOR
- MEMORY ($─800-$─┬╞╞). ╔N MULTICOLOR MODE THE COLOR OF EACH PIXEL IS
- DETERMINED BY TWO BITS IN THE GRAPHICS MEMORY. ┬IT PAIR 11 WILL REFER TO
- COLOR MEMORY, BACKGROUND COLOR IS THE COLOR FOR BIT PAIR 00, AND VIDEO
- MATRIX WILL DEFINE THE COLORS FOR BIT PAIRS 01 AND 10.
-
-
- _╫HAT HAPPENS IN THE ╓╔├ ?_
-
- ╓╔├ (╓IDEO ╔NTERFACE ├ONTROLLER) FETCHES COLOR INFORMATION FROM MEMORY ON
- EACH BAD LINE. ╘HIS WILL STEAL TIME FROM PROCESSOR, BECAUSE ╓╔├ NEEDS TO USE
- PROCESSOR'S BUS CYCLES. ┬AD LINE IS A CURSE IN THE ├64 WORLD. ╞ORTUNATELY
- ╓╔├'S DATA BUS IS 12 BITS WIDE AND SO THE COLOR DATA FETCH FOR EACH CHARACTER
- POSITION WILL TAKE ONLY ONE BUS CYCLE. ├OLOR MEMORY IS PHYSICALLY WIRED TO
- THE ╓╔├ DATABUS LINES ─8-─11.
-
- ╚OW DOES ╓╔├ KNOW WHERE TO FETCH THE GRAPHICAL INFORMATION ? ╙OME OF YOU KNOW
- THE MYSTICAL FORMULAS NEEDED TO MESS WITH THE PIXELS IN THE HIRES SCREEN.
- ╚OW ARE THESE FUNCTIONS OBTAINED ? ┴RE THEY JUST MAGIC ? ╬O, THERE ARE SOME
- INTERNAL COUNTERS IN ╓╔├. ╘HEY ALWAYS POINT TO THE RIGHT PLACE IN GRAFIX
- MEMORY AND THE ADDRESS IS DETERMINED LIKE THIS:
-
- ┴13 ┴12 ┴11 ┴10 ┴9 ┴8 ┴7 ┴6 ┴5 ┴4 ┴3 ┴2 ┴1 ┴0
- ├┬13 ╓├9 ╓├8 ╓├7 ╓├6 ╓├5 ╓├4 ╓├3 ╓├2 ╓├1 ╓├0 ╥├2 ╥├1 ╥├0
-
- ┴DDRESS BITS ┴15 AND ┴14 CHANGE ACCORDING TO THE SELECTED VIDEO BANK.
- ┴DDRESS BIT ┴13 IS ├┬13, WHICH MAY BE FOUND IN ╓╔├ REGISTER $18. ╔T
- SELECTS THE RIGHT SIDE OF THE VIDEO BANK TO BE THE BITMAP MEMORY. ╫ITH
- THESE BITS YOU CAN SET THE BITMAP TO EIGHT DIFFERENT PLACES IN MEMORY.
- ╚OWEVER, SOME OF THEM ARE USELESS BECAUSE OF THE CHARACTER ╥╧═ IMAGES AND
- ZERO PAGE/STACK. ╥EST OF THE BITS COME FROM THE INTERNAL COUNTERS.
-
- ╓├9-╓├0 (╓IDEO ├OUNTER) FORMS THE ADDRESS BITS 12-3. ╘HE COUNTER ROLLS
- THROUGH ALL 1000 CHARACTER POSITIONS, 0-39 ON THE FIRST EIGHT LINES, 40-79
- ON THE SECOND EIGHT LINES AND SO ON. ╘HE LOWEST THREE BITS COME FROM THE ROW
- COUNTER, ╥├2-╥├0. ╘HIS IS ANOTHER ╓╔├ COUNTER AND IT COUNTS THE SCAN LINES
- FROM ZERO TO SEVEN.
-
-
- _┴ SOFTWARE GRAPHICS MODE - ╞╠╔_
-
- ╓╔├ WILL SYSTEMATICALLY GO THROUGH EVERY BYTE IN THE BITMAP MEMORY, BUT HOW
- DOES IT KNOW WHERE AND WHEN TO GET THE COLOR INFORMATION ? ╘HIS IS WHERE
- THE MAIN PRINCIPLE OF ╞╠╔ (╞LEXIBLE ╠INE ╔NTERPRETATION) LIES. ├OLOR DATA
- IS FETCHED (AND THIS MEANS IT IS A BAD LINE), WHEN THE LINE COUNTER MATCHES
- WITH THE VERTICAL SCROLL REGISTER. ╓├9-╓├0 DEFINES WHERE THE COLOR DATA IS
- INSIDE THE VIDEO MATRIX AND COLOR MEMORY.
-
- ╔F WE CHANGE THE VERTICAL SCROLL REGISTER, WE CAN FOOL ╓╔├ TO THINK THAT
- EVERY LINE IS A BAD LINE, SO IT WILL FETCH THE COLOR INFORMATION ON EVERY
- LINE TOO. ┬ECAUSE ╓╔├ WILL FETCH THE COLORS CONTINUOSLY, WE CAN GET
- INDEPENDENT COLORS ON EACH SCAN LINE. ╫E JUST HAVE TO CHANGE COLORS AND ╓╔├
- WILL HANDLE THE REST. ╒NFORTUNATELY THE RESULT IS THE LOSS OF 40 PROCESSOR
- CYCLES PER LINE (SEE THE ═ISSING ├YCLES ARTICLE FOR MORE INFORMATION ABOUT
- ╓╔├ STEALING CYCLES).
-
-
- _─OING IT IN PRACTICE_
-
- ╔N PRACTICE THERE IS NO TIME TO CHANGE COLOR MEMORY, BUT IN MULTICOLOR
- MODE ╓╔├ USES VIDEO MATRIX FOR COLOR INFORMATION TOO. ╫E HAVE JUST ENOUGH
- TIME TO CHANGE THE VIDEO MATRIX POINTER, $─018. ╬OW ╓╔├ WILL SEE A
- DIFFERENT VIDEO MATRIX ON EACH SCAN LINE, DIFFERENT BLOCK OF MEMORY. ╫ITH
- THE FOUR UPPER BITS IN THE REGISTER WE SELECT ONE OF THE 16 VIDEO MEMORIES
- IN THE VIDEO BANK. ╩UST REMEMBER THAT THE REGISTER ALSO SELECTS THE POSITION
- OF THE GRAPHICS MEMORY (BITMAP) INSIDE THE VIDEO BANK.
-
- ┬ECAUSE WE HAVE TO KEEP THE BITMAP IN THE SAME VIDEO BANK, WE ONLY HAVE HALF
- OF THE BANK FREE FOR VIDEO MATRICES. ╞ORTUNATELY, THAT'S ALL WE NEED TO GET
- INDIVIDUAL MULTICOLOR COLORS FOR EACH LINE AND CHARACTER POSITION.
- ╓╔├ WILL FETCH THE COLOR DATA FROM THE EIGHT VIDEO MATRICES AND THEN IT WILL
- ROLL ON TO THE NEXT 40 BYTES. ┴FTER EIGHT LINES AND MATRICES WE WILL SELECT
- THE FIRST VIDEO MATRIX AGAIN. (╙EE PICTURE 1)
-
- ╒SUALLY IT IS NOT NECASSARY TO USE THE WHOLE SCREEN FOR A ╞╠╔ PICTURE,
- ESPECIALLY IF YOU WANT TO HAVE A SCROLLER OR SOME OTHER EFFECTS. ┘OU JUST
- HAVE TO MAKE SURE THAT ╓╔├ IS FOOLABLE IN THE USUAL WAY. ╘HE TIMING IS ALSO
- VERY IMPORTANT, EVEN ONE CYCLE VARIATIONS IN THE ROUTINE ENTRY ARE NOT
- ALLOWED. ╘HERE IS MANY WAYS TO DO THE SYNCHRONIZATION. ╧NE WAY IS TO USE A
- SPRITE, AS IN THE PREVIOUS ARTICLE. (╙EE ├= ╚ACKING, ╓OL. 1, ╔SS. 3, ╘HE
- ─EMO ├ORNER: ═ISSING ├YCLES).
-
-
- _╬OT MUCH TIME_
-
- ┬ECAUSE A BAD LINE WILL STEAL 40 CYCLES, THERE IS ONLY 23 CYCLES LEFT ON
- EACH SCAN LINE. ╔T IS ENOUGH FOR CHANGING THE VIDEO MATRIX AND BACKGROUD
- COLOR. ╘HERE IS NOT A MOMENT TO LOSE, BECAUSE YOU MUST CHANGE THE VERTICAL
- SCROLL REGISTER, VIDEO MATRIX POINTER AND THE BACKGROUND COLOR. ╘HIS IS WHY
- YOU CAN'T HAVE SPRITES IN FRONT OF A ╞╠╔ PICTURE.
-
- ╫ITH ╞╠╔ WE GET TWO SELECTABLE COLORS FOR EACH CHARACTER POSITION AND LINE,
- EACH SCAN LINE CAN HAVE IT'S OWN BACKGROUND COLOR AND EACH CHARACTER POSITION
- STILL HAS ITS OWN CHARACTER COLOR FROM COLOR MEMORY. ╔N THEORY EACH CHARACTER
- POSITION COULD HAVE 25 DIFFERENT COLORS, UNFORTUNATELY ╓╔├ ONLY HAS 16.
-
-
- _┴ LITTLE FEATURE_
-
- ╓╔├ DOES NOT LIKE IT WHEN WE CHANGE THE VERTICAL SCROLL REGISTER ($─011),
- AND IS A BIT ANNOYED. ╔T 'SEES' CODE 255 (LIGHT GRAY) IN VIDEO MATRIX
- AND 9 (BROWN) IN THE COLOR MEMORY INSTEAD OF THE CORRECT VALUES STORED THERE.
- ┴CTUALLY THE COLOR VALUE SEEMS TO BE THE LOWER NYBBLE OF THE DATA BYTE
- CURRENTLY ON THE DATA BUS (ACCESSED BY THE PROCESSOR (╠─┴#=$┴9)).
- ╒NFORTUNATELY THERE IS NO CHANCE TO DO THE REGISTER CHANGE IN THE BORDER
- AND THUS THE THREE LEFTMOST CHARACTER COLUMNS ARE A BIT USELESS, BECAUSE
- THE COLORS ARE FIXED.
-
- ╚OWEVER, THIS DOESN'T MEAN THAT YOU CAN'T USE THOSE THREE COLUMNS. ╞╠╔
- EDITORS MAY NOT SUPPORT THE FIXED COLORS THOUGH, SO IT MAY BE HARD TO USE
- THEM.
-
-
- _╫HAT TO DO WITH ╞╠╔ ?_
-
- ┬ECAUSE ╞╠╔ WILL EAT UP ALL THE AVAILABLE PROCESSOR TIME (NO ├OPPER :-),
- IT IS NOT SUITABLE FOR ANY ACTION-GAMES. ┼ACH ╞╠╔ PICTURE TAKES ABOUT 17 K┬
- OF MEMORY: NOT SO MANY PICTURES FIT ON ONE FLOPPY. ╙O, THE ONLY PLACE FOR ╞╠╔
- IS DEMOS, INTROS, BOARD-TYPE GAMES AND MAYBE A ╟╔╞ VIEWER..
-
- --------------------------------------------------------------------------
- ╨ICTURE 1: ╞ROM WHICH MATRIX ╓╔├ FETCHES THE MULTICOLOR VALUES
-
- _ ___________________________________________________________
- ▄ ... ▄ ═ATRIX0 ▄ ═ATRIX0 ▄ ═ATRIX0 ▄
- ▄ , .▄____3__________▄____4__________▄____5__________▄ ...
- ▄ ╒ .▄ ═ATRIX1 ▄ ═ATRIX1 ▄ ═ATRIX1 ▄
- ▄ S .▄____3__________▄____4__________▄____5__________▄ .
- ▄├HAR E ▄ ═ATRIX2 ▄ ═ATRIX2 ▄ ═ATRIX2 ▄ .
- ▄╠INE L ▄____3__________▄____4__________▄____5__________▄ .
- ▄┌ERO E ▄ ═ATRIX3 ▄ ═ATRIX3 ▄ ═ATRIX3 ▄
- ▄ S ▄____3__________▄____4__________▄____5__________▄
- ▄ S, ▄ ═ATRIX4 ▄ ═ATRIX4 ▄ ═ATRIX4 ▄
- ▄ ▄____3__________▄____4__________▄____5__________▄
- ▄ C ▄ ═ATRIX5 ▄ ═ATRIX5 ▄ ═ATRIX5 ▄
- ▄ O ▄____3__________▄____4__________▄____5__________▄
- ▄ L ▄ ═ATRIX6 ▄ ═ATRIX6 ▄ ═ATRIX6 ▄
- ▄ U ▄____3__________▄____4__________▄____5__________▄
- ▄ M ▄ ═ATRIX7 ▄ ═ATRIX7 ▄ ═ATRIX7 ▄
- ▄_ N ▄____3__________▄____4__________▄____5__________▄
- S ▄ ═ATRIX0 ▄ ═ATRIX0 ▄ ═ATRIX0 ▄
- ▄___43__________▄___44__________▄___45__________▄
- ▄ ═ATRIX1 ▄ ═ATRIX1 ▄ ═ATRIX1 ▄
- ▄___43__________▄___44__________▄___45__________▄
- ▄
- ▄ ...
- ▄ .
- ▄ .
- ▄ .
-
- --------------------------------------------------------------------------
- _┴DDITIONAL READING_
-
- ╔F YOU HAVE AN ┴MIGA YOU MIGHT WANT TO GET YOUR HANDS INTO MY CONVERSION
- PROGRAMS IN ├64╟╞╪1.LHA. ╘HE PACKET ALSO INCLUDES ╞╠╔ VIEWER FOR ╨┴╠ ├64'S
- AND SOME DOCUMENTATION ABOUT THE ╞╠╔ FILE FORMAT. ╔T ALSO HAS THE SAME
- UTILITIES FOR ╦OALA FORMAT PICTURES.
-
- ┴VAILABLE FROM:
- CWAVES.STFX.CA
- NIC.FUNET.FI:/PUB/AMIGA/GRAPHICS/APPLICATIONS/CONVERT
-
-
- ├64╟╞╪.DOC
- ├64╟FX1.0
- ┴ ├64 GRAFIX FORMAT CONVERSION PACKAGE
- )1991,1992 ╨ASI '┴LBERT' ╧JALA
-
- ┼-MAIL: PO87553@CS.TUT.FI
- ALBERT@CC.TUT.FI
-
- ╘HIS PACKAGE CONTAINS PROGRAMS WHICH ARE USED TO CONVERT PORTABLE
- PIXMAP (PPM) FILES TO ├64 GRAPHICS FORMATS (╞╠╔ AND KOALA) UNDER
- ┴MIGA╧╙. ╘HE PACKAGE INCLUDES ├ SOURCE CODES FOR THE PROGRAMS, SO
- IT IS POSSIBLE TO PORT THE PROGRAMS TO ANOTHER ENVIRONMENT. ├64╟╞╪1.1
- INCLUDES ╒NIX-COMPILABLE SOURCES.
-
- ╔N ADDITION TO THIS PACKAGE YOU NEED E.G. ╨┬═╨LUS TO CONVERT ┴MIGA
- ILBM FILES TO PPM FIRST. ┴ND OF COURSE SOME WAY TO TRANSFER FILES
- BETWEEN THE MACHINES.
-
- =============================================================================
- ╥╙-232 ├ONVERTER
- BY ╫ARREN ╘USTIN (WARREN@COL.HP.COM)
-
- ╘HIS ARTICLE PRESENTS A WAY TO INTERFACE FROM THE ├= RS232 HARDWARE
- BEHIND THE USER PORT TO A STANDARD 25PIN FEMALE RS232 CONNECTOR USING ONLY
- ONE ╔├ AND A FEW CAPACITORS. ╔T IS NOT A ╒┴╥╘ OR A ╙╫╔╞╘╠╔╬╦ TYPE INTERFACE
- WHICH TAKE PLACE OF THE INTERNAL ├= RS232 CIRCUITRY, BUT A SIMPLE LEVEL SHIFTING
- INTERFACE THAT USES THE INTERNAL RS232 ROUTINES AND TRANSLATES THE USER PORT
- LEVELS TO RS232 LEVELS. ╘HEREFORE YOU CAN ONLY GET UPTO 2400BAUD/9600BAUD
- (├=64/├=128) WITH THIS DESIGN.
-
- ╘HE "OLD" WAY TO DO THIS WAS TO USED ═├1488 AND ═├1489 PARTS (A LINE
- DRIVER AND LINE RECEIVER), HOWEVER THESE REQUIRED A NEGATIVE SUPPLY TO INTERFACE
- PROPERLY. ╘HE USER PORT ONLY SUPPLIES +5VOLTS, HENCE THIS PRESENTS A PROBLEM.
- ╘HERE HAS BEEN SUCCESS USING THESE PARTS OR DISCRETE TRANSISTORS AND RESISTORS
- SINCE MANY MODEMS ARE SOMEWHAT FRIENDLY AND SEEM TO WORK EVEN THOUGH THE LEVELS
- WERE MARGINAL. ┴LSO, SOME SIGNALS WERE NOT USED, ALLOWING FOR POTENTIAL
- PROBLEMS. ┴NOTHER WAY TO SOLVE THIS PROBLEM WAS TO BUY A $25-30 INTERFACE. ╔F
- YOU CAN FIND THE ╔├ BELOW, YOU HAVE ANOTHER CHOICE THAT IS RELATIVELY
- INEXPENSIVE.
-
- ╘HE ╠╘1133 IS BASICALLY THE ═├1488 AND 1489 PUT TOGETHER INTO ONE PART
- WITH AN INTERNAL CHARGE PUMP SCHEME THAT ALLOWS THE INTERNAL DRIVERS TO OUTPUT
- +5 AND -5 VOLTS TO THE RS232 CONNECTOR. ╔T ALSO HAS ENOUGH DRIVERS AND
- RECEIVERS TO HANDLE ALL OF THE SIGNALS THAT THE ├= USES FOR RS232.
-
- ╙O WITH THIS ╔├, 5 CAPACITORS AND THE TWO CONNECTORS (USER PORT AND
- RS232) YOU CAN BUILD YOUR OWN INTERFACE TO THE STANDARD 25 PIN MODEM CABLE.
-
- ╚ERE ARE THE PLANS FOR AN ╒SER PORT ╘╧ ╥╙232 CONNECTOR USING JUST ╧╬┼ ╔├ AND
- 4 CAPACITORS. ╔T USES A ╠INEAR ╘ECHNOLOGY ╠╘1133 BUFFER THAT HAS 3 ╥╙232
- DRIVERS AND 5 RECEIVERS. ╔T HAS WORKED FOR ME WITH NO PROBLEMS AND TAKES
- A MINIMUM AMOUT OF WIRING TO GET TO WORK. ═Y BOARD IS ONLY THE WIDTH OF
- THE USER PORT AND ABOUT 1.5 INCHES DEEP IN SIZE.
-
- ╨ARTS LIST:
- ----------
- ╠╘1133├╬ PLASTIC DIP OR ╠╘1133├╩ CERAMIC DIP ╥╙232 DRIVER FROM ╠INEAR
- ╘ECHNOLOGIES
-
- (╔T TAKES 27M┴ MAX (17M┴ TYPICAL) SO IS WELL BELOW THE 100M┴
- LIMIT OF THE USER PORT)
-
- ─RIVER ╔N PINS (15,19,21) ╘╘╠/├═╧╙ COMPATIBLE. ╒NUSED INPUTS
- ▄ ▄ ▄ SHOULD BE TIED TO +5V.
- ─RIVER ╧UT PINS (11, 7, 5) ╥╙232 COMPATIBLE. ╙HORT CIRCUIT
- PROTECTED FROM -30V TO +30V.
- ╥ECEIVER ╔N PINS (6, 8, 9, 10,12) ┴CCEPT ╥╙232 LEVELS (+-30V)
- ▄ ▄ ▄ ▄ ▄ AND HAVE 0.4V OF HYSTERESIS TO
- ▄ ▄ ▄ ▄ ▄ PROVIDE NOISE IMMUNITY.
- ╥ECEIVER ╧UT PINS (20,18,17,16,14) ╘╘╠/├═╧╙ OUTPUTS.
-
- ╬╧╘┼: ╠INES ABOVE INDICATE WHICH INPUTS GO WITH WHICH OUTPUTS, AND
- THE PAIRS CAN BE INTERCHANGED FREELY. ╔ CONNECTED THEM AS
- DESCRIBED BELOW BECAUSE THE WIRING WORKED OUT THE BEST FOR ME.
-
- 4 - >= 1U╞ CAPACITORS ╒SED TO GENERATE ╥╙232 VOLTAGES BY A CHARGE PUMP
- TECHNIQUE INSIDE ╔├
- 1 1U╞ CAPACITOR ╘O BYPASS THE 5VOLT SUPPLY FOR NOISE REJECTION.
-
- 1 ╒SER PORT FEMALE CONNECTOR. (╔ JUST DUG THIS UP, ╔'M NOT SURE
- WHERE THESE CAN BE FOUND, ╔ THINK IT IS 0.159" SPACING, 24PIN.
-
- 1 ╥╙232 25PIN FEMALE CONNECTOR. ├AN BE FOUND AT ╥-╙HACK
-
- ╙OME SORT OF .1" SPACING PROTO BOARD
-
- ├ONNECTIONS:
- -----------
-
- ╒SER PORT CONNECTOR (╠OOKING INTO THE ├64 OR ├128)
-
- 1 2 3 4 5 6 7 8 9 10 11 12
- ------------------------------------
- ▄╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪▄
- ------------------------------------
- ┴ ┬ ├ ─ ┼ ╞ ╚ ╩ ╦ ╠ ═ ╬
-
- ╟ROUND & ╨OWER:
- --------------
-
- ╨INS 1, ┴, 12, ╬ TO ╟ROUND OF BOARD.
- ╠╘1133 PIN 2 TO PIN 2 OF ╒SER PORT CONNECTOR (+5 VOLTS)
- 1U╞ CAPACITOR BETWEEN PIN2 AND GROUND (BYPASS CAP)
- ╠╘1133 PIN 13 TO ╟ROUND.
- ╥╙232 CONNECTOR PINS 7 & 1 TO ╟ROUND.
-
- ╠╘1133 CAPACITORS:
- 1U╞ FROM PIN 1 (╓+) TO GROUND (╔F POLARIZED (ELECTROLYTIC) + SIDE TO PIN 1)
- 1U╞ FROM PIN 24 (╓-) TO GROUND (┴S ABOVE BUT + SIDE TO GROUND)
- 1U╞ FROM PIN 3 (├1+) TO PIN 4 (├1-) (┴GAIN IF POLARIZED, + SIDE TO PIN 3)
- 1U╞ FROM PIN 22 (├2+) TO PIN 23 (├2-) (┴GAIN IF POLARIZED, + SIDE TO PIN 22)
-
-
- ├OMMODORE SIDE ╥╙232 SIDE
- ╒SER PORT ╙IGNAL ╨IN OF ╙IGNAL ╨IN OF ╥╙232
- PIN NAME ╠╘1133 DIRECTION ╠╘1133 CONNECTOR
- --------- ------ ------ --------- ------ ---------
- ┬ ╞╠┴╟2 ─IN 20 <-- 6 3
- ├ ╨┬0 ─IN ALSO CONNECT TO ABOVE PIN 20
- ─ ╨┬1 ╥╘╙ 21 --> 5 4
- ┼ ╨┬2 ─╘╥ 19 <-- 7 20
- ╞ ╨┬3 ╥╔ 18 --> 8 22
- ╚ ╨┬4 ─├─ 17 --> 9 8
- ╩ ╨┬5 ╬OT USED
- ╦ ╨┬6 ├╘╙ 16 --> 10 5
- ╠ ╨┬7 ─╙╥ 14 <-- 12 6
- ═ ╨┴2 ─OUT 15 --> 11 2
-
-
- ╘HIS ASSUMES THAT YOU WANT TO CONNECT ALL OF THE COMMUNICATION LINES. ╔ DID
- IT THIS WAY BECAUSE THE ├128 PROGRAMMERS REFERENCE GUIDE HAD ALL OF THE SIGNALS
- ABOVE LISTED. ╔F YOU WANT TO DROP ╥╔ (RING INDICATOR) YOU COULD ALSO USE AN
- ╠╘1134 WHICH HAS 4 DRIVERS AND 4 RECEIVERS.
-
- ╨ARTS ╙UBSTITUTION:
-
- ╘HERE ARE OTHER ╔├'S AVAILABLE WHICH WILL WORK IN THIS APPLICATION.
- ╘HE RS232 BUS LEVELS FOR THE ╠╘ PARTS ARE SPEC'ED AT ▐ +/- 7V TYPICAL, WHILE
- THE ═┴╪╔═ PARTS ARE +/-9V TYPICAL. (┬OTH ARE MIN AT +/- 5V WHICH SHOULD WORK
- IN ALL APPLICATIONS). ╔ THINK THAT AN INTERFACE CAN BE DONE WITH ONLY 3
- LINES, ─IN(╥X), ─OUT(╘X), AND EITHER ─╙╥ OR ├╘╙, SO IF YOU CAN'T GET THE
- ╠╘1133 ONE OF THESE OTHERS MIGHT WORK, ALTHOUGH THE PINOUTS WOULD BE DIFFERENT.
- ╘HE MAX YOU WOULD NEED IS WHAT THE ╠╘1133 SUPPLIES, 3 DRIVERS & 5 RECEIVERS.
-
- ╚ERE IS A DESCRIPTION OF PARTS THAT MIGHT BE SUBSTITUTED:
- (╬OTE, WITH ALL OF THEM YOU SHOULD USE A BYPASS CAP ON THE +5V SUPPLY WHICH
- ╔ HAVE ╬╧╘ INCLUDED IN THE COUNTS BELOW.)
-
- ╥╙232 ╥╙232 # OF ┼╪╘┼╥╬┴╠
- ╬┴═┼ ╨╔╬╙ ─╥╔╓┼╥╙ ╥┼├┼╔╓┼╥╙ ├┴╨╙ ├╧══┼╬╘╙
- -------------------------------------------------------------------------
- ╠INEAR ╘ECHNOLOGY PARTS...
- (╧N THE PARTS WITH SHUTDOWN (╙─), THE PIN MUST BE TIED TO +5 TO OPERATE)
- ╠╘1133 24 3 5 4 ╔N ARTICLE ABOVE
- -------------------------------------------------------------------------
- ╠╘1130 28 5 5 4 ╧VERKILL (╙─P14)
- ╠╘1131 28 5 4 4 2 EX ─R, 1 < ╥CVR
- ╠╘1132 24 5 3 4 2 EX ─R, 2 < ╥CVR
- ╠╘1134 24 4 4 4 1 < ╥CVR
- ╠╘1136 28 4 5 4 1 EX ─R (╙─P14)
- ╠╘1137 28 3 5 4 ╙─P13
- ╠╘1138 28 5 3 4 ╠╘1132 W/╙─P13
-
- ═┴╪╔═ PARTS... (╙OME ALSO HAVE A ╘╘╠ ┼╬_ PIN THAT MUST BE TIED TO 0V TO OPERATE)
- (╧N THESE PARTS, ╙─ MUST BE TIED TO 0V TO OPERATE!)
- ═┴╪232 16 2 2 4 ═AY WORK
- ═┴╪233 20 2 2 0! ╬O EXTERNAL CAPS
- ═┴╪235 24 5 5 0! ╧VERKILL, BUT ╬╧ CAPS,
- ╙─P21, ┼╬_P20
- ═┴╪236 24 4 3 4 1 EX ─R, 2 < ╥CVR,
- ╙─P21, ┼╬_P20
- ═┴╪237 24 5 3 4 2 EX ─╥, 2 < ╥CVR
- ═┴╪238 24 4 4 4 1 EX ─╥, 1 < ╥CVR
-
- ╔N SUMMARY, YOU CAN SEE THERE ARE MANY DIFFERENT PARTS YOU COULD USE,
- ESPECIALLY IF YOU DON'T NEED ALL THE SIGNALS. ╘HE ═┴╪╔═ PARTS SEEM TO
- DO THE JOB IN FEWER PINS AND A LITTLE BETTER TYPICAL DRIVE SPEC AND ╔
- WOULD RECOMMEND THE ═┴╪235 OVERALL SINCE YOU ONLY NEED 1 BYPASS CAP TO
- MAKE IT OPERATE!
-
- =============================================================================
- ╔NTRODUCTION TO THE ╓╔├-╔╔
- BY ╨ASI '┴LBERT' ╧JALA ( ... )
-
- ╘HE ╓IDEO ╔NTERFACE ├ONTROLLER USED IN ├64 HAVE SEVERAL DIFFERENT OPERATING
- MODES AND DIFFERENT GRAPHICAL PRIMITIVES. ┬ASICALLY THERE IS A) CHARACTER
- MODE, B) BITMAP MODE AND C) MOVABLE OBJECTS THAT CAN BE MIXED WITH THE
- OTHER GRAPHICS. ╘HESE PRIMITIVES CAN ALSO BE PUT INTO A MORE COLORFUL MODE,
- BUT YOU LOSE HALF OF THE RESOLUTION IN THAT PROCESS.
-
-
- ╔. ╙TANDARD ├HARACTER ─ISPLAY ═ODE
-
- ╔N THE CHARACTER DISPLAY MODE, ╓╔├ FETCHES CHARACTER POINTERS FROM VIDEO
- MATRIX, WHICH CONSISTS OF 1000 8-BIT BYTES FORMATTED AS 25 ROWS OF 40
- CHARACTERS EACH. ╘HE 8-BIT CHARACTER CODE IMPLIES 256 DIFFERENT CHARACTERS
- SIMULTANEOUSLY ONSCREEN.
-
- ┼ACH CHARACTER CODE CAN HAVE AN UNIQUE IMAGE, WHICH CONSISTS OF 8 BYTES IN
- CHARACTER MEMORY. ╘HE POSITION OF THE CHARACTER MEMORY CAN BE MOVED WITH THE
- CHARACTER BASE POINTER AND THUS IT IS POSSIBLE TO HAVE SEVERAL CHARACTER SETS
- SIMULTANEOSLY IN MEMORY. ╧NE CHARACTER MEMORY IS 2048 BYTES.
-
- ╔N ADDITION TO THE CHARACTER CODE, EACH POSITION IN VIDEO MATRIX HAS AN
- ASSOCIATED COLOR NYBBLE (4 BITS) IN COLOR MEMORY ($─800-$─╞╞╞). ╞OR EACH
- ZERO-BIT IN THE CHARSET THE BACKGROUND COLOR FROM REGISTER $21 IS DISPLAYED,
- THE COLOR-NYBBLE IS USED FOR THE ONE-BIT.
-
-
- ╔╔. ├HARACTER ═ULTICOLOR ═ODE
-
- ╔N CHARACTER MULTICOLOR MODE, COLOR SELECTION IS INCREASED. ┼ACH BYTE IS
- FETCHED FROM THE CHARACTER MEMORY JUST LIKE IN THE STANDARD CHARACTER MODE,
- BUT THEY ARE INTERPRETED DIFFERENTLY. ╔N THIS MODE BYTES ARE DIVIDED INTO
- BIT-PAIRS. ╞OR BIT PAIR "00" THE BACKGROUND COLOR FROM REGISTER $21 IS
- DISPLAYED, BACKGROUND COLOR #1 IS USED FOR BIT PAIR "01" AND BACKGROUND
- COLOR #2 FOR BIT PAIR "10". ╘HE COLOR NYBBLE WILL DEFINE THE COLOR FOR BIT
- PAIR "11".
-
- ╘HE HIGHEST BIT IN THE COLOR MEMORY DEFINES WHETHER THE CHARACTER IS TO BE
- DISPLAYED IN MULTICOLOR ("1") OR IN STANDARD MODE ("0"). ┬ECAUSE OF THIS,
- ONLY COLORS IN THE RANGE FROM 0 TO 7 ARE POSSIBLE FOR BIT PAIR "11". ┴ND SINCE
- TWO BITS ARE REQUIRED TO SPECIFY ONE DOT COLOR, THE CHARACTER IS NOW DISPLAYED
- AS A 4X8 MATRIX INSTEAD OF THE 8X8 MATRIX AND THE SIZE OF THE DOTS ARE DOUBLED
- HORIZONTALLY.
-
-
- ╔╔╔. ┼XTENDED ├OLOR ═ODE
-
- ╘HE EXTENDED COLOR MODE ALLOWS THE SELECTION OF ONE BACKGROUND COLOR FROM FOUR
- POSSIBILITIES FOR EACH CHARACTER POSITION IN THE NORMAL 8X8 RESOLUTION. ╘HE
- CHARACTER IMAGE DATA IS PROCESSED LIKE IN STANDARD CHARACTER MODE, BUT THE
- TWO MOST SIGNIFICANT BITS IN THE CHARACTER CODE (VIDEO MATRIX) ARE USED TO
- SELECT THE RIGHT BACKGROUND COLOR REGISTER. ╧NLY CHARACTER IMAGES FROM 0 TO 63
- ARE ACCESSIBLE, BECAUSE TWO OF THE MOST SIGNIFICANT BITS ARE USED FOR THE
- BACKGROUND COLOR SELECTION.
-
- ┼XTENDED COLOR MODE AND MULTICOLOR MODE SHOULD NOT BE SELECTED SIMULTANEOSLY,
- BECAUSE THIS WILL RESULT A BLACK SCREEN. ╚OWEVER, THIS IS A VERY EASY WAY TO
- HIDE SOMETHING IF NEEDED.
-
-
- ╔╓. ╙TANDARD ┬IT ═AP ═ODE
-
- ╔N BIT MAP MODE, A ONE-TO-ONE CORRESPONDENCE EXISTS BETWEEN EACH DISPLAYED
- DOT AND A MEMORY BIT. ╘HE BIT MAP PROVIDES A RESOLUTION OF 320╚ X 200╓
- INDIVIDUALLY CONTROLLED PIXELS. ╘HE VIDEO MATRIX IS STILL ACCESSED AS IN
- CHARACTER MODE, BUT THE DATA IS INTERPRETED AS COLOR DATA. ╫HEN A BIT IS "0"
- IN THE BIT MAP DATA, THE COLOR FROM THE LOWER NYBBLE IS SELECTED. ╘HE
- HIGHER NYBBLE FROM THE VIDEO MATRIX IS USED FOR THE BIT "1".
-
-
- ╓. ═ULTICOLOR ┬IT ═AP ═ODE
-
- ╔N MULTICOLOR BIT MAP MODE TWO BITS IN THE BIT MAP MEMORY DETERMINE THE COLOR
- OF ONE PIXEL. ╔F THE BIT PAIR IS "11", THE COLOR FOUND FROM THE COLOR MEMORY
- IS USED. ╘HE BACKGROUND COLOR IS USED FOR BIT PAIR "00" AND THE VIDEO MATRIX
- DEFINES THE COLORS FOR BIT PAIRS "01" AND "10". ┴S IT TAKES TWO BITS TO DEFINE
- ONE PIXEL COLOR, THE HORIZAONTAL RESOLUTION IS HALVED TO 160╚ X 200╓.
-
-
- ╓╔. ═OVABLE ╧BJECT ┬LOCKS (═╧┬S)
-
- ╘HE MOVABLE OBJECT BLOCK IS A SPECIAL TYPE OF GRAPHICAL OBJECT WHICH CAN BE
- DISPLAYED INDEPENDENTLY FROM THE OTHER GRAPHICS. ┼ACH ONE OF THE ═╧┬S CAN
- BE MOVED INDEPENDENTLY ANYWHERE IN THE SCREEN. ┼IGHT UNIQUE ═╧┬S CAN BE
- DISPLAYED SIMULATANIOUSLY, EACH DEFINED BY 64 BYTES IN MEMORY WHICH ARE
- DISPLAYED AS A 24 X 21 PIXEL ARRAY.
-
- ┼ACH ═╧┬ CAN BE SELECTIVELY ENABLED (═N┼="1") OR DISABLED (═N┼="0"). ┴ ═╧┬
- IS POSITIONED VIA ITS ╪ AND ┘ POSITION REGISTERS. ╬INE BITS ARE NEEDED TO
- DEFINE THE VERTICAL POSITION AND THE MOST SIGNIFICANT BITS OF ALL ═╧┬S ARE
- STORED IN THE REGISTER $10. ┴S ╪ LOCATIONS 23 TO 347 AND ┘ LOCATIONS 50 TO
- 249 ARE ENTIRELY VISIBLE ON THE SCREEN, ═╧┬S CAN BE SMOOTHLY MOVED TO AN
- OFF-SCREEN POSITION.
-
- ┼ACH ═╧┬ HAS ITS OWN COLOR REGISTER AND A ═╧┬ CAN BE DISPLAYED EITHER IN
- STANDARD OR MULTICOLOR MODE (═N═├="1"). ┴S USUALLY, MULTICOLOR MODE GIVES
- MORE COLORS, BUT HALVES THE HORIZONTAL RESOLUTION. ╔N MULTICOLOR MODE BIT
- PAIR "00" IS TRANSPARENT, THE ═╧┬ COLOR REGISTER DEFINES THE COLOR FOR PAIR
- "10", AND ═╧┬ MULTICOLOR REGISTERS GIVE THE COLORS FOR PAIRS "01" AND "11".
-
- ═╧┬S CAN BE SELECTIVELY EXPANDED IN BOTH DIRECTIONS. ╫HEN ═╧┬ IS EXPANDED,
- THE PIXEL SIZE ALSO EXPANDS AND IT IS STILL DISPLAYED AS 24 X 21 MATRIX
- (12 X 21 IN MULTICOLOR MODE).
-
- ═╧┬ PRIORITIES DEFINE WHETHER A ═╧┬ APPEARS BEHIND OR ON TOP OF THE CHARACTER
- OR BIT MAP GRAPHICS. ┴ "1" IN ═N─╨ MEANS ═╧┬ IS DISPLAYED BEHIND. ═╧┬
- COLLISION REGISTERS MAY BE USED TO DETECT IF A NON-TRANSPARENT DATA OF TWO
- ═╧┬S OR A ═╧┬ AND CHARACTER OR BITMAP FOREGROUND DATA IS COLLIDING.
-
- [┼D'S ╬OTE: ═╧┬'S ARE ╙PRITES. ├OMMODORE INITIALLY REFERRED TO THEM AS ═╧┬'S
- AND STILL DOES IN SOME AREAS.]
-
-
- ╓╔╔. ╧THER FEATURES
-
- ╘HE DISPLAY SCREEN MAY BE BLANKED BY SETTING THE ─┼╬ BIT TO A "0". ╘HE ENTIRE
- SCREEN WILL BE FILLED WITH THE BORDER COLOR AS SET IN REGISTER 32 ($20).
- ╫HEN THE SCREEN IS BLANKED, ╓╔├ WILL NEED ONLY TRANSPARENT MEMORY CYCLES AND
- THE PROCESSOR IS NOT SLOWED DOWN. ╚OWEVER, ═╧┬ DATA IS STILL FETCHED, IF
- THE ═╧┬S ARE NOT ALSO DISABLED.
-
- ╘HE NORMAL DISPLAY CONSISTS OF 25 ROWS OF 40 CHARACTERS EACH. ╘HE DISPLAY
- WINDOW CAN BE REDUCED TO 24 ROWS AND 38 CHARACTERS. ╘HIS HAS NO EFFECT ON HOW
- THE DATA IS INTERPRETED, ONLY THE CHARACTERS NEXT TO THE BORDER ARE COVERED
- BY THE BORDER. ╥╙┼╠ CONTROLS THE NUMBER OF ROWS ("1" FOR 25 ROWS) AND ├╙┼╠
- CONTROLS THE NUMBER OF COLUMNS ("1" FOR 40 COLUMNS).
-
- ╘HE DISPLAY DATA MAY BE SCROLLED UP TO ONE CHARACTER SPACE IN BOTH VERTICAL
- AND HORIZONTAL DIRECTION. ╨OSITION OF THE SCREEN IS SET WITH THE 3 LOWEST
- ORDER (LEAST SIGNIFICANT) BITS IN REGISTERS 22 ($16) AND 17 ($11).
-
- ╠IGHT PEN LATCH IS USED TO CATCH THE POSITION OF THE LIGHT PEN WHEN A PULSE
- IS RECEIVED IN THE ╠╨ PIN. ╘HE VALUE IS LATCHED ONLY ONCE IN A FRAME.
-
- ╘HE RASTER REGISTER IS A DUAL-FUNCTION REGISTER. ┴ READ FROM THE RASTER
- REGISTER RETURNS THE CURRENT RASTER POSITION AND A WRITE TO IT WILL SET THE
- RASTER COMPARE VALUE. ╫HEN THE WRITTEN VALUE AND THE CURRENT RASTER LINE
-