DWB 3 XL.ML3 P 861 XLINK.DOC S 10706 XLINK 2.1A P 6656 x, ] = ) = ) = = = = X ` L2 , Iݭ ܢ?`Iݭ `x, ] = ) = ʆX` ? ߄ ` ? `@x8 GE)@? ܥI@, L ? (6@))  L )_L мд `L ʆL  G, ܭ ݩ, ܅)X ` L V ?4 L, @))#)?ЭХ `)  L, )_L, ? ` L F  L @) L  `L  @L O ` ` ? $@ L' L'`)L'[)? п ` - 0L `` ART - RACTICAL XAMPLE OF ATA ORTABILITY IS A SHORT 7 PROGRAM FOR USE ON THE -128 WITH A SINGLE 1571 DRIVE. T ALLOWS YOU TO READ A FILE INTO A 45 K BUFFER FROM ANY ONE OF THE FOLLOWING SEVEN DISK FORMATS: - - WITH <> CONVERSION - - WITH SCREEN CODE <> CONVERSION -128 / SINGLE SIDED -128 / DOUBLE SIDED - DOUBLE SIDED, 9 SECTORS/TRACK HE BUFFER CAN THEN BE WRITTEN TO ANOTHER DISK IN ANY OF THE SAME LIST OF FORMATS OR TO A PRINTER. (T SHOULD BE NOTED THAT THE - DOUBLE SIDED FORMAT IS THE SAME AS THE "-" WHICH IS SUPPORTED BY -128 / MODE. HE LATTER FORMAT IS USED BY /-86 WHICH IS THE 16 BIT VERSION OF / DESIGNED TO RUN ON THE - INSTEAD OF -. - AND /-86 ARE NOT COMPATIBLE.) IS SIMPLE TO USE, JUST FOLLOW THE PROMPTS ON THE SCREEN. NE WORD OF CAUTION, HOWEVER. ECAUSE THE 1571 IS NOT A TRUE - DISK DRIVE, NEVER WRITE - FILES TO AN ORIGINAL, IRREPLACEABLE DISK. LAY IT SAFE, ALWAYS USE SCRATCH DISKS FOR WRITING FILES. (LTHOUGH HAVE HAD NO PROBLEMS WITH DISKS FROM THREE DIFFERENT -S AND TWO COMPATIBLES, THE POSSIBILITY DOES EXIST FOR MIS-MATCHED SECTOR TIMING, ETC. HIS COULD HOPELESSLY CORRUPT THE DISK BEING WRITTEN TO.) USES BURST MODE ON THE 1571 TO READ AND WRITE - AND / FILES, CONSEQUENTLY IT IS QUITE FAST. ( DETAILED DESCRIPTION OF 1571 BURST MODE AND HOW TO USE IT IS PRESENTED IN A SERIES OF ARTICLES BY THIS AUTHOR IN MAGAZINE, STARTING IN AY 1986.) TYPICAL CONVERSION OF A 16K (65 BLOCK) TEXT FILE FROM TO - TAKES ABOUT 65 SECONDS, INCLUDING ABOUT 25 SECONDS OF "OVERHEAD" REQUIRED TO DECODE AND RECODE THE - DIRECTORY AND FILE ALLOCATION TABLE (). OTICE THAT SPECIFY THE CONVERSION OF A TEXT FILE. HIS BRINGS UP A GENERAL CAVEAT: PROGRAM FILES WRITTEN TO RUN UNDER - (I.E. WITH A FILE TYPE OF . OR .) WILL NOT WORK IN -128 MODE OR / MODE (THE / EXECUTABLE FILE ALSO HAS A FILE TYPE OF ., BUT THE TWO ARE NOT INTERCHANGEABLE) OR VICE VERSA. OWEVER, IF YOU DOWNLOAD A / PROGRAM TO A - DISK AND THEN CONVERT THE FILE TO / FORMAT, THE PROGRAM WILL WORK IN / MODE ON THE -128. HIS IS USEFUL, FOR EXAMPLE, IF YOU DO NOT HAVE A MODEM ON YOUR -128 BUT HAVE ACCESS TO ONE ON AN - WHERE YOU WORK. HE SAME GOES FOR DOWNLOADING TO A -128 PROGRAM TO - THEN CONVERTING TO A FILE OR DOWNLOADING TO FORMAT IN -128 MODE AND THEN CONVERTING TO / FORMAT. (HE ORIGINAL / SYSTEM FILES FOR THE -128 DID NOT SUPPORT A MODEM. HE UPGRADED VERSION NOW DOES.) EXT AND DATA FILES, ON THE OTHER HAND, FROM ONE MACHINE CAN USUALLY BE USED WITHOUT TROUBLE ON THE OTHER. EXT FILES TRANSFERRED USING SCREEN CODE FILES MAY REQUIRE REFORMATTING ON THE TARGET WORD PROCESSOR. CREEN CODE FILES WRITTEN BY MAY NOT WORK WITH ALL -128 WORD PROCESSORS. OME WP'S, SUCH AS APERBACK RITER 128, INCLUDE A HEADER BLOCK AT THE BEGINNING OF THE FILE. HE HEADER CONTAINS INFO ON THE FILE CHARACTERISTICS SUCH AS MARGINS ETC. F IT IS NOT PRESENT, THE WP MAY NOT BE ABLE TO READ THE FILE CORRECTLY. HESE WP'S CAN USUALLY READ FILES AS WELL, HOWEVER, SO IT IS BETTER TO WRITE A FILE WITH FOR USE ON MOST WP'S. CAN READ TEXT FILES WITH HEADERS, BUT YOU MUST DELETE THE HEADER BLOCK WITH THE TARGET WP. 1 IS A LOADER FOR THE MACHINE LANGUAGE PORTION OF THE PROGRAM. T WILL CREATE A PROGRAM FILE NAMED ".3" WHICH IS AUTOMATICALLY LOADED BY THE MAIN PROGRAM. HE ROUTINE, WHICH IS LOCATED IN THE CASSETTE AND 232 BUFFERS, CONTAINS SEVERAL ENTRY POINTS. HESE ARE: HEX DEC FUNCTION 0B69 2921 BURST SECTOR READ (FOR / AND -) 0B9C 2972 READ OR FILE, NO CONVERT 0BD0 3024 WRITE , FILE OR PRINTER, NO CONVERT 0C02 3074 BURST SECTOR WRITE (FOR / AND -) 0C45 3141 WRITE OR PRINTER , CONVERT TO 0CE0 3296 READ FILE, CONVERT TO 0D7D 3453 READ FILE, CONVERT SCREEN CODE TO 0DDF 3551 WRITE FILE, CONVERT TO SCREEN F YOU ARE INTERESTED, YOU CAN DISASSEMBLE THE MACHINE LANGUAGE WITH THE -128'S BUILT IN MONITOR. HE BURST MODE READ AND WRITE ROUTINES ARE SIMILAR TO THOSE DESCRIBED IN PARTS 2 AND 3 OF THE SERIES. 2 IS THE MAIN PROGRAM. S YOU CAN SEE, THERE ARE NO STATEMENTS. ESIDE THE FACT THAT DON'T LIKE S (THEY CLUTTER UP THE LISTING AND SERVE NO REAL PURPOSE ANYWAY), THEY ALSO TAKE UP A CONSIDERABLE AMOUNT OF . N TRYING TO MAXIMIZE THE BUFFER SPACE, CHOSE TO LEAVE THEM OUT. OR THE BENEFIT OF THOSE WHO ARE INTERESTED THE FOLLOWING TABLE SUMMARIZES ITS MAIN PARTS. LINE FUNCTION 10-80 OPENING DISPLAY, DEFAULT PARAMETERS, ETC. 90-120 CALCULATE / SECTOR FILLING TABLE 130-150 =START OF DIRECTORY BUFFER, =START OF DATA BUFFER IN BANK 0 () AND $() ARE THE SUPPORTED DEVICES AND FILE TYPES. 160 MAIN MENU SELECT 170-200 READ OR FILE 210-240 WRITE OR FILE OR PRINTER 250-300 READ / FILE 310-380 WRITE / FILE 390 READ DIRECTORY 400-420 READ / DIRECTORY 440-450 READ A SPECIFIC / SECTOR 460-470 WRITE A SPECIFIC / SECTOR 480-540 ANALYZE / DIRECTORY AND 550-560 EXIT AND ERROR ROUTINES 570 LOG IN CURRENT DISK 580-600 READ - DIRECTORY 610-620 READ A SPECIFIC - SECTOR 630-650 ANALYZE - AND DIRECTORY 660-720 READ - FILE 730-770 WRITE - FILE 780-820 RECODE AND WRITE - DIRECTORY AND 830-840 WRITE A SPECIFIC - SECTOR 850 FIND FREE SPACE ON - DISK 860-870 NORMALIZE AND / FILENAMES 880 DISPLAY FILE STATS 890- ENTER MENU OPTIONS HE MAXIMUM FILE SIZE THAT CAN BE TRANSFERRED IN ANY DIRECTIONS IS 45.5 K BYTES. ONGER FILES WILL BE TRUNCATED TO THIS LENGTH. HIS IS EQUIVALENT TO 183 BLOCKS OR NEARLY 3 FULL / DIRECTORY EXTENTS. LL FILES IN MEMORY ARE ASSUMED TO BE IN FORMAT. FILES READ WITH THE CONVERSION OPTION ARE ASSUMED TO BE ON THE DISK AND ARE TRANSLATED TO AS THEY ARE READ IN. FILES WRITTEN WITH THE CONVERSION OPTION ARE ASSUMED TO BE IN MEMORY AND ARE CONVERTED TO AS THEY ARE WRITTEN TO DISK. IMILARLY, CONVERSIONS ARE MADE WHEN READING FROM OR WRITING TO SCREEN CODE FILES. LL OTHER TRANSFERS ARE DONE IN A BINARY WHAT-YOU-SEE-IS-WHAT-YOU-GET FASHION. CAN BE USED FOR SIMPLE <> CONVERSION OF FILES WITH EITHER A 1571 OR 1541 (OR OTHER COMPATIBLE ) DRIVE IN THE FOLLOWING MANNER: TO - READ THE FILE IN <> CONVERSION MODE, THEN WRITE IT IN BINARY MODE. TO - READ THE FILE IN BINARY MODE, THEN WRITE IT IN <> CONVERSION MODE. NE WORD OF CAUTION FOR <> CONVERSIONS. PASSES CONTROL CODES ( VALUE LESS THAN 32) AND CERTAIN OTHER SPECIAL CODES THROUGH IN BOTH DIRECTIONS UNCHANGED. T ALSO ADDS A LINEFEED CHARACTER ( $(10)) AFTER EACH CARRIAGE RETURN WHEN CONVERTING TO AND REMOVES ALL LINEFEEDS WHEN CONVERTING TO . HE PRESENCE OF THESE CODES IN, FOR EXAMPLE, TEXT FORMATTED ON A / WORD PROCESSOR MAY REQUIRE THE TEXT TO BE REFORMATTED WITH A -128 WORD PROCESSOR BEFORE IT CAN BE USED IN -128 MODE. N ADDITION, DOCUMENTS ORIGINALLY WRITTEN OR EDITED WITH SOME WORD PROCESSORS (SUCH AS ORDTAR- EITHER / OR - VERSION) SHOULD BE HANDLED IN NON-DOCUMENT MODE (I.E. STANDARD ) ON THESE WORD PROCESSORS IF THEY ARE INTENDED TO BE SUBSEQUENTLY USED IN -128 MODE. ORDTAR SETS THE HIGH BITS IN THE LAST CHARACTER OF EACH WORD IN DOCUMENT MODE. HIS RESULTS IN AN INCORRECT TO CONVERSION. HE HIGH BIT CAN ALSO BE STRIPPED OUT USING THE OPTION (ZERO THE PARITY BIT) OF /'S COMMAND TO COPY THE ORIGINAL FILE TO AN COMPATIBLE FILE. SIMILAR ROUTINE CAN BE USED FOR CONVERTING BETWEEN AND TEXT FILES. HEN READING THE DIRECTORY, IGNORES THE FILE ATTRIBUTE (BYTE 11) EXCEPT FOR THE VOLUME LABEL AND SUBDIRECTORY ATTRIBUTES WHICH DO NOT REPRESENT VALID FILES. HUS YOU CAN DISPLAY AND ACCESS HIDDEN AND SYSTEM FILES WHICH DO NOT SHOW UP ON AN - COMMAND. SETS DIRECTORY BYTES 11-25 AND 30-31 TO 0 WHEN IT IS WRITING A NEW FILE. HIS IS EASIER THAN TRYING TO CALCULATE A FILE CREATION TIME, DATE, ATTRIBUTE, ETC. ERO BYTES IN THESE LOCATIONS ARE ACCEPTED BY -. OR A MORE DETAILED DESCRIPTION OF - FILE FORMATS, ART OF THIS ARTICLE. WILL RECOVER UNUSED AND SCRATCHED DIRECTORY AND DATA SPACE FOR BOTH / AND - DISKS. HIS IS HANDLED AUTOMATICALLY BY OMMODORE WHEN WRITING TO FILES. IS CURRENTLY CONFIGURED TO WORK WITH UP TO TWO DRIVES AND A PRINTER. OR / AND - FILES, AT LEAST ONE OF THE DRIVES MUST BE A 1571. HE DEVICE CONFIGURATION CAN BE CHANGED BY ALTERING THE DEFINITIONS OF ARRAYS () AND $() IN LINE 130-150. O USE THE PRINTER FOR A FILE DUMP, SELECT (FOR AN PRINTER) OR AS THE TARGET FILE TYPE WITH THE " " OPTION ON THE MAIN MENU. (HERE IS NO NEED TO SPECIFY A FILENAME FOR THE PRINTER. AT THE FILENAME PROMPT IS SUFFICIENT.) OU CAN THEN SELECT THE PRINTER AS THE TARGET DEVICE. F COURSE, THE 1541 OR COMPATIBLE CAN ONLY BE USED TO READ OR WRITE FILES, SINCE IT DOES NOT SUPPORT BURST MODE. LTHOUGH IT IS NOT AN - EMULATOR, YOU WILL FIND AN INVALUABLE UTILITY FOR TRANSFERRING FILES FROM ONE MACHINE TO ANOTHER (AND BETWEEN MODES ON THE -128 ALSO) IF YOU USE BOTH AN - AND A -128. T IS ALSO POSSIBLE WITH A LITTLE DETAILED KNOWLEDGE OF THE DISK FORMATS TO USE THE SAME PRINCIPLES FOR TRANSFERRING FILES TO/FROM OTHER COMPUTERS AND OPERATING SYSTEMS THAT USE TYPE DISKS, SUCH AS USED ON THE ADIO HACK COMPUTERS OR POSSIBLY OO /9 DISKS TO /9 FORMAT. INCIP? (0)5"SWITCH TO 80 COL SCREEN":"THEN TYPE RUN":xޜ:%:5:T(1360),S(1360),ES(16),FA(361),SM(36):560""32)"CROSS LINK 2.1A":20)"BY M. GARAMSZEGHY, MODIFIED BY K. WOODALL":86-06-27(" ";:I176:"";::"";:I319:,1,I,"":,78,I,"":`2" ";:I176:"";::"";:I18:(I),(I): :M4$"FULL":M5$"DISK..."<2,3,77,19,1:18)"SOURCE FILE:"50)"TARGET FILE:":FO$(15):FF$(143)F" NAME:":" TYPE:":" DRIVE:":,18,12,FO$"** INITIALIZING SYSTEM: PLEASE WAIT **"FF$dPM0$"READING...":M1$"WRITING...":M2$"DIRECTORY...":M3$"FAT...":"XL.ML3",B0Z I117:SM(I)20::I1824:SM(I)18::I2530:SM(I)17::I3135:SM(I)16:dT1:S10:TC2:I0679:T(I)T:S(I)S:SS5:TCTC1:SSM(T)SSSM(T)10nTCSM(T)TT1:S0:TC0:T18S5:TC1cx:I6801359:T(I)T(I680)35:S(I)S(I680):BL$" ":DB13568:TBDB5120:DV(1)8:DV$(1)"1571 DRIVE, U8":9900 DV(2)9:DV$(2)"1571 DRIVE, U9":DV(3)4:DV$(3)"PRINTER, U4":DV(4)3:DV$(4)"SCREEN, U3":SA(1)5:SA(2)7:SF7:SX1:TF2:TD2 TY$(1)"SEQ ASCII":TY$(2)"SEQ PET":TY$(3)"PRG ASCII":TY$(4)"PRG SCRN":TY$(5)"CP/M SS":TY$(6)"CP/M DS":TY$(7)"MS-DOS DS"!880:A$:AX(A$):AX8160:Ս970:15:AX900,1020,1000,1050,1080,1300,550,1200:8:15:160A!8,DV(SX),8,"0:"SF$","TK$",R":250,0e!DS"ERROR >> ";DS$:430:990!SF23296,TB256,8:ՋSF1SF32972,TB256,8:՞3453,TB256,8!M(250)(251)256:0:M1,26:MM1:870"570:8,DV(TD),8,"0:"TF$","TK$",W""250,0:DS180m"TF23141,TB256,8,M2561:ՋTF13024,TB256,8,M2561:՞3551,TB256,8,M2561x"990:"F$SF$:850:M0$M2$:SF7660"400:DMTB:NB0:YDBDBFA204032:290:F1$F3$280:Ս300>#F4$F2$FI0:M0$SF$:NR(Y15):NB(Y12):Z1631:B(YZ):BZ1B4FA:Z2Z14FA1:440:h#:MTB3NR128NB16384:FI680:870#"0:F3$"":F4$"":J18:F3$F3$((YJ))::#,J911:F4$F4$((YJ))::#6F$TF$:850:M0$M2$:570:F3$F1$F2$:TF7730$@400:M1$TF$:XE0:JJTBM116384FA:480j$JDMJJ:K015:Z1ES(K1)4FA:Z2Z14FA1:JJK1024FAM460::K16$TNR((MJJ127)128):FA1NR128NR128:ՋNR128380$^0:NBK:DIDB32DF:DI,0:I111:DII,((F3$,I,1)):%hDI12,XE:I1331:DII,0::I1NB:DI15I,ES(I):a%rDI15,NR:15:XEXE1:JJ:M1$M2$:DMDB:Z10:Z28FA1:460:990%|XEXE1:NRNR128:NR128NR128:350:350%U(DV(R)),"*="TK$:%DMDB:Z10:Z28FA1:440:DR&YDBDM132:(Y)229290:300:F3$F4$"";&:>&208,0::FO$"PRESS A KEY TO CONTINUE"FF$:A$:&SE1:ZS0:DZZ1Z2:15,"U0@"(T(DZ))(S(DZ))(1)(T(DZ)):450::DMAD256:&15:ADDMZS256SE:2921,SE,0,AD256:ZSZS1:'SE1:ZS0:DZZ1Z2:15,"U0B"(T(DZ))(S(DZ))(1)(T(DZ)):470::DMAD256:R'15:ADDMZS256SE:3074,SE,0,AD256:ZSZS1:'DF0:I016:ES(I)0::I2169:FA(I)0:'IDBDB204032:(I)229510'J1631:FA((IJ))1:'(I1)229DFDF1':DF64FA1M2$M4$:430:1604(N1:I2169:FA(I)0ES(N)I:FA(I)1:NN1:N16Q(:M5$M4$:430:990:160h(&0,0,79,24,1:&:(08:15:EL170EL210""M5$"ERROR":430:990:160:160(:15,DV(R),15,"U0"(10):)DZS0:DMDB:B164:TR0:DZ69:610::B180:DZ13:610::DMAD512:DRa)NIDBDM132:(I)0:Ջ(I)229(I11)8YI1:290:300:F3$F4$"";i)X:)bSE2:15,"U0"(B1)(TR)(DZ)(1)(TR):450)l580:ZS0:DMDM256:B164:TR0:ZS0:DZ23:610::DMAD513 *vM0$M3$:0:I0360:PDB3840(1.5I)J*I1FA(I)(P1)16((P)16):FA(I)(P)256((P1)15)R*:*620:IDBDB358032:(I)0(I11)8(I11)16(I)229675*YI1:290:F1$F3$300:F2$F4$690**(4):430:990(+M0$SF$:0:ZS0:DMTB:SC(I26)(I27)256:LE(I28)(I29)256:15W+SS(SC2)212:720:610:SSSS1:720:610+SCFA(SC):SC360SC6ZS90MTBLE:870:700+SD((SS(SS18)18)9):DZSS(SS9)91:TR(SS18):B164:SDB180::Վ',620:0:DR0:YDBDB358032:(Y)0(Y)229740:Ղ:M2$M4$:430:160Q,DRY:J1031:YJ,0::NC5:840:NCJ~,DR26,NC255:DR27,NC256:M1$TF$:15,DMTBM11024:ZS0:SS(NC2)212:720:830:SSSS1:720:830,840:FA(NC)J:NCJ::FA(NC)4095:0C- M1$M2$:DMDB:J111:DRJ1,((F3$,J,1))::DR28,LE(LE256)256:DR29,LE256{-ZS0:B164:TR0:DZ69:830::B180:DZ13:830:- 0:M1$M3$:DMDB3840:I0359:PDM(1.5I)-*I1P,((FA(I)15)16)(P):P1,FA(I)16:՗P,FA(I)255:P1,FA(I)2567.4:ZS0:B164:TR0:DZ23:830::ZS0:DZ45:830::980m.>SE2:15,"U0"(B12)(TR)(DZ)(1)(TR):470.HJNC1359:FA(J):M5$M4$:430:160:Վ.RP(F$,"."):P0F$F$".":850.\F1$((F$,P1)BL$,8):F2$((F$,P1,3)BL$,3):DR1:FI1:G/f990:SF$:LEMTB:"LENGTH ="LE"BYTES":3428,M256,M(M256)256:/p970:"F1: SET SOURCE FILE"23)"F3: SET TARGET FILE";/z46)"F5: DIRECTORY"62)"F7: QUIT":"F2: READ FILE"23)"F4: WRITE FILE"46)"F6: SHOW FILE"62)"F8: SET DRIVES":0"SOURCE FILE NAME";SF$=015,5,40,8,1:SF$:TY$(SF):DV$(SX):0"FILE TYPE":"F1: "TY$(1)21)"F3: "TY$(3)41)"F5: "TY$(5)61)"F7: "TY$(7)0"F2: "TY$(2)21)"F4: "TY$(4)41)"F6: "TY$(6)0FT$:FT(FT$):FT79400OP1970:"SELECT DEVICE":"F1: "DV$(1)24)"F2: "DV$(2);=1DV$:DV(DV$):DV2960R10,21,79,24,1:g150,9,77,19,1:{13,9,74,19,1:1"TARGET FILE NAME";TF$150,5,77,8,1:TF$:TY$(TF):DV$(TD):1SF$"":Ս990:Z$TY$(SF):Z1$DV$(SX):111052990:M0$SF$:"FROM "TY$(SF)" DISK":FA1:RSX:570:SF6FA2Z2TK$((TY$(SF))):SF5170:2502980:MTB2(TF$""TD3):ՋTD3Z$TY$(TF):Z1$DV$(TD):11102$980:M1$TF$:"TO "TY$(TF):FA1:RTD:TF6FA22.TK$((TY$(TF))):TF5210:310238970:"SELECT ";:920:DTFT:DT2DT1:ՋDT4DT3v3BRDV:990:Z$TY$(DT):Z1$DV$(R):1110:990:DR0:FA1:DT6FA23LTY$(DT):TK$((TY$(DT))):570:DT5390:Ց(DT4)400,400,5803V"INSERT "Z$" "M5$:"IN "Z1$:430 4970:"SOURCE ";:920:SFFT:SXDV:910:4970:"TARGET ";:920:TFFT:TDDV:1010`4OP1:970:"OUTPUT ";:920:OP04970:"OUTPUT FILE TO":"F1: "DV$(3)21)"F2: "DV$(4)4A$:A(A$):A1 A2 13024 2,10,77,19,1:1350:(14);48,DV(A2),SA(FT)5250,0:DS180!5(3024,TB256,8,M2561+5-1350652990:5F208,0::(142);25);FO$"PRESS ANY KEY TO CONTINUE";FF$;:A$: 2,10,77,19,1:M0$