* BLOCK EDIT.DOC * 1 INTRODUCTION THIS PROGRAM IS INTENDED MORE AS AN AID TO PROGRAMMING GRAPHICS THAN AS A THING UNTO ITSELF. I AM GOING TO BE ASSUMING A CERTAIN AMOUNT OF KNOW- LEDGE ON THE PART OF THE USER ABOUT THE C64'S PROGRAMMABLE CHARACTER GRAPHICS. IF YOU STILL HAVE SOMETHING TO LEARN ABOUT THE MACHINE (DON'T WE ALL), I CAN STRONGLY RECOMMEND MAPPING THE COMMODORE 64, BY SHELDON LEEMAN (COMPUTE! BOOKS). THE PROGRAMMER'S REFERENCE GUIDE FROM COMMODORE ALSO COVERS THE SUBJECT, BUT NOT AS CLEARLY. BLOCK EDIT IS INTENDED TO ALLOW THE EDITING AND SAVING OF CUSTOM CHARACTER SETS, BUT IT IS NOT ORIENTED TOWARD THE CREATION OF NORMAL SIZED, 8 BY 8 PIXEL CHARACTERS. INSTEAD, IT GROUPS THESE CHARACTERS IN BLOCKS OF 4 TO PRODUCE 16 BY 16 PIXEL, DOUBLE SIZED CHARACTERS, HENCEFORTH TO BE REFERRED TO AS BLOCKS. IT ALSO STORES A 256 BYTE 'COLORFILE' AFTER THE END OF THE CHARACTER SHAPE DATA, WITH AN INDIVIDUAL COLOR FOR EACH CHARACTER WITHIN THE SET. THIS ALSO ALLOWS INDIVIDUAL CHARACTERS TO BE EITHER 8 BY 8, HI RESOLUTION, 2 COLOR; OR 4(WIDE) BY 8, MULTICOLOR, 4 COLOR. THESE MODES CAN BE MIXED WITHIN A SINGLE BLOCK. FOR A QUICK EXAMPLE OF WHAT ALL THIS IS GOOD FOR, LOAD"BLOCK EDIT.O",8 AND RUN IT. THE TITLE ITSELF IS ALL HI-RES, AND THE LITTLE FELLOW IS MULTI- COLOR. BLOCK EDIT WAS WRITTEN IN ASSEMBLER, USING LEW LASHER'S VE2 TEXT EDITOR AND AS2 ASSEMBLER. THESE PROGRAMS ARE AVAILABLE ON THE BOSTON COMPUTER SOCIETY COMMODORE USER'S GROUP PUBLIC DOMAIN UTILITIES DISK # 3. THANKS, LEW. 2 DEFINITIONS BLOCK: 4 CHARACTERS ARRANGED ON THE SCREEN IN A 2 BY 2 PATTERN. THE RELATIVE POSITION OF THE CHARACTERS WITHIN A BLOCK, BY SCREEN CODE, IS THIS: BLOCK #0 0,1 #1 4,5 ...... #63 252,253 2,3 6,7 254,255 CHARACTERSET: 2048 BYTES OF CHARACTER DATA (256 * 8), FOLLOWED BY A 256 BYTE COLORFILE. THIS EDITOR WILL SAVE FROM $800 (2048) TO $10FF (4351). IT WILL LOAD A SET FROM ANY SOURCE AT $800, REGARDLESS OF THE START ADDRESS IN THE FILE HEADER. A COLORFILE WILL BE CREATED BY THE ACT OF SELECTING COLORS (CTRL N). LOADING A FILE LONGER THAN $900 (2304) BYTES LONG WILL WRITE OVER PART OF THE EDITOR, WITH UNPREDICTABLE RESULTS. FILES SAVED FROM THIS EDITOR WILL HAVE A START ADDRESS OF $800 IN THE HEADER. THE EDITOR USES PRG FORMAT FILES ONLY. COLORFILE: THE LAST 256 BYTES OF A CHARACTERSET, STARTING AT $1000, CONTAINING THE COLOR INFORMATION FOR EACH CHARACTER IN THE SET. BITS 0-2 CONTAIN THE FOREGROUND COLOR, BIT 3 DETERMINES MULTI-COLOR MODE (1 = ON), AND BITS 4-7 ARE NOT USED, EXCEPT IN THE FIRST 3 BYTES OF THE FILE. THESE THREE BYTES USE BITS 4-7 TO STORE, IN ORDER, THE BACKGROUND COLOR, MULTICOLOR 2, AND MULTICOLOR3. EDIT MODE: THE NORMAL OPERATING MODE OF THIS PROGRAM. AT THE TOP LEFT OF THE SCREEN WILL BE THE EDIT DISPLAY, A 16 BY 16 CHARACTER DISPLAY OF THE CURRENT BLOCK. AT THE CENTER RIGHT OF THE SCREEN THE ACTUAL BLOCK WILL BE DISPLAYED. ON THE EDIT DISPLAY WILL BE A SMALL BOX WITH WHITE TOP AND BOTTOM, AND BLACK SIDES. THIS IS THE CURSOR, WHICH COVERS ONE PIXEL AT A TIME. HI-RES MODE: CHARACTER DATA IS DISPLAYED ONE BIT AT A TIME, WITH 1 BITS BEING FOREGROUND COLOR, AND 0 BITS BACKGROUND COLOR. MULTI-COLOR MODE: CHARACTER DATA IS DISPLAYED TWO BITS AT A TIME, WITH 00 BIT PAIRS BACKGROUND COLOR, 01 BIT PAIRS MULTICOLOR2, 10 BIT PAIRS MULTICOLOR3, AND 11 BIT PAIRS FOREGROUND COLOR. HORIZONTAL RESOLUTION IS SACRIFICED FOR MORE COLORS, SINCE THE MULTICOLOR PIXELS ARE TWICE AS WIDE AS HI-RES ONES. 3 USING THE EDITOR TO START UP: LOAD"BLOCK EDIT.O",8 THEN RUN. YOUR C64 MUST BE IN A NORMAL CON- FIGURATION AS FAR AS THE START OF BASIC GOES. IF YOU ARE IN ANY DOUBT, RESET THE MACHINE (RESET BUTTON, OR POWER OFF, OR SYS 64738) BEFORE LOADING. TO SKIP TITLE: LOAD PROGRAM, THEN SYS 4352 AFTER THE TITLE, YOU WILL SEE A COMMAND SUMMARY. IN GENERAL, SINGLE KEYSTROKES DO EASILY REVERSIBLE THINGS, SUCH AS EDITING PIXELS, OR SELECTING THE BLOCK TO BE EDITED. CONTROL KEYS (CTRL PRESSED SIMULTANEOUSLY WITH ANOTHER KEY) WILL DO THINGS YOU'LL WANT TO BE MORE CAREFUL WITH, SUCH AS ERASING ENTIRE BLOCKS, OR LOADING A NEW CHARACTERSET OVER THE CURRENT ONE. THE NEXT THING YOU WILL SEE IS THE LOAD ROUTINE PROMPT. IF YOU ARE STARTING A NEW SET, DOWNLOAD THE ROM CHARACTERS FIRST. SEE THE FINAL SECTION FOR WHY. OTHERWISE, LOAD THE SET YOU WANT TO WORK ON FROM DISK. IF YOU WANT TO SEE THE TITLE ROUTINE AND CHARACTERS, SELECT EITHER ROM OR DISK AND THEN RETURN TO THE EDITOR. YOU WILL THEN HAVE TO USE CTRL N TO SET A COLOR, SINCE EVERYTHING IS INITIALIZED TO BLACK. AFTER THAT, A D COMMAND WILL DISPLAY THE CURRENT SET IN SOMETHING OTHER THAN BLACK ON BLACK. THE BEST WAY TO LEARN THE EDIT MODE IS TO MESS AROUND WITH IT. ? WILL GIVE YOU BACK THE COMMAND SUMMARY WHEN IN EDIT, AND ALL OF THE NON EDIT MODES GIVE PROMPTS AND CAN BE BACKED OUT OF WITHOUT CHANGING ANYTHING. COMMANDS: EDIT MODE CURSOR KEYS: THESE WILL MOVE THE CURSOR AROUND THE EDIT DISPLAY AT THE LEFT OF THE SCREEN. NOTE THAT THE CURSOR WILL GO OFF THE BOTTOM OR RIGHT OF THE DISPLAY, AND RETURN ON THE NEXT ROW OR COLUMN. AT THE TOP OR LEFT, THE CURSOR WILL STOP. THE MODE A GIVEN CHARACTER IS IN IS INDICATED BY THE CURSOR WIDTH. IT WILL AUTOMATICALLY SWITCH SIZE, DEPEND- ING ON THE PIXEL SIZE - SINGLE FOR HI- RES, AND DOUBLE FOR MULTI-COLOR. 1,2,3,4: THESE WILL SET THE PIXEL UNDER THE CURSOR TO 1) BACKGROUND COLOR 2) MULTICOLOR2 3) MULTICOLOR3 4) FORE- GROUND COLOR. IF THE CHARACTER THE CURSOR IS ON IS IN HI-RES MODE, 2 AND 3 WILL HAVE NO EFFECT. B: THIS WILL GO TO BLOCK SELECT MODE. IT WILL DISPLAY THE CURRENT BLOCK#, AND ALLOW YOU TO CHANGE THIS USING THE + AND - KEYS. IF YOU JUST WANT TO KNOW THE CURRENT BLOCK#, HIT B, THEN HIT RETURN WITHOUT USING + OR -. C: THIS WILL ALLOW YOU TO SELECT A NEW FOREGROUND COLOR FOR THE CHARACTER THAT THE CURSOR IS ON. USE + OR - TO SELECT THE COLOR# AND HIT RETURN. YOUR OPTIONS HERE ARE LIMITED TO THE FIRST EIGHT COLORS. THIS IS A TRADEOFF FOR THE MULTICOLOR CAPABILITY. D: THIS WILL DISPLAY THE ENTIRE SET. BLOCK# 0 IS AT THE UPPER LEFT, AND THE REST ARE IN NUMERIC ORDER TO BLOCK# 63 AT THE LOWER RIGHT. HITTING ANY KEY WILL RETURN TO EDIT MODE. H: THIS WILL SET THE CHARACTER THAT THE CURSOR IS ON TO HI-RES MODE. M: THIS WILL SET THE CHARACTER THAT THE CURSOR IS ON TO MULTI-COLOR MODE. +: THIS WILL DISPLAY FOR EDIT THE NEXT HIGHER BLOCK. -: THIS WILL DISPLAY FOR EDIT THE NEXT LOWER BLOCK. ?: THIS WILL PRINT A COMMAND SUMMARY ON SCREEN. CTRL E: THIS WILL ERASE THE CURRENTLY SELECTED BLOCK. CTRL L: THIS WILL GO TO THE LOAD ROUTINE. YOU WILL BE GIVEN THE OPTION TO DOWNLOAD EITHER OF THE ROM CHARACTER SETS, OR TO LOAD A SET FROM DISK. ONCE YOU HAVE SELECTED ONE OR THE OTHER, YOU CAN RETURN TO EDIT MODE WITHOUT LOADING ANYTHING BY HITTING RETURN WITH NO FILE- NAME. NOTE THAT THIS ALSO WORKS FOR THE SAVE ROUTINE. IF A DISK ERROR OCCURS, THE ERROR# AND NAME WILL BE PRINTED, AND YOU WILL BE ASKED IF YOU WANT TO TRY AGAIN. A NO ANSWER WILL RETURN YOU TO THE EDIT MODE. CTRL N: THIS WILL ALLOW YOU TO SET NEW COLORS. THE FOREGROUND COLOR IS OPTION- AL, SINCE CHANGING THAT FOR THE WHOLE SET INVOLVES CHANGING ALL THE COLORFILE BYTES AND POSSIBLY LOSING MUCH INFOR- MATION IF YOU HAVE BEEN VARYING COLOR ON AN INDIVIDUAL CHARACTER BASIS. THE BACKGROUND AND MULTICOLORS ARE GLOBAL IN ANY CASE, INVOLVING THE SETTING OF THE BACKGROUND COLOR REGISTER AT $D021 (53281), THE COLOR REGISTERS AT $D022 (MULTICOLOR2) AND $D023 (MULTI- COLOR3), AND THE SETTING OF THE FIRST THREE BYTES OF THE COLORFILE. CTRL S: THIS WILL GO TO THE SAVE ROUTINE. IF YOU WANT TO WRITE OVER AN EXISTING FILE, ADD '@0:' TO THE START OF THE FILENAME. IF A DISK ERROR OCCURS, THE ERROR# AND NAME WILL BE PRINTED, AND YOU WILL BE ASKED IF YOU WANT TO TRY AGAIN. A NO ANSWER WILL RETURN YOU TO THE EDIT MODE. CTRL T: THIS WILL TRANSFER THE CURRENTLY SELECTED BLOCK TO A NEW LOCATION. THE ROUTINE WILL ASK YOU TO SELECT THE NEW LOCATION. IT IS A GOOD IDEA TO USE THE D COMMAND TO FIGURE OUT WHAT YOU WANT WRITTEN OVER BEFORE DOING A TRANSFER. THE BLOCK YOU TRANSFER ALSO STAYS IN ITS OLD LOCATION, AND THE BLOCK THAT WAS AT THE NEW LOCATION IS LOST. CTRL X: THIS WILL EXIT TO EITHER A MONITOR (OR OTHER PROGRAM) AT $C000 (49152), OR IT WILL COLDSTART BASIC BY DOING A JMP $FCE2 (64738). IF YOU WANT TO RESTART THE EDITOR, FROM A MONITOR IT WOULD TAKE G 1100. FROM BASIC TRY SYS 4352. THIS ALL ASSUMES THAT YOU HAVEN'T OVERWRITTEN IT IN THE MEANTIME. IN GENERAL, COMMANDS THAT REQUIRE FURTHER INPUT FROM YOU WILL PROMPT YOU AS THEY PROCEED. SINGLE LETTER RESPONSES WON'T NEED A RETURN AFTER THEM. 4 USING THE BLOCKS YOU SHOULD HAVE GOTTEN A THREE PART, BASIC LANGUAGE DEMO WITH THIS. THE FIRST PART, BLOCK.DEMOSTART, IS A ONE LINE PROGRAM THAT SETS THE START OF BASIC TO 4352, JUST PAST THE END OF THE COLOR- FILE, AND LOADS THE SECOND PART, BLOCK. DEMO . THIS THEN LOADS THE CHARACTERSET DEMOSET, SETS UP THE COLORS, AND SHOWS THE DEMO. FEEL FREE TO USE THESE ROUTINES TO WRITE YOUR OWN PROGRAMS AROUND. THEY ARE EXTENSIVELY REM'D AND FAIRLY MODULAR. ONE WARNING - THE BLOCK DRAW ROUTINE (LINE 9000) WRITES DIRECT TO THE SCREEN AND COLOR MEMORIES, AND THE X, Y, AND BLOCK# VALUES ARE NOT RANGECHECKED. IF YOU PASS VALUES OUTSIDE THE LEGAL RANGE, YOU WILL EITHER WRITE TO THE WRONG PLACE OR PRODUCE AN ILLEGAL QUANTITY ERROR. IF YOU ARE PROGRAMMING IN SOME OTHER LANGUAGE, THE DEMO SHOULD STILL BE USEFUL TO YOU IN TERMS OF SHOWING WHAT SHOULD HAPPEN WHEN IN ORDER TO DISPLAY BLOCKS. IF YOU NEED TO HAVE NORMAL TEXT AND BLOCKS ON SCREEN AT THE SAME TIME, THE BEST WAY TO GO ABOUT IT IS TO PRESERVE THE NORMAL CHARACTERS THAT YOU WILL NEED WHEN YOU EDIT THE SET. IF YOU DON'T CHANGE THE FIRST 16 BLOCKS DOWNLOADED FROM ROM, YOU WILL BE ABLE TO PRINT THE FIRST 64 CHARACT...
Amiga7878