Compucolor.org – Virtual Media

Listing of file='COPY.SRC;01' on disk='vmedia/scratch-sector.ccvf'

 = 271-023
   0.01 UF CAPACITOR = 272-1051
   2" 8-OHM SPEAKER  = 40-245

THE COMPONENTS CAN BE CONNECTED IN ANY ORDER AND IT DOES NOT
MATTER WHICH WAY ROUND. THE RESISTOR IS NOT ESSENTIAL, BUT
ADVISABLE.


NOTE: CATHY - YOU MAY WANT TO LEAVE THIS OUT, AT YOUR
DISCRETION, BECAUSE IT MAKES COMPUCOLOR LOOK BAD.

	CAP ELECTRONICS SELLS SOUNDWARE FOR $39.95, BUT IT
	COSTS $49.95 FROM COMPUCOLOR. THE ADDRESS IS:
	CAP ELECTRONICS
	1884 SHULMAN AVE.,
	SAN JOSE, CA 95124
	PHONE (408) 371-4120

	TRANSFERRING BASIC FILES FROM OTHER COMPUTERS

	THE PROGRAM BELOW IS A HANDY LITTLE ROUTINE THAT WILL
ALLOW YOU TO TRANSFER BASIC PROGRAMS FROM ANY OTHER COMPUTER
THROUGH THE RS-232 PORT. THE OTHER COMPUTER SIMPLY SENDS THE
FILE AS ASCII TEXT E.G. BY "LIST"ING THE PROGRAM WITH THE
OUTPUT GOING TO THE RS-232 PORT IF THE OTHER MACHINE IS A
COMPUCOLOR FOR EXAMPLE.

	I HAVE USED THIS ROUTINE TO TRANSFER FILES OVER THE
PHONE FROM AN IBM 370/158 AND A HONEYWELL 68/60. IF YOU ARE
INTERESTED IN TRANSFERRING FILES IN THIS FASHION, YOU WILL
NEED A MODEM. IN ORDER TO TRANSFER FILES FROM ANOTHER HOBBY
COMPUTER USING THE PHONE E.G. A TRS-80, IT IS ESSENTIAL THAT
EITHER YOU OR THE OTHER PERSON HAVE A MODEM WHICH CAN BOTH
ANSWER AND ORIGINATE. (RADIO SHACK PART NO. 26-1171 FOR
EXAMPLE.) THIS IS BECAUSE ONE OF YOU MUST ACT AS THE "COMPUTER"
WHILE THE OTHER PRETENDS TO BE A "TERMINAL".

	TO TRANSFER FILES FROM ANOTHER HOBBY COMPUTER WHICH YOU
PLAN TO CONNECT DIRECTLY TO THE COMPUCOLOR, YOU HAVE TO MAKE
AN INTERCONNECTING CABLE. REMEMBER TO SWITCH THE WIRES TO PINS
2 AND 3 ON ONE OF THE PLUGS ON THIS CABLE. (THE "COMPUTER"
VERSUS "TERMINAL" PROBLEM AGAIN.)

	TO USE THE PROGRAM, DIAL-UP (OR PLUG IN TO) THE OTHER
COMPUTER AND ESTABLISH COMMUNICATIONS. HIT CPU RESET AND TYPE:
     ESC R 3 ESC F (FOR FULL DUPLEX) OR H (HALF DUPLEX)
THIS SETS UP FOR 300 BAUD, AND THE ROUTINE WILL NOT WORK
ABOVE THIS BECAUSE BASIC CANNOT ACCEPT THE FILE FAST ENOUGH.

	YOU CAN HIT CONTROL-SHIFT CPU RESET AT ANY TIME AND
GET INTO BASIC. THE OTHER COMPUTER WILL STAY CONNECTED,
AND YOU CAN GET BACK TO IT LATER BY HITTING CPU RESET AGAIN
AND ENTERING THE BAUD RATE AS ABOVE.

	ONCE CONNECTED OK, GET INTO BASIC AND LOAD THE TRANSFER
PROGRAM BELOW. RUN THE PROGRAM, AND SIT BACK AND WATCH AS THE
FILE IS TRANSFERRED (IT APPEARS ON THE SCREEN). WHEN IT IS
FINISHED, SAVE IT ON DISK THEN GET BACK INTO TERMINAL COMMUN-
ICATIONS MODE AS EXPLAINED ABOVE. ANYTHING THAT THE OTHER
COMPUTER SENDS WHICH BASIC DOES NOT UNDERSTAND WILL SIMPLY
CAUSE A SN (SYNTAX) ERROR. FOR EXAMPLE, I GET AN "EOF" FROM
THE TEXT EDITOR ON THE IBM MACHINE AT THE END OF THE FILE.

	THE PROGRAM WILL ASK YOU FOR A COMMAND LINE, WHICH
IS SENT TO THE OTHER COMPUTER TO INITIATE THE TRANSFER. I
USUALLY GET INTO THE TEXT EDITOR ON THE OTHER MACHINE, SO
THE COMMAND IS SOMETHING LIKE "T 100" WHICH TYPES OUT 100
LINES OF THE BASIC FILE I WANT TO TRANSFER. THIS PART IS VERY
DEPENDENT ON THE OTHER MACHINE YOU ARE CONNECTED TO. IF IT IS
A HOBBY COMPUTER, YOU MAY WANT TO SAY "OK FRED, SEND THE FILE",
OR SOMETHING LIKE THAT. NOTE THAT THE QUOTES ARE REQUIRED IF
THE COMMAND LINE CONTAINS SPACES.

	THERE IS ONE SLIGHT BUG IN THE ROUTINE, WHICH IS A
