Hello everybody! at 16/12/99 18:50, I'm optimux@yahoo.com, and I had a Amstrad CPC-464 since 1986. I'm surprised about the amount of codes, files and emulators that have been uploaded on Internet Web sites recently. Over all, the quantity of games that you can download in few minutes from a server. That's Great!. I have some games; 130 for CPC464, all in tapes and i thought about the possibility of transmit some games from CPC to PC. I read carefully all the game lists in most servers, most games were uploaded already. But some programs, tools and games aren't in servers. First Part: How do it? ---------------------------------------------------------------------------- I try to find a system for transfer codes from CPC to PC. First we have the Marco Vieth option with his parallel interface and the diagrams by David Chapeau. Simply very complex to elaborate; the diagrams seems a labyrinth and wires and connectors aren't within reach of whoever. And over all, i can not read SPEEDLOCK protected files or SPECIAL AMSDOS HEADERS with CPC2PC.BAS protocol. It's doesn't work. I found a program called "AIFF decoder v1.3" by Pierre Guerrier, a tool for retrieving data from Amstrad CPC tapes, C sources included. The biggest problem was the quality. AIFF Decoder works with the LINE-IN of your sound card, the reader tape system can be a HIFI or a walkman, but the CPC stream must be in SPEED WRITE 0 or 1. Again SPEELOCK or another protection can not be read. But, I had a little advantage, my CPC. Some time ago, i did a operation to my CPC TAPE hardware which consists in supply an external audio recording and reading source system to the CPC tape hardware. Plans were in an AMSTRAD ACTION and seems elemental; two welds, a couple of wires and a stereo DIM identical as the CPC 6128 cable kit carries. The result: i can load and save programs from the CPC with a external HIFI. Yes!. S-A-V-E. I can save programs with an MONO stereo jack 100% free of noises and digitalize the CPC tape signal with the soundcard MICROPHONE input; It's means that all records will be perfect at SPEED write 1 and 0. It's important because the signal from a HIFI or a Walkman can't be modulated to clean all noises, but the CPC tape hardware signal is simply perfect. Noises are kaput!. And now what?. AIFF Decoder is some peculiar; you execute the program with the audio AIFF file in the command line. So, files are written in AMSDOS TAPE format that can be loaded with CPCEMU. I used the CoolEdit PRO to read the MICROPHONE mono analog signal (selected by me) and capture the CPC tape HI-LOW bit stream that seems a square analog signal. IS VERY IMPORTANT to know that some records (depending of your audio source) can send an polarized signal; an inverted signal that MUST be INVERTED digitally in the AUDIO RECORDING program to can be read by AIFF Decoder (see text info in AiffDecd.zip). My first try is an old game called "REX HARD" which isn't in any sever. It isn't!. So I use de AIFF decoder and i get the REXHARD.BIN; the initial and last file block of its loader, first I load it with the copy utility AMSKEY and I save it them at SPEED WRITE 1, directly to MICRO audiocard input at 22KHz, 8 bits by sample, mono (I can see the square waves and read in waveform window some binary codes 0101010101...). Changing the polarity with the INVERT option of CoolEditPRO and I save it as AIFF format without compression. I have in PC the file; this file as BINARY PROTECTED and rest game code is a AMSDOS stream without HEADER, to load all this code i must have the SIZE of the stream and the according BYTE (first byte before header). From the CPC was not easy deprotect the BINARY PROTECTED file, but on PC is another history (see the text in "optimuxT.zip", in file "Como desproteger un fichero CPC.txt" in Spanish). Editing the file with an HEX editor, and write 3 bytes. Binary protected is now Binary ONLY. Before I disassemble the file with the "MONA 3.1" (I have a GENA and MONA mini manual of an old magazine) and I print the code to analyse: only 256 bytes of size; easy. To read more text do step to Third Part: The AMSDOS mini tape protection Second Part: The Z80 code (Zilog 8086 code) ---------------------------------------------------------------------------- This is the ASM code from "REX HARD.BIN" original tape protected binary loader BLOCK 0, generated with MONA3 by optimux@yahoo.com at 19/11/99 10:59. Original source loads in memory at &0100 and have entry point at same direction. Code has been loaded at &2000 by force with 256 bytes of size: 2000 ED73DAC7 LD (#C7DA),SP 2004 2ADAC7 LD HL,(#C7DA) 2007 2B DEC HL 2008 F9 LD SP,HL ; Stack pointer changed 2009 AF XOR A 200A CD0EBC CALL #BC0E ; Change MODE A=0 200D 216801 LD HL,#0168 ; ---> #2068 Colour DATA for MODE 0 2010 4E LD C,(HL) 2011 23 INC HL 2012 41 LD B,C 2013 E5 PUSH HL 2014 CD38BC CALL #BC38 ; Force screen BORDER 2017 E1 POP HL 2018 0610 LD B,#10 201A C5 L201A PUSH BC 201B 3E10 LD A,#10 201D 90 SUB B 201E 4E LD C,(HL) 201F 41 LD B,C 2020 23 INC HL 2021 E5 PUSH HL 2022 CD32BC CALL #BC32 ; Force INK's with palete at &2068 2025 E1 POP HL 2026 C1 POP BC 2027 10F1 DJNZ L201A 2029 3E3F LD A,#3F 202B 218500 LD HL,#0085 202E CD68BC CALL #BC68 ; Force TAPE Speed 2031 3E34 LD A,#34 ;Force BYTE of adjust of Sinchrony at"#34" 2033 2100C0 LD HL,#C000 ;(small protection) Screen at &c000 2036 110040 LD DE,#4000 2039 CDA1BC CALL #BCA1 ; TAPE LOAD without HEADER (SCREEN) 203C 3E10 LD A,#10 ; Force BYTE fo adjust 203E 21CC1F LD HL,#1FCC ; (small system TAPE protection) 2041 11A673 LD DE,#73A6 2044 CDA1BC CALL #BCA1 ; TAPE LOAD without HEADER (MAIN CODE) 2047 0610 LD B,#10 2049 C5 L2049 PUSH BC 204A 78 LD A,B 204B 3D DEC A 204C 010000 LD BC,#0000 204F CD32BC CALL #BC32 ; Clear INK's to BLACK Sreen 2052 C1 POP BC ; ( Screen area is going to 2053 10F4 DJNZ L2049 ; be use as Code space) 2055 3E01 LD A,#01 2057 CD0EBC CALL #BC0E ; Set MODE 1 (GAME MODE) 205A 3E23 LD A,#23 205C 2100C0 LD HL,#C000 ;(MUSIC and final CODE over 205F 118C3C LD DE,#3C8C ; SCREEN memory to save space) 2062 CDA1BC CALL #BCA1 ; TAPE LOAD without HEADER 2065 C300C0 JP #C000 ; Entry point at #C000 to RUN "Rex Hard" 2068 00 ; Ink 0,0 ; Program END and BEGINING of 2069 00 ; Ink 1,0 ; PALETE COLOUR DATA in MODE 0 206A 01 ; Ink 2,1 206B 02 ; Ink 3,2 206C 03 ; etc... 206D 06 206E 09 206F 0A 2070 0D 2071 0F 2072 05 2073 1A 2074 02 2075 10 2076 0A 2077 03 2078 06 ; Ink 16,6 and End of INK DATA 2079 00 207A 00 NOP 207B 00 NOP 207C 00 NOP 207D 00 NOP 207E 00 NOP 207F 00 NOP 2080 00 NOP ... and more NOP's until &2100 - NOP == No OPeration Third Part: The AMSDOS mini tape protection ---------------------------------------------------------------------------- Well, we have three codes: Start Size Adjust The Meaning ----------------------------------- #C000 #4000 #34 Screen dump for presentation #1FCC #73A6 #10 Main game code #C000 #3C8C #23 MUSIC and final CODE over screen memory to save space And the final entry point is #C000, the screen!, very singular. Ok, Main code start higher than Locomitive BASIC ROM copy, and I have space to a buffer to load whatever opened file (2048 bytes) on top of #1FCC. So i write in CPC a simple BASIC-ASM program: 1 ' TAPE binary loader without ahead AMSDOS data TO normal AMSDOS FILE 2 ' Change DATA & SAVE parms for make your personal and adjusted copy 3 ' 4 CLEAR:DATA 3E,10,21,CC,1F,11,A6,73,CD,A1,BC,C9:SPEED WRITE 1:FOR n=150 TO 161:READ A$:POKE n,VAL("&"+a$):NEXT:MEMORY 8000:CALL 150 5 a$=INKEY$:IF a$="" THEN GOTO 5 6 IF a$=" " THEN SAVE "!rexhard2.bin",b,&1FCC,&73A6 ELSE GOTO 5 What's the "DATA 3E,10,21,CC,1F,11,A6,73,CD,A1,BC,C9" AMS code: 3E,10 -----> LD A,#10 Adjust byte 21,CC,1F --> LD HL,#1FCC Entry 11,A6,73 --> LD DE,#73A6 Size CD,A1,BC --> CALL #BCA1 AMSDOS load file without header (I supply it now) c9 --------> RETURN Back to Basic First the "CALL 150", this ASM routine is in a small space lower than BASIC, load the STREAM of the game,so when has been loaded, i save with <>, i capture the signal in PC MICRO input. Then equal with another parms for screen dump and last game code. Invert the wave and save as AIFF and DECODE(r) it. The outcoming: three TAPE files for CPC emu. I repeat T-A-P-E files. I want to pass all these TAPE files to a DSK (Marco Vieth) formatted disc, BUT THERE ISN'T ANY PROGRAM TO DO IT. There isn't a program to translate EMUL-ATED TAPE binary files to a EMUL-ATED DISC file. I'm totally FUCKED. Fourth and latest Part: The TRANSFER.BAS TAPE<->DSK ---------------------------------------------------------------------------- OK, everybody but, I'm the best programmer over the world that never exist!, yeaah!. All joking aside, I did it. I have books about the CPC464 and CPC6128 TAPE and DISC RAM-ROM AMSDOS routines and entry points and buffers of data information. I programmed a short BASIC program which load a single binary tape file and save it as disc file in a DSK disc OVER THE EMULATOR, 90% of this program reads and writes the AMSDOS data buffers and information points, it has limitations but did work ok to copy the Rex Hard; you can see and use it, It's in UTIL\ folder as "optimux.zip" which contains the "optimux.dsk" main copy utilities, the specific file is "TRASNFER.BAS". Now, i have the files in a previous formatted DSK disc. Only remain the BASIC loader for the game which is very easy to write it: 10 ' Very short basic loader for Rex Hard 20 MODE 0:MEMORY &1FCC:LOAD"!REXHARD1.SCR",&C000:LOAD"!REXHARD2.BIN",&1FCC 30 MODE 1:LOAD"!REXHARD3.BIN",&C000:CALL &C000: ' And END, at last! And game in running NOW!..jejeejjeee. Ok, you can find "RexHard.ZiP" with POKES in the CPC GAME servers (Adventure Graphic section). I transferred more games and utilities from CPC to PC whose can be downloaded as: Index of UTIL/ --------------------------------------- amskey .zip AMSKEY - INTERLOCK SERVICES LTD - Copy TAPE Files cyclone2.zip RSX SYCLONE II - PRIDE UTILITIES - 1985 - English-Spanish EWP-464 .zip Easy Word Processor v1.52 - JUNIPER COMPUTING - for CPC464 melbourn.zip MELBOURNE DRAW , The AMSTRAD CPC464 graphics program! optmxbas.zip 46 BASIC programs of graphics,compression & mini utilities optimux .zip OPTIMUX DISC - Copying Utilities and Programs rembrand.zip REMBRANDT SCREEN DESIGNER v1.0 by BEEBUGSOFT at 1985 index .txt This Index Index of GAME/ --------------------------------------- amsoft4 .zip AMSOFT CPC464 SPANISH OWNERS PACK (some games) Leyend_T.zip Leyend - Text Adventure Game for CPC464 TAPE Emulators pplay-SP.zip PowerPlay, The Game of the GODS (with Spanish QUIZ files) RexHard .ZiP REX HARD en La Busca del Sol Dorado - Spanish Version Zaxxon .ZiP ZAXXON alias ZAXX & Greettings from FLASH CRACKWARE!!! index .txt This Index Index of DOCS/ --------------------------------------- AiffDecd.zip About AIFF Decoder for CPC.txt optimuxT.zip Optimux Text Docs files about CPC ( in SPANISH!! ) optimuxP.zip Optimux Mini Poke DataBase saboter2.zip The ultimate MAP of Sabouteur Ninja II index .txt This Index ...and bit more... A thousand of pardons by my horrible and very very poor english. for any questions send to optimux@yahoo.com THIS IS A SALUTATION FOR ALL CPC FANS OVER THE PLANET EARTH! THIS IS MY MANIFESTO!