BEDIT.DOC

(11 KB) Pobierz
         *  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...
Zgłoś jeśli naruszono regulamin