PROPERTY OF BASIC ON THE COMPUCOLOR. IF THERE ARE MORE THAN
FOUR (4) VARIABLE NAMES IN A LINE AS IT IS TRANSFERRED, THE
LINE-FEED AT THE END OF THE LINE WILL BE INSERTED INTO THE
PROGRAM IN MEMORY. THIS IS BECAUSE BASIC TAKES TOO LONG
WORKING OUT THE ADDRESSES OF THE VARIABLES, AND MEANWHILE THE
LINE-FEED ARRIVES. NORMALLY BASIC IGNORES LINE-FEEDS, BUT IT
IS PREOCCUPIED AND DOESN'T SEE IT SLIP BY.

	THERE ARE TWO SOLUTIONS TO THIS PROBLEM: EITHER USE
FREDI AND EDIT THEM OUT (THEY APPEAR IN RED, SO THIS IS EASY);
OR WRITE A PROGRAM ON THE OTHER MACHINE THAT WILL WAIT A WHILE
AFTER A LINE IS SENT BETWEEN SENDING THE CARRIAGE-RETURN AND
LINE-FEED. THIS CAN BE DONE EASILY IN FORTRAN AND PASCAL.
BETTER STILL, DO NOT SEND A LINE-FEED (SEND NULLS IF NECESSARY).
HOWEVER, THIS MAY REQUIRE AN ASSEMBLY LANGUAGE PROGRAM ON THE
OTHER MACHINE.

	THE PROGRAM ILLUSTRATES THE USE OF THE USER INPUT FLAG,
NUMBER 31 AND THE BASIC INPUT FLAG, NUMBER 23. THE ASSEMBLY
LANGUAGE ROUTINE IS AS FOLLOWS:

   XFER: MOV A,E     ;CHR IS IN E
         ANI 7FH     ;MASK OUT PARITY
         MOV E,A     ;SAVE THE CHR
         LXI H,FLAG  ;GET BASIC INPUT FLAG
         JMP 398CH   ;INDEX INTO I/O JUMP TABLE
   FLAG: DB  23

	IT MASKS OUT THE PARITY BIT ON CHARACTERS RECEIVED
FROM THE RS-232 PORT, AND CALLS A ROUTINE INSIDE FCS. THE
ADDRESS OF THIS ROUTINE IS FOR VERSION 6.78 OF FCS, AND I DO
NOT KNOW THE EQUIVALENT FOR VERSION 8.79, BUT I SUSPECT IT IS
THE DIFFERENT. OTHER "FILTERING" CAN BE DONE BY XFER, SUCH AS
REMOVING CONTROL CHARACTERS. (IF THE OTHER MACHINE IS A CCII
YOU WILL LOSE COLOR CODES IF YOU CHOP OUT ALL CONTROL CHAR-
ACTERS.) ALSO, IF THE HOST (SENDING) COMPUTER SENDS ONLY
ZEROS FOR PARITY BITS, THEN THIS ASSEMBLY LANGUAGE IS NOT
NECESSARY, AND THE WHOLE ROUTINE REDUCES TO THREE LINES -
65170, 65180, AND 65190 - WITH THE 31 REPLACED BY 23 IN
LINE 65190. HOWEVER, NEITHER OF THE MACHINES I USE ARE THIS
CO-OPERATIVE.

	LINES 65100 TO 65140 ARE THE USUAL METHOD OF LOADING
A MACHINE CODE ROUTINE. IN LINE 65160 A JUMP TO XFER IS SET
UP AT THE USER INPUT FLAG JUMP VECTOR, 33221 (81C5H). THEN
INTERRUPTS ARE ENABLED, THE BAUD RATE SET AND OUTPUT IS
DIRECTED TO THE RS-232 PORT IN LINE 65180. NOTE THE USE OF
'CHR$(13);' TO OUTPUT A CARRIAGE RETURN, BUT NO LINE-FEED,
AFTER THE COMMAND IS SENT IN LINE 65190. PRINTED OUTPUT IS
RETURNED TO THE DISPLAY, THE INPUT FROM THE RS-232 PORT IS
DIRECTED THROUGH THE USER INPUT VECTOR, AND THE PROGRAM EXITS.
BASIC IS NOW IN THE NORMAL "READY" MODE, AND THE TRANSFER
TAKES PLACE VIA INTERRUPTS.

	THE END OF BASIC GETS MOVED BACK EACH TIME THE PROGRAM
IS RUN, SO IT IS NECESSARY TO RE-INITIALIZE BASIC BETWEEN
SUCCESSIVE FILE TRANSFERS. IN FACT, YOU CAN MERGE TWO FILES
(EVEN WITH SOME LINE NUMBERS IN COMMON - THE SECOND FILE WINS)
BY TRANSFERRING THEM ONE AFTER THE OTHER WITHOUT RE-
INITALIZING BASIC.

	ALSO, THE TRANSFER ROUTINE WILL BE TACKED ON
THE END OF THE TRANSFERRED FILE, UNLESS THERE ARE DUPLICATE
LINE NUMBERS IN THE FILE (65000 AND UP). IT IS ALRIGHT TO
HAVE DUPLICATE LINE NUMBERS, BECAUSE THE PROGRAM'S WORK IS DONE
AS SOON AS IT HAS EXECUTED, WHICH IS BEFORE THE TRANSFER
STARTS I.E. THE PROGRAM ONLY LOADS AN ASSEMBLY LANGUAGE
INTERRUPT ROUTINE, BUT DOES NOT PERFORM THE ACTUAL TRANSFER.

	PROBABLY THE HARDEST PART OF THE WHOLE THING
WILL BE WORKING OUT A COMMAND LINE TO INITIATE THE TRANSFER.
OF COURSE, YOU MAY ALSO HAVE TO TRANSLATE FROM THE DIALECT
OF BASIC USED ON THE OTHER MACHINE INTO COMPUCOLOR BASIC.

	THERE A