pEBOOT COMCPDOS BAS#uCPDOS DOC)kCPMXFER COM@READ ME R`/ >w2 !`P!`3(&"* <3>=13 sector, =16 sector: $` L <$<&<ʊ X`H +HP) +V '&=Iɪ꽌ɵ (I٠**<%<(=о<Y<<Y<&,YЍ`J>J><& <&3*LSL- 10 HIMEM: 8190 20 REM **************************** 30 REM * CP/M -> APPLE DOS CONV. * 40 REM **************************** 50 REM * BY * 60 REM * ALEX MALUTA * 70 REM * 12-31-81 * 80 REM **************************** 90 REM * DOCUMENTED IN CPDOS.DOC * 100 REM **************************** 110 REM * NEEDS: 48K,APPLESOFT * 120 REM * 2 DRIVES,CP/M * 130 REM **************************** 140 GOTO 830 150 REM FOUND ACTIVE MATCH 160 REM GET DATA 170 EX = PEEK (I + 12):SE = SE + PEEK (I + 15) 180 FOR ZZ = 0 TO 15 190 S = EX * 16 + ZZ: IF S > SG THEN SG = S 200 S(S) = PEEK (I + 16 + ZZ) 210 NEXT : RETURN 220 REM ======================= 230 REM GET NEW SECTOR/TRACK 240 REM POINTED BY GROUP IN S(I) 250 TR = INT (S(I) / 4) + 3 260 O = (S(I) / 4 - INT (S(I) / 4)) * 4 270 X = O * 4 + N 280 DATA 0,6,12,3,9,15,14,5,11,2,8,7,13,4,10,1 290 RESTORE 300 FOR II = 0 TO X: READ SC: NEXT : RETURN 310 REM ======================= 320 REM CALL RWTS SUBROUTINE 330 POKE SS + 2,0 340 POKE SS,SL: POKE SS + 1,DR: POKE SS + 3,TR: POKE SS + 4,SC: POKE SS + 8,BH: POKE SS + 7,BL: POKE SS + 11,CM: CALL RWTS: RETURN 350 REM ======================= 360 REM LOAD DIRECTORY FROM CP/M DISK 370 B1 = B - 256:TR = 3 380 GOTO 400 390 B1 = B1 + 256:BH = INT (B1 / 256):BL = B1 - (BH * 256): GOSUB 320: RETURN 400 SC = 0: GOSUB 390 410 SC = 6: GOSUB 390 420 SC = 12: GOSUB 390 430 SC = 3: GOSUB 390 440 SC = 9: GOSUB 390 450 SC = 15: GOSUB 390 460 SC = 14: GOSUB 390 470 SC = 5: GOSUB 390 480 REM ======================= 490 REM SEARCH FOR FILENAME 500 C = 0 510 FOR I = B TO B + (256 * 8) STEP 32 520 IF PEEK (I) < > 0 THEN 580: REM FILE INACTIVE 530 CS$ = "":CF$ = "" 540 FOR J = 1 TO LEN (F$):CF$ = CF$ + CHR$ ( PEEK (I + J)): NEXT 550 FOR J = 1 TO LEN (S$):CS$ = CS$ + CHR$ ( PEEK (I + J + 8)): NEXT : REM IS 9 BUT J IS 1 XTRA 560 PRINT CF$"."CS$ 570 IF CF$ = F$ AND CS$ = S$ THEN C = 1: GOSUB 150 580 NEXT 590 IF C = 0 THEN PRINT "NO SUCH FILENAME EXISTS": END 600 REM ======================= 610 REM LOAD CP/M FILE INTO MEMORY 620 B1 = B 630 REM CLEAR MEMORY (2000:00 N 2001<2000.95FEM) 640 I = 0: REM CLEAR TO 0 650 POKE 8192,I: POKE 67,32: POKE 66,1: POKE 61,32: POKE 60,0: POKE 63,149: POKE 62,254: CALL R2: REM EXECUTE MEMORY MOVE 660 SE = SE / 2 670 FOR I = 0 TO SG 680 FOR N = 0 TO 3: IF SE < = 0 THEN N = 3:I = SG: GOTO 720 690 GOSUB 230:BH = INT (B1 / 256):BL = B1 - (BH * 256) 700 PRINT TR,SC:SE = SE - 1 710 GOSUB 320:B1 = B1 + 256: IF B1 > = MM THEN : REM OUT OF MEMORY 720 NEXT : NEXT 730 REM ======================= 740 REM SAVE ON APPLE DISK 750 REM SET MSB ON DATA HIGH AND 760 REM CONVERT ANY LINE FEEDS TO SPACES 770 POKE 811,B1 / 256: CALL R3 780 IF SE / 2 < > INT (SE / 2) THEN B1 = B1 - 128: REM CHOP OFF IF LAST SECTOR WAS 1/2 SECTOR 790 A$ = CHR$ (4) + "BSAVE" + F$ + "." + S$ + ",A" + STR$ (B) + ",L" + STR$ (B1 - B + 1) + ",D2" 800 PRINT 810 PRINT A$: END 820 REM ======================= 830 REM SET UP 840 DIM S(32): FOR I = 0 TO 32:S(I) = 0: NEXT : REM ARRAY FOR WHICH CP/M SECTORS TO PULL 850 B = 8192: REM BEGGINNING OF BUFFER 860 MM = 38400!: REM TOP OF BUFFER - BOTTOM OF DOS 870 SL = 6 * 16: REM SLOT OF DISK DRIVE 880 CM = 1:DR = 1: REM READ CP/M IN DRIVE 1 890 SS = 47081!: REM ADDRESS OF IOB 900 FOR I = 1 TO 16: READ A: NEXT : REM GET RID OF LOW DATA 910 REM POKE MOVE, RWTS, INCREMENT ROUTINES 920 DATA 32,44,254,96,169,183,160,232,32,217,3,96,0,173,0,32,201,10,240,27,9,128,141,0,32,238,14,3,238,23,3,208,236,238,15,3,238,24,3,173,24,3,201,150,144,223,96,169,160,76,22,3,0 930 FOR I = 768 TO 820: READ A: POKE I,A: NEXT 940 R2 = 768: REM MEMORY MOVE ADDRESS 950 RWTS = 772: REM RWTS ADDRESS 960 R3 = 781: REM INCREMENT BUFFER ADDRESS 970 REM INPUT FILENAME AND SPLIT INTO 2 PARTS 980 HOME : VTAB 3: PRINT " CP/M -> DOS FILE CONVERTER": VTAB 7 990 INPUT "WHAT CP/M FILE ->";F$: FOR I = 1 TO LEN (F$): IF MID$ (F$,I,1) = "." THEN FF$ = LEFT$ (F$,I - 1):S$ = RIGHT$ (F$, LEN (F$) - I):F$ = FF$ 1000 NEXT 1010 HOME : PRINT "PLACE CP/M DISK IN DRIVE 1" 1020 PRINT : PRINT "PLACE APPLE DOS DISK IN DRIVE 2" 1030 GET R$ 1040 GOTO 360 1050 END "PLACE CP/M DISK IN DRIVE 1" 1020 PRINT : PRINTCPDOS.DOC 12/31/81 BY ALEX MALUTA CPDOS IS A UTILITY THAT ALLOWS TRANSFERRING FILES FROM AN APPLE CP/M DISK TO A APPLE DOS 3.3 DISK. THE PROGRAM RUNS UNDER APPLESOFT (ROM) AND DOS 3.3. IT USES THE RWTS SUBROUTINE TO SEARCH THE CP/M DISK FOR THE DESIRED FILE, DUMP IT SECTOR BY SECTOR INTO MEMORY, AND THEN SAVE IT TO A DOS DISK. IT IS PRESENTLY CONFIGURED FOR THE FOLLOWING SETUP: 48K APPLE II 2 DRIVES IN SLOT 6 APPLESOFT IN ROM IT WILL TRANSFER ANY TYPE OF CP/M FILE (AS LONG AS IT IS NO LONGER THAN 30208K BYTES LONG), BY TREATING IT PURELY AS DATA. THEREFORE, IT IS POSSIBLE TO TRANSFER .BAS, .HEX .ASM, .COM, ETC. FILES. THE PROGRAM WAS GENERALLY DESIGNED TO TRANSFER .BAS FILES TO APPLESOFT, SO IT AUTOMATICALLY SETS THE MSB. ALSO, SINCE LINE FEEDS ARE GENERALLY NOT NEEDED BY APPLESOFT, THIS PROGRAM WILL CHANGE THE SEQUENCE OF CP/M TO . THE PROGRAM CREATES A BINARY FILE ON THE APPLE DOS DISK. THIS FILE CAN THEN BE MANIPULATED USING REGULAR DOS. GETTING CPDOS TO RUN IN APPLESOFT : THE FILE CPDOS.BAS IS WRITTEN IN APPLESOFT. IT WILL NOT WORK UNDER MBASIC OR GBASIC. THEREFORE, IT ITSELF MUST BE BROUGHT DOWN TO APPLE DOS. THERE ARE TWO WAYS OF DOING THIS: 1] TRANSFER NORMALLY FROM THIS SYSTEM TO YOUR APPLE CP/M DISK USING THE MODEM/XMODEM TRANSFER. PRINT A HARDCOPY LISTING OF THE PROGRAM, AND RETYPE IT IN MANUALLY UNDER APPLESOFT -OR- 2] IF YOU HAVE A DATA CAPTURE PROGRAM IN APPLESOFT, LIST CPDOS AT THIS END ('TYPE CPDOS.BAS'), CAPTURE IT TO MEMORY AT YOUR END, THEN SAVE NORMALLY TO DISK. AN EXAMPLE OF TAKING AN APPLE CP/M BASIC PROGRAM AND DOWNLOADING TO A DOS BASIC PROGRAM: 1] RUN THE CPDOS PROGRAM 2] YOU SHOULD NOW HAVE A BINARY FILE ON THE APPLE DOS DISK THAT CONTAINS ALL THE DATA OF THE CP/M PROGRAM. 3] CONVERT THE BINARY FILE TO A TEXTFILE. (THE EASIEST METHOD OF DOING THIS IS TO RUN A SHORT MACH. LANG. PROGRAM FOUND ON PAGE A-20 OF 'BENEATH APPLE DOS' BY DON WORTH AND PIETER LECHNER -- }I WOULD HAVE INCLUDED IT IN THE PROGRAM BUT I THINK THE ROUTINE IS COPYRIGHTED) 4] YOU NOW HAVE A TEXTFILE. IF ALL THE COMMANDS IN THE CP/M VERSION MAKE SENSE TO APPLESOFT, YOU CAN SIMPLY 'EXEC' THE TEXTFILE, AND YOU WILL HAVE THE PROGRAM IN APPLESOFT. IF THERE ARE INVALID EXPRESSIONS IN THE FILE, YOU CAN USE EDITORS SUCH AS THE DOS TOOLKIT TO CHANGE THEM. IF YOU EXEC A FILE WITH SYNTAX ERRORS, APPLESOFT WILL KEEP THOSE LINES THAT MAKE SENSE, AND THROW OUT THE OTHERS. NOTE: THIS PROGRAM IS IN ITS RUDIMENTARY STAGES. WITH A LITTLE MODIFICATION, IT COULD BE MADE TO ACCEPT LARGER FILES, DO SINGLE DRIVE COPIES, FILTER CERTAIN DATA, ETC. IF YOU HAVE ANY COMMENTS OR SUGGESTIONS, LEAVE ME A MESSAGE ON THE BBS. THANK YOU. A, ETC. IF YOU HAVE ANY COMMENTS OR SUGGESTIONS, LEAVE ME A MESSAGE ON TP!!3~( _#!"*>w2 +++ CPMXFER transfer procedure +++ First boot an Apple DOS 3.3 disk, and save CPMXFER by typing: BSAVE CPMXFER,A$6000,L$6F0 Next, enter the following program line in either Integer BASIC or Applesoft: 10 PRINT "<^D>BRUN CPMXFER,A$900" This should be saved and used to run the CPMXFER program. Insert DOS 3.3 disk and hit RETURN: LLMop 8 T*U`Ȍ X X3 gɃL L L + ɺ  =  L ɺ ȢΥ .- . - /`hh 8T͡ q L@ O PQ m 9 9)-DH HhiͣGPL# ΣL   L@ JQjPPQ L@ Ȍ c PTQUQ мTUVWRSΞ  J " RiRSPQPVWVVWέ L  PQЕ L@ CR8骨SH H ' T . 1hh Ly  ̦`  T y  T L <L `VWV ɚɊ VWVRWSڎ` ɍɠɉ )`  4 < L@  O m CDJ i 9  9 L L@   `) /  8 0(`(8` JJJJi0>i0A`hhL{ ɍɠɺ 8A qL@ H)ih )Iia`H) hJJi`RȥS ȩ T `HȭȩhȽ    L ) , ` R0hh bL@ hheHH𪈱 Ȋ` H h`HJJJJ h) iiL , L     w *********************** * * * CP/M TO APPLE DOS * * FILE TRANSFER * * * ***********************OPEN CLOSEWRITEBSAVE,A,LCATALO,S6,D1 FILE LENGTH:  FILE NOT FOUN COMMAND ERRO INVALID DRIV FILE TOO LARG EMPTY FILAVE,A,LCATALO,S6,D1 FILE LENGTH:  FILE NOT FOUN 1. CPDOS is a file transfer utility that runs under APPLE-DOS and allows transfer of files from CP/M format to DOS format disks. 2. CPMXFER is a better CP/M to DOS transfer utility that was taken from a Microsoft ap. note and runs under CP/M. 3. BOOT is another Microsoft utility that allows re-booting of APPLEDOS from CP/M without having to power down an APPLE. Mark Montgomery