The Transactor V2 12

48
8/7/2019 The Transactor V2 12 http://slidepdf.com/reader/full/the-transactor-v2-12 1/48 (Kcammadare comments and bulletins concerning your COMMODORE PET'M The Transactor VOL 2 BULLETIN 12 PET~is a re istered Trademark of Commodore Inc. Transactor Article Contest Winners In Transactor #8, we promised awards for the best articles published in Volume 2. We also promised free subscriptions to The Transactor Volume 3 for any article published. Here are the winners: Best Article goes to J. Hoogstraat of Calgary, Alberta, for his BASIC Labelling Routine published this issue and also for his 2040 Disk I/O Routine in bulletin ilO. Mr. Hoogstraat gets a free Visicalc package. Runner up award goes to F. Van Duinen of Toronto, Ontario, for ?LOAD ERROR, D.R.I.P and Program Plus. r.1r.Van Duinen receives a Commodore calculator, model # SR9l90. Free Volume 3 subscriptions are going to: J. Hoogstraat *Kevin Erler *James Yost Michael Casey *B. Brown Dave Hook Henry Troup *Sheldon H. Dean Brad Templeton F. Van Duinen John A. Cooke Chuan Chee G. Hathaway *L.D. Gardner Paul Barnes Gord Campbell Don ~]hite *Jim Russo Rick Ellis Jim Hindson ~v.T. Garbutt Torntvojdylo *S. Donald *John Hacdonald Dave Berezo\tlski *Robert Oei * Please call or send in your address. This contest will be held again for The Transactor Volume 3, prizes may differ. If you're asking "What about Jirr.Butterfield?", don't worry, he's been well taken care of. As a Commodore dealer, Bill MacLean of BMB CompuScience was not eligible for a prize, but we'll figure something out. I'd like to thank all who contr ibuted to Volume 2 and special thanks to Jim and Bill for some really excellent stuff! Special thanks also to Terry Garbutt for his truly genuine help and support. Hoping to hear from all of you in Volume 3, I remain, Karl J. Hildon Editor, The Transactor The Transactor is produced on the CBM 8032 using WordPro IV and the NEC Spinwriter

Transcript of The Transactor V2 12

Page 1: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 1/48

(Kcammadare comments and bulletins

concerning your

COMMODORE PET 'M

The Transactor V O L 2BULLETIN 12

PET~is a re istered Trademark of Commodore Inc.

Transactor Article Contest Winners

In Transactor #8, we promised awards for the bestarticles published in Volume 2. We also promised freesubscriptions to The Transactor Volume 3 for any articlepublished. Here are the winners:

Best Article goes to J. Hoogstraat of Calgary, Alberta,

for his BASIC Labelling Routine published this issue and alsofor his 2040 Disk I/O Routine in bulletin ilO. Mr.

Hoogstraat gets a free Visicalc package.

Runner up award goes to F. Van Duinen of Toronto,Ontario, for ?LOAD ERROR, D.R.I.P and Program Plus. r.1r.VanDuinen receives a Commodore calculator, model # SR9l90.

Free Volume 3 subscriptions are going to:

J. Hoo gstraat*Kevin Erler*James YostMichael Casey

*B. BrownDave HookHenry Troup

*Sheldon H. DeanBrad Tem pleton

F. Van DuinenJohn A. CookeChuan CheeG. Hathaway*L.D . Gardne rPaul BarnesGord CampbellDon ~]hite

*Jim RussoRick EllisJim Hindson~v.T. GarbuttTorn tvojdylo

*S. Donald*Joh n Ha cdonaldDave Berezo\tlski

*Robert Oei

* Please call or send in your address.

This contest will be held again for The TransactorVolume 3, prizes may differ.

If you're asking "What about Jirr.Butterfield?", don'tworry, he's been well taken care of.

As a Commodore dealer, Bill MacLean of BMB CompuSciencewas not eligible for a prize, but we'll figure something out.

I'd like to thank all who contr ibuted to Volume 2 andspecial thanks to Jim and Bill for some really excellentstuff! Special thanks also to Terry Garbutt for his trulygenuine help and support. Hoping to hear from all of you in

Volume 3, I remain,

Karl J. HildonEditor, The Transactor

The Transactor is produced on the CBM 8032 using WordPro IVand the NEC Spinwriter

Page 2: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 2/48

Page 3: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 3/48

The BASIC Difference Is:

BASIC 1.0 BASIC 2.0 Bl\SIC 4.0

PEEK(50003) = 0 1 160

Disable STOPPOKE 537,136 144, 49 144, 88

.Enable STOPPOKE 537,133 144, 46 144, 85

New BASIC 4.0 machines reportedly crash on some oldprograms. The culprit is most likely a disable STOP keyPOKE. Also check for POKE59458,62, the screen speed-up POKE.As mentioned before, this can also crash machines. See

article this issue on BASIC 2.0 - BASIC 4.0 Conversions formore info.

Screen Loading

All you need is a "screen-set-up" routine to "draw" yourscreen out, and this program will store it on disk:

100 REM SCREEN SAVER110 OPEN 8, 8, 8, "O:SCREEN NAME,P,W"120 PRINT #8, CH R$(0)CHR $(128);130 EN=33767 : IF PEEK(50003)=160 THEN EN=34767

140 FOR J=32768 TO EN150 PRINT#8, PEEK(J);

160 NEXT170 CLOSE 8180 END

Line 130 sets end screen (EN) to 33767 for 40 columns, 34767

for 80 columns.

SAVE this program and do a NEW. No...enter:

10 ON X GOTO 120100 PRINT "[clrscrn)";110 X=l : LOAD "O:SCREEN NAME",8120 END

RUN this and the old screen should pop back on thescreen as fast a loading lk from disk. The cursor willremain in the home position since nothing is actuallyprinted. No pointers or variables are changed since it was a

"dynamic load". But the loader program would RUN from thebeginning, hence the ON X GOTO statement. This could beexpanded to accommodate more screen loads simply by addingmore GOTO data to line 10 and setting X appropriately priorto the load. The SCREEN SAVER program could also be modifiedto store only a portion of the screen. But don't forget tochange the load address in line 120, else the files willalways load back to screen starting at HOME.

3

Page 4: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 4/48

MQre On The NEC Spinwriter

In Transactor #11, the internal switch positions for theNEC Spinwriter were published to get proper operation with

WordPro. Dr. G. Piasecki of Oakville, Ontario, tells me thatone of the switches should be left unchanged.

back board : SWI = 0 0 0 0 1 XII

The switch at position 6 (labelled ·X") will be set ON or OFF(lor 0) depending on your particular Spinwriter. This isdone at the factory. Set the other switches as shown but donot change position 6. See page 1 of Transactor tIl for moreinfo. In summary:

back board SWI = 0 0 0 0 1 X 1 1

2nd from back board . SWI = 0 0 0 0 0 0 0 0

SW2 = 1 0 1 0 0 0 0 0

SW3 = 1 0 1 0 0 0 0 0

AnQther CQntest!

This one's a quickie and will be decided beforepublication of Bulletin #1, Volume 3.

Objective: The shortest macro routine to push the stackpointer onto the stack. Inotherwords, a PHS instruction.

1. All internal registers (.A, .X, .Yand .P) must havetheir original contents once the stack pointer is on

the stack.

2. Macro only: no using RAM (excluding the stack) tostore internal registers

The person with the shortest routine will receive afree subscription to The Transactor Volume 3. Submit entriesto:

Commodore Business Machines3370 Pharmacy AvenueAGINCOURT, Ontario

MlW 2K4Atn: The Transactor

4

Page 5: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 5/48

Oops!

Dave Hooks Card Print Utility was published in the lastissue without a listing of the program. The listing and thecross reference follow Bits and Pieces.

Also, our last bulletin was actually #11. It waslabelled "10" by mistake. The real bulletin 10 is labelled"# IOn.

Subscription Renewals

Don't forget, this is the last issue of The Transactor,Volume 2. A Volume 3 subscription form has been included inthis issue. The Transactor Volume 3 will be $10.00 for 6issues, back issues included.

Transactor 17 Insert

The center page of this issue contains more helpfulreference lists and tables. It has been designed so that, if

you wish, it can be removed and inserted as the center pageof Transactor 17.

Flash!

The POP SYS for BASIC 2.0 also has an equivalent BASIC4.0 entry point:

BASIC 2.0:BASIC 4.0:

SYS 50583SYS 46610

This SYS "POPS" or cleans the stack of all GOSUBs andNEXT loops. Watch for this when converting BASIC 2.0 toBASIC 4.0 too!

5

Page 6: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 6/48

CROSS REFERENCE - PROGRAMCARDUTILITY

A% 42020 42030 43020 43140

C% 42000 42010 43100 43130

D% 40000 40010 40020 41000 41010 42000 43040

D%( 40020 41000 41010 42010 43130

E9 40000

F$( 40080 42500 42510 42520 43500 43510 43520

I 40000 40020 40030 40050 40060 40070 40080 41000 41010

1$( 40030 42050 42750 43160 43750

J 40000 40020 40070 40080 42050 42070 42500 42510 42520 42750 43160

43250 43500 43510 43520 43750

J% 40000 41000 41010

K% 40000 41000 41010L 42000 42030 42800 43100 43140 43800L% 42020 42030 43010 43140

M% 43040 43100P% 43000 43100

S$( 40050 40060 42070 43250

S% 42010 42070 42500 42510 43130 43250 43500 43510S%( 40070 42070 43250

Sl$ 40040 40050

S2$ 40040 40060

T% 42030 42040 42050 42070 42500 42510 42520 42750 43140 43150 43160

43250 43500 43510 43520 43750

TB% 42020 42030 43030 43140

TI 40000V% 42010 42050 42060 42070 42500 42510 42520 42750 43130 43160 43170

43250 43500 43510 43520 43750

Z 130 140 150 15010 43000 43010 43020 43030 43040

Z$ 120 130 160 15000 15010

6

Page 7: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 7/48

10 DATA A,2,3,4)~)b)7)8)9,l~,J,Q,K2~) IIATA ,r " .. 1.., .' " .J 1., " ,I ... J ,I 1 . 1 1 . 1 " " 1.- .' ,I 1 ..2" " .' ,I " .. 2 ,,2 ,1 " .. 1.." , 1 2

: : : : ( 1 ItA TA 2 .. ,I .. 2 ., .. ,,2.12.1.' 1 . 1 ,12.1,,2.1 :;;:.1,,2.1,,2, ,I 2 .- 2 .1 ,1 2 .. 1 .12 . . , ,2 .12 .,1.12 . , , ,2 .11 ., 2

40 DATA" ~~:J' ".' II ~ .::~ LI::~ ".," I ~::~::~ "se DATA" ~:~:~">:" ' : : -E:~:~:I., !I 'W'"::~::~ II

6(1 DATA II n ~ ::~ II., II ~ """,",..-, II ," ~:~ I I " .," ~ ::." ," ~:~t·:::·:::·:l~:7 ~3 IIA TA II. ~ II ,I II I ,,.- 11 ,I II ! !. _! JI I" J I . . 1I"11111!! :., II ,I II I ~:!~:I". II ~ .:~ II

8~j DATA" ~~:1~.·.·rtf,~:I ••" ~ ::1 ''' .' II 11=1=1=".." ~ """90 GOSUE:400~j01(10 PF~ t-H"::1" TAB ( 1(1) II~::AFm LITI L I rT11I: PF.: NT IIni , DI SPLA'T' CAF.:DS": PF.: u r ":l!12. :::HlIFFLE11(1 PF.: t-n II:l!l3. SUBF.:OUT t'~E FOF.: GAt'1E::;I :PF.: NT ":t!J4. G!U Til: PF.: HT" :l!Il!l::-l3ELECT m'4 ?II.;

12(1 GETZ$: I FZ$= II IITHEN120

130 Z=VAL(Z$):PRINTZ:IFZ<10RZ)4THENI00140 I FZ=4 THEt~Et·m150 Ot-~ZGOSUE:420~~10.,100(1., 4:3000: PRINTII:l'.l::IDONE--HIT A KE'T'160 GETZ$: I FZ$= IIIITHEt·~160170 GOTO10~)

14998 END15000 I t·WUTII f,1~'1111I;Z$ : I FZ$= II~~~"HEt·415(1(10 :R£to1 I t·4PUT SE:F~.

15010 Z=VAL(Z$):RETURN40000 I=RND(-TI*IE9):J=0:D~=0:J~=0:K~=0 :REM INITIALIZATION4(1010 INPUT" t·4Ut·1BEF.:OF DECKS 11111" .;D~'~40020 DIMD~(D~*52):FORI=ITOD~:FORJ=0T051:D~(52*(I-1)+J)=J:NEXTJ,I:D~=D~*52-140030 DIMI$(13):FORI=lT013:READI$(I):NEXTI4~j040 81$=11 '" • • \ t t " : 82$=" + +. •• • + + II

40050 DIMS$(2,3):FORI=0T03:S$(0,1)=" ":S$(1,1)=MID$(S1$,I*4+1,7)40060 S$(2,I)=MID$(S2$,1*6+1,7):HEXTI40070 DIMS%(10,7):FORI=lTOI0:FORJ=lT07:READS%(I,J):NEXTJ,140080 DIMF$(3,7):FORI=IT03:FORJ=IT07:READF$(I,J):NEXTJ,1

4009~3 F::ETURt·4409'99 R£to1SHUFFLE41000 FORI=0TOD%:J%=(D%+I-I)*RND(I):K%=D%(J%)41010 D%(J~)=D%(D~-I):D%(D%-I)=K%:NEXTI:RETURN41999 R£to1DI ::;PLA'T' ALL CAF.:DS42(1(1(1 PF:I t-n"::'),, : C~'~=[I FORL=~:3T0n;.~C~·~=C~·~1 :42010 S~=D~(C%-I)/13:V~=D~(C%-I)-13*S~+142020 L~=7:A%=5:TB%=04203~j I FL ..··A;·~=t-n ( L"'A;'~) THEt-H;'~=TB~~: PRI NTLEFT $':: II ::1:t!ll!ll!Il!J:l!Il!J:l!:oo:t!Il!Il!Il!Il!ll'.lll'U~):GOT042(15(1

4204~3 T;·~=T;·~+B: ' F . : I t-H II: I I I I I I I I ] 11 . ;

42[150 PRIt-nTAE:(T~'~) I I i:~"LEFT$':: I$( ....;.~)+" 1 1 . . 7) : FOF.:.J=1T0742060 IFV%)10THEN4250042[17(1 F'F.: l t ·~TTAE:(T~·~)II ~11!=;$(~=;~.!(I."'~,~•.J).I !3 :"~) : 13CITC14275~34250(1 IF.J=1 THEt·iPF.:It-nTAE:(T;·~)" ~ "NID$( ""' •• + " . ' ::;;·~+1.1 )F$C·l;·~-10 ... _ T ) : GOT04275~J4251(1 IF.J=7THEt~PF.:INTTAE:(T~~)" ::~IIF$("'·';·~-U3....n" ::~"t1III$( 1 1 + • • + 1 1 . . S~·~+I.. 1) II II: GOT04275042520 PF.:HHTAE:( rx: I I i:~IIF$( V;·~-l€1.,J)4275(1 t·~E;:.:;rJ:PRINTTAB(rC,1I ~~"RI(;HT$( II "+ I$( ...';·~).7)42800 NEXTL:RETURN42999 REM GAME-TYPE SUBROUTINE4:::aXuj PF.:ur II::1HOL·J·1At·N CAF.:DS TO PI? I ur II.: :GO:3UE:15000 : P;'~=Z4:3~j10 PF.: t-n "STAF.:T ON LINE (1-16::' II.; :GOSUB150~J0 : L;'~=Z4:;:02(1 PF.:1t-n "Hm·J t·1At·4IT'CF.:OS::: (1-5)".; :GOSUE:15(1(10: A;'~=Z

430:3~] F'F.: t-H" :::TAF.:T AT TAB ( (1-32) II.::GO::;UE:15~K1(1: TE:;':=Z4::::(140 t'1;'~=D;'~+I:PF.:HHIISHUFFLE AFTEF.: .::l-lIt·1;·~II)".: : GOSUB15000: t'1;'~=Z

43100 PRINT"::1":C%=0:FORL=0TOP~-I:C%=C~+I:IFC~=M%+ITHENC~=I:GOSUB41000

43130 S~=D%(C~-I::'/13:V~=D~(C~-I)-13*S%+14314(1 I FL"'A~'~=I t-n (L"'A;'~) THEt-n;'~=TB~'~ PF.: t-nLEFT$ ( fI ::Il!Il!J:~.:rl!Il!Il!J:l!Il!ll!Il!J:l!Il!I811J11I'L~'~): GOT04::::16(14:3150 T;·~=T~·~+8:PRINTI I

: I I I I I I I I 111.;4::::16(1 PF~HHTAB(r·~) II~"LEFT$':: I$('·.·I~.~)+II " ..7) : FOF.:.J=1T0743170 IFV~)10THEN435004::::25€1 F · F . ~I t · 4 T T A E : (T;'~) II:~I~=;$~=:;.~Jll;'~ .J) 0 ' :3;'~):GCIT(14::: :75~34350(1 IF.J= 1THEt'4PF~HHTA!: (T~'~)" ::~ II t'lID$ (" "' •• + II..::;~.~+..1 )F$C·/;·~-10 ..J) :GOT04::::7504351~~1 IF.J=7THEt·~PfntHTAB(r;.~) I I ~1"F$C./;·~-lt1 ..J)" ~1"t'lID$( 1 1 + • • + 1 1 . • S;·~+l ..1) II II: GOT04::::750

4352~~1 PF.: t-nTAE: (T;'~) II::."F$ (".·';·~-10.,.J::'4375~~1 t·iE;:'::T.J:PF.:HHTAE:(r;·~)" ::~"F.:IGHT$(" "+1$( ...

';0..7)

43800 NEXTL:RETURN

Page 8: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 8/48

PET BASIC LABEL SUPPORT INTERFACE J. HoogstraatCalgary, Alta

This amazing routine resides in the second cassete bufferand allows the use of labels in basic and has no effect onthe speed of basic.

A label starts with a # character and is retricted inlength to the basic line length.

EXAMPLE NO LABELS

100 FOR I = 1 TO 3110 ON I GOSUB 500, 550, 600120 NEXT130 GOTO 800140500 PRINT "SUBROUTINE"; I :RETURN510550 PRINT "SUBROUTINE" ;I :RETURN560600 PRINT "SUBROUTINE";I :RETURN

610800 PRINT "END OF TEST":END

EXAMPLE WITH LABELS

1020100110120130140500

510550555560600610800

SYS826

FOR I = 1 TO 3ON I GOSUB iSUBl, iSUB2, iSUB3NEXTGOTO #ALLDONE

#SUBl:PRINT "SUBROUTINE";I :RETURN

·SUB2PRINT "SUBROUTINE ";1 :RETURN

·SUB3:PRINT "SUBROUTINE";I :RETURN

#ALLDONE:PRINT "END OF TEST":END

The ilabels can be mixed up with basic statement numbers.

110 ON I GOSUB iSUBl, 550, #SUB3

Since the routine resides in the second cassette bufferand modifies the basic GET character routine, it prohibitsthe use of any other routines in the second cassette bufferor the use of the DOS support program. However it can be madepart of the DOS support program.

8

Page 9: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 9/48

I do have available a modified DOS support program whichincludes the following:

1. Regular DOS support.

2. The BASIC label support interface.

3. An excellent repeat key function.

4. A basic disk append command. no messing around with tapes

Just send me $20.00 and a floppy and I will return a copyof the above including all the assembly source on yourfloppy, or for $27.00 I'll send you a floppy with the same.

By the way, the # label pref ix is my choice and can bealtered to any other special character.

Have a lot of Basic fun I!!

Editor's Note:

Mr. Hoogstraat's routine works on BASIC 2.0 only. Toconvert to BASIC 4.0, some JSRs would need changing. Also,the program could no longer reside in the second cassettebuffer. This space is used by some new BASIC 4.0 commands.

800 FOR J=826 TO 1008 READ X :POKE J, X : NEXT826 DATA 169, 71, 133, 113, 169, 3832 DATA 133, 114, 169, 76, 133, 1128:3j DATA 96, 230, 119, 208, 2, 230844 DATA 120, 164, 55, 200, 208, 3850 DATA 76, 118, 0, 160, 0, 177

856 DATA 119, 201, 35, 208, 245, 186 .M 033A 03FO86:l DATA 189, 1, 1, 201, 62, 240868 DATA 24, 201, 172, 240, 20, 201 · 033A A9 47 85 71 A9 03 85 72·.874 DATA 143, 240, 16, 201, 105, 208 · 0342 A9 4C 85 70 60 E6 77 DO·.880 DATA 107, 32, 112, 0, 201, 44 · 034A 02 E6 78 A4 37 C8 DO 03·.886 DATA 208, 249, 104, 104, 76, 95 · 0352 4C 76 00 AO 00 Bl 77 C9·.892 DATA 200, 200, 166, 40, 165, 41 · 035A 23 DO F5 BA BD 01 01 C9·.898 DATA 208, 8, 160, 0, 177, 92 · 0362 3E FO 18 C9 AC FO 14 C9·.904 DATA 170, 200, 177, 92, 134, 92 ·. 036A 8F FO 10 C9 69 DO 6B 20910 DATA 133, 93,133, 91, 177, 92 · 0372 70 00 C9 2C DO F9 68 68·.916 DATA 208, 3, 76, 235, 199, 24 · 037A 4C 5F C8 C8 A6 28 A5 29·.922 DATA 165, 92, 105, 4, 133, 90 · 0382 DO 08 AO 00 Bl 5C AA C8·.928 DATA 144, 2, 230, 91, 136, 177 · 038A Bl 5C 86 5C 85 5D 85 5B

·.934 DATA 90, 32, 226, 3, 133, 89 · 0392 Bl 5C DO 03 4C EB C7 18·.940 DATA 177, 119, 200, 32, 226, 3 · 039A A5 5C 69 04 85 5A 90 02·.946 DATA 197, 89, 208, 206, 201, 0 · 03A2 E6 5B 88 Bl 5A 20 E2 03·.952 DATA 208, 235, 104, 104, 186, 189 · 03AA 85 59 Bl 77 C8 20 E2 03·.958 DATA 255, 0, 201, 143, 208, 21 · 03B2 C5 59 DO CE C9 00 DO EB·.904 DATA 165, 120, 72, 165, 119, 72 · 03BA 68 68 BA BD FF 00 C9 8F·.97U DATA 165, 55, 72, 165, 54, 72 · 03C2 DO 15 A5 78 48 A5 77 48·.976 DATA 169, 141, 72, 169, 198, 72 · 03CA A5 37 48 A5 36 48 A9 8D·.982 DATA 169, 195, 72, 32, 205, 199 · 0:3D2 48 A9 C6 48 A9 C3 48 20·.988 DATA 32, 0, 200, 76, 118, 0 · 03DA CD C7 20 00 C8 4C 76 00·.994 DATA 201, 32, 240, 8, 201, 58 · 03E2 C9 20 FO 08 C9 3A FO 04·.996 DATA 240, 4, 201, 44, 208, 2 · 03EA C9 2C DO 02 A9 00 60 00·.998 DATA 169, 0, 96

Page 10: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 10/48

033A-A947033C-8571033E-A9030340-85720342-A94C0344-85700346-60

0347-E6770349-D002034B-E678

034D-A437034F-C80350-D003

0352-4C7600

0355-AOOO

0357-B1770359-C923035B-DOF5

035D-BA035E-BD0101

001000200030;

0040; ---------------------------------0050; - BASIC LABEL SUPPORT INTERFACE -

0060; ---------------------------------0070;0080 ;0090;0100;0110;0120;0130;0140;0150;0160;0170; BY J.HOOGSTRAAT0180 ;0190;0200;0210;0220;

0230; ---------------------------------0240;0250; HOOK UP THE BASIC LABEL INTERFACE0260;0270HOOKUP0280029003000310032003300340;0350; BASIC LABELS SUPPORT INTERFACE

0360;0370LABELS038003900400;0410042004300440;0450NLABEL0460;0470LABEL1

0480049005000510;0520; DECIDE ON WHAT ACTION TO TAKE0530i

0540CHKLAB05500560:

.OS

.BA $33A

SYS826 ACTIVATES THE BASIC LABELSUPPORT INTERFACE AND ALLOWS THEUSE OF LABELS IN BASIC FOR 'GOTO''THEN' AND 'GOSUB' STATEMENTS.

A LABEL IS PREFIXED WITH At CHARACTER AND TERMINATESWITH A BLANK, COMMA OR COLON.

BOX 20, SITE 7, SS 1CALGARY, T2M-4N3ALBERTA. 403-239-0900

LDASTALDASTALDASTARTS

tL,LABELS*GETCHR+1tH,LABELS*GETCHR+2t$4C*GETCHR

INC *CHADBNE =+3INC *CHAD+1

iDO MISSING PARTiOF GETCHR.

LDY *CLIN+1INYBNE LABELl

;IMMEDIAT MODE?

iNOT IMMEDIAT.

JMP GOTCHR iNORMAL CONTINUE.

LDY to

LDA (CHAD),YCMP titBNE NLABEL

it PREFIX?

iNO PREFIX, EXIT.

TSXLDA $101,X iGET STACK VALUE.

10

Page 11: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 11/48

0361-C93E OS70 CMP #S.THEN ;BASIC THEN ?0363-F018 OS80 BEQ FLABEL ;YES, FIND LABEL.

OS90;036S-C9AC 0600 CMP #S.GOTO iBASIC GOTO ?

0367-F014 0610 BEQ FLABEL iYES, FIND LABEL.0620;

0369-·C98F 0630 CMP #S.GSUB iBASIC GOSUB ?

036B-·FOI0 0640 BEQ FLABEL iYES, FIND LABEL.06S0;

036D-C969 0660 CMP #S.ONDO ;BASIC ON.DO ?

036F-D06B 0670BNE SKPLAB ;NO, IT'S A LABEL.

0680 ;0690 ; ON.DO ACTION0700 ;

0371-207000 0710SCOMMA JSR GETCHR ;FOR ON .DO0374-C92C 0720 CMP #', ;STATEMENT GET PAST0376-DOF9 0730 BNE SCOMMA ;THE COMMA.0378-68 0740 PLA0379-68 07S0 PLA037A-4CSFC8 0760 JMP ON.RET ;RETURN TO ON.DOSTUFF.

0770;0780 ; GOTO, THEN OR GOSUB ACTION

0790 ;037D-C8 0800FLABEL INY037E-A628 0810 LDX *BSTR ;COPY START ADDRESS0380-AS29 0820 LDA *BSTR+l ;OF BASIC.0382-D008 0830 BNE CKSTAT ;GO CHECK FIRST STAT.

0840;0384-AOOO 08S0NXSTAT LDY #0 ;SET ADDRESS OF NEXT0386-BISC 0860 LDA (CLAD) ,Y ;BASICSTATEMENT.0388-AA 0870 TAX0389-C8 0880 INY038A-BISC 0890 LDA (CLAD) ,Y

0900;038C-86SC 0910CKSTAT STX *CLAD iSETUP CURRENT038E-8SSD 0920 STA *CLAD+l ;BASIC LINE ADDRESS.0390-8SSB 0930 STA *TMP2+1

0940;0392-B1SC 09S0 LDA (CLAD) ,Y ;END OF BASIC?

0394-D003 0960 BNE CKSTATI ;NO, CONTINUE.0970;

0396-4CEBC7 0980 JMP UNDEFD iUNDEF'D STATEMENT.0990;

0399-18 1000CKSTATI CLC ;GET PAST NEXT BASIC039A-ASSC 101.0 LDA *CLAD ;LINE ADDRESS AND

BASIC039C-6904 1020 ADC #4 ;STATEMENT NUMBER.1030;

039E-8SSA 1040 STA *TMP2 ;SAVE THE ADDRESS.03AO-9002 10S0 BCC =+303A2-E6SB 1060 INC *TMP2+1

1070;03A4-88 1080 DEY

11

Page 12: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 12/48

03A5-B15A03A7-20E20303AA-855903AC-B17703AE-C803AF-20E203

03B2-C55903B4-DOCE

03B6-C90003B8-DOEBMATCHING.

03BA-6803BB-68

03BC-BA03BD-BDFFOOFOUND.

03CO-C98F03C2-D015

03C4-A57803C6-4803C7-A57703C9-4803CA-A53703CC-4803CD-A536

03CF-4803DO-A98D03D2-4803D3-A9C603D5-4803D6-A9C303D8-48

03D9-20CDC7

03DC-2000C8

03DF-4C7600

03E2-C92003E4-F00803E6-C93A03E8-F00403EA-C92C03EC-D002

1090111001 SEARCH BASIC FOR MATCHING LABEL

111011120MATCH11301140115011601170

118011901200112101220

(TMP2),YCORRECT*TMP1(CHAD) ,Y

LDAJSRSTALDAINYJSR CORRECT

CMP *TMP1BNE NXSTAT

CMP #0BNE MATCH

12301124012501260112701280

PLAPLA

TSXLDA $FF,X

CMP #S.GSUBBNE NOSUB

129013001310113201 STACK CORRECTION FOR GOSUB1330;1340135013601370138013901400

1410142014301440145014601470148011490NOSUB1500;1510SKPLAB1520;1530NOPREFIX JMP GOTCHR

1540;1550; LABEL CHARACTER CORRECTIONS1560;1570CORRECT15801590160016101620

LDAPHALDAPHALDAPHALDA

PHALDAPHALDAPHALDAPHA

*CHAD+1

*CHAD

*CLIN+1

*CLIN

1$8D

#H,SUBRET

IL,SUBRET

JSR SETLAD

JSR SKPSTT

CMPBEQCMPBEQCMPBNE

12

1

CORRECT 11 :

CORRECT 1# I ,

CORRECT 2

;CHECK IF THE;LABEL MATCHES THE;SPECIFIED LABEL.

;NO MATCH FOUND.

;END OF LABEL?;NO, CONTINUE

;MATCHING LABEL

;GOSUB ACTION ?;NO, THEN OR GOTO.

;SET LINE ADD.

;SKIP STATEMENT.

;BACK TO BASIC.

Page 13: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 13/48

03EE-A900 1630CORRECTI LOA #003FO-60 1640CORRECT2 RTS

1641;1642; SYSTEM ADDRESS EQUATIONS1650;1660CLIN .01 $36 ;BASIC CURR LINE NO1670BSTR .01 $28 ;BASIC START ADD1680CHAD .01 $77 ;BASIC CURR CHAR ADD1690CLAD .01 $5C ;BASIC CURR LINE ADD1700 ;

1710GETCHR .01 $70 ;GET NEXT CHAR ROUT1720GOTCHR .01 $76 ;GET CURR CHAR ROUT1730;1740S.THEN .01 $3E ;STACK KEY 'THEN'1750S.GOTO .01 $AC ;STACK KEY 'GOTO'1760S.GSUB .01 $8F ;STACK KEY 'GOSUB'1770S.0NDO .01 $69 ;STACK KEY 'ON.DO'1780 ;1790UNDEFD .01 $C7EB ;UNDEF'D STAT ERR1800SETLAD .01 $C7CD ;SET NEW LIN~ ADD1810SKPSTT .01 $C800 ;SKIP REST OF STAT1820 ;18300N.RET .01 $C85F ;ON.DO RETURN ADD

1840SUBRET .01 $C6C3 ;GOSUB RETURN ADD1850;1860TMPI .01 $59 ;WORK SPACE1870TMP2 .01 $5A ;WORK SPACE1880 .EN

HOOKUP = 033A LABELS = 0347NLABEL = 0352 LABELl = 0355CHKLAB = 0350 SCOMMA = 0371FLABEL = 0370 NXSTAT = 0384CKSTAT = 038C CKSTATI = 0399MATCH = 03A5 NOSUB = 0309

SKPLAB = 03DC NOPREFIX = 03DFCORRECT = 03E2 CORRECTI = 03EECORRECT2 = 03FO CLIN = 0036BSTR = 0028 CHAD = 0077CLAD = 005C GETCHR = 0070GOTCHR = 0076 S.THEN = 003ES.GOTO = OOAC S.GSUB = 008FS.ONDO = 0069 UNDEFD = C7EBSETLAD = C7CD SKPSTT = C800ON.RET = C85F SUBRET = C6C3TMPI = 0059 TMP2 = 005A

13

Page 14: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 14/48

BASIC 4.0. DOS 2.0 and The Relative Record System

Commodore is now distributing computers and disks withnew operating systems. These are, of course, BASIC 4.0 andDOS 2.0. But many users that have BASIC 2.0 and DOS 1.0 areasking themselves, "Should I upgrade 1".

The new operating systems offer many advantages over theold, but there are cases where upgrading may hurt more thanhelp. This would refer to those who I} have a working system

performing without mishap, and 2) don't do any programming oftheir own. More specifically, this would be businesses thathave aquired equipment and a custom program(s) to performspecial tasks. There are suttle differences in the newsystems that may cause discrepencies once upgraded. However,this does not rule out the possibility of upgrading. Highercapacity may be necessary to maintain your systemsefficiency. This would mean a "forced" upgrade to the S050disk, which· contains the new DOS, and program modificationmay be required.

Serious programmers, on the other hand, should consider

upgrading as seriously as their programs. Some new featuresare:

BASIC 4.0

1. Garbage collection time has been reduced to negligible.

2. Shifted RUN/STOP loads and runs first ~ file.

3. Oisk error channel read automatically into OS and OS$,same as TI and TI$ read the clock. These new variablesare one reason programs may require mods. See articlethis issue on converting.

4. PRINT. command omits line feed after carriage return onfiles OPENed with a logical file number less than l2S;l2S or greater still sends CRLF.

5. Disk commands now included in the BASIC.2.0 Gould handle the disk, PRINTtingchannel was somewhat clumsy.

BASIC 2.0

LOAO"progn,SSAVEnl:progn,S

VERIFynl:progn,SOPEN 2,S,6,nl:file,s,w"

CLOSE 2

LOAD"$ln,S:LISTPRINTiI5,"NI:title,xxn

" "Sl:progn

, I nVln

I I nOI=O"I I nRI:file=l:prog"

II "CI:prog=O:prog"

Al t hough BASICto the command

BASIC 4.0

DLOAD"prog"OSAVE"prog",dlVERIFY"l:prog",S00PENt2,"file",uS,dl,w

;defaults to dO;no changeidefaults unit S,omit w for readno change for USR files

;omit "12" and "dIn andclose all files ON uS

dl

DCLOSEt2,dl ON uS

DIRECTORY dl or CATALOGHEADER"title",dl,ixxSCRATCH"prog",dlCOLLECT dlBACKUP dO TO dlRENAME "prog",dl TO "file",dl

COpy "prog",dO TO "prog",dl

Page 15: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 15/48

Direct access disk commands do not change in BASIC 4.0 (i.e.format is still PRINTI15,"ul", b-a, b-p, etc.) but do changein DOS 2.0. (see DOS 2.0 below). Also note that theINITIALIZE command does not get keyword priveledges in BASIC4.0. BASIC 4.0 was designed to work best with DOS 2.0 whichdoes automatic initializes. BASIC 4.0 also has othercommands that work only with DOS 2.0:

APPENDI2,"file",dlCONCAT "more data",dO TO "existing data",dl

RECORDI2, 3000, 5

The APPENDI command OPENs an existing file for writ1ng.DOS 2 positions to the end of that file such that data can be

"appended".

The CONCAT command concatenates one file "TO" anotherexisting file (SEQ type files only). Concatenating waspossible with the DOS 1.0 'C'opy command, but an extrasequence of scratch and rename commands would be necessary toaccomplish the above:

DOS2

DOSI

CONCAT "more data",dO TO "existing data",dl

PRINTI15,"Cl:temporary=1:existing data,O:more data"PRINTI15,"Sl:existing data"PRINTI15,"Rl:existing data=l:temporary"PRINTI15,"SO:temporary"

Thanks to DOS 2.0, a single BASIC 4.0 command does it all!But remember, DOS 2.0 does the work; BASIC 4 only sends thecommand string to the disk command channel.

RECORDI works the DOS 2 Relative Record System. Thisfeature of the new DOS makes it virtually indispensable!

Although the above three commands belong to BASIC 4.0,they can be simulated with BASIC 2.0, however, DOS 2.0 mustbe in the disk for them to wor k , (See article on DOS 2.0commands from BASIC 4.0)

DOS 2.0

1. Automatic initializing.

2. "@" SAVE with replace fixed.

3. Formatting and Duplicating approximately 5 times faster.

4. Directory track and 6 other tracks have 1 less sector for144 directory entr ies max and 664 blocks free max. Itwas felt that the recording density for DOS 1.0 diskettemiddle tracks was too high for reliability. DOS 1.0diskettes will require converting to work on DOS 2.0 (seeCOpy command below). Although both diskette types can beread on either DOS, writing DOS 2 diskettes with DOS 1 isfatal. DOS 2 doesn't allow writing to DOS 1 disks.

15

Page 16: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 16/48

Page 17: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 17/48

Example Set-Up

First you must decide how many bytes maximum yourLnformataon will need. This will be the number of bytesmaximum per field plus one byte for a carriage return at theend of each field. You could save on bytes by not usingcarriage returns but then you must know how to split up therecord into fields using MID$ upon retrieval. Once again, nomore than 80 characters without a carriage return.

Once you've chosen a length or Record Size, put it in avariable, say RS. Choose a logical file number, a filenameand a drive and:

DOPEN#6, "FILENAME" ,DO ,L{RS)

You can write or read a REL file once opened. WhenDOPENing for the first time, the record size (RS) must bespecified. After that the length need not be given. If itis, it must be the same as before else a disk error willoccur and the disk will abort the open attempt.

On creating the file, the disk procedes to build recordsin disk RAM. These will be empty until you fill them withdata. An empty record starts with CHR$(255) followed by RS-lCHR${O) IS. (see note 1 below)

You are now ready to store data. The DOPENautomatically positions to record number 1. After a PRINT#,the DOS will position to record 2. This means that placingmultiple strings into a single record must be done using onePRINT# statement, else the strings will go into successiverecord numbers. Assuming R$=CHR$(13) •••

DO 100 PRINT#6,"HELLO"R$;A$;R$;B$;R$;X%;R$;

DON'T! 100 PRINT#6,"HELLO"R$;110 PRINTI6,A$;R$;120 PRINTI6,B$;R$;130 PRINTI6,X%;R$;

This would put "HELLO" in record II, A$ in record 2, B$ inrecord 3 and X% in record #4.

This could be a drawback, especially if your variablesare in an array and you wish to use a loop to output all tothe same record I. This brings us to the RECORD# command.

RECORDILF,{RR) ,(PN)

RECORD# tells the file (LF) to position to record numberRR at byte position PN within the record. The variable PNcan be from 1 to 254. Variables in the RECORD# command mustbe enclosed in brackets. Output using a loop might looklike:

17

Page 18: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 18/48

100 PN=l110 FOR J=l TO NF ;NF=number of fields120 RECORDI6,(RR),(PN)130 PRINT'6, FL$(J):R$:140 PN=PN+LEN(FL$(J»+l ;+1 for carriage rtn150 NEXT

The ";R$;" in line 130 could be left off since this would behandled by BASIC.

Another method would be to concatenate the fields intoone string and output:

100 FL$=""110 FOR J=l TO NF110 FL$ = FL$+FL$(J)+R$120 NEXT130 PRINT#6,FL$

Remember••• strings in memory can be length 255 max. Max RELrecord length is 254. If you print a string to a REL recordthat is longer than the record length, an OVERFLOW IN RECORD

error will occur in the error channel. BUT, the first RScharacters of the string ~ make it into the record; therest will be lost. Should this happen, there probably wonltbe a carriage return at the end of the record. That doesn'tmatter. You will still be able to retrieve this data. As amatter of fact, carriage returns are not necessary at the endof a record, even if the data doesnlt fill the record! "Butwhy?", you ask••••

REL Record Retrieyal

As mentioned earlier, an emptyCHR$(255) followed by RS-l CHR$(O) IS.

DOS.

record starts withThis is done by the

Letls say our record size is 50. If we take thecharacters H, E, L, L, and 0, and send them into REL REC IIstarting at position 1 without a carriage return,(I,e , PRINTt6,"HELLO"; ) the DOS would do as itls told andput "HELLO" into REL REC II with no carriage return. Not toosurprising, eh. However, once thatls done, the DOS procedesto "pad" the remainder of the record with CHR$(O) IS; in thiscase 45 of lem. The DOS is now positioned at REL REC 12.

Now letIs say we position back to REL REC tl with a

RECORDt6,1 command.

The INPUTI command stops on carriage return or EOI. STis set to 64 on EOI, otherwise ST = o. (see note 2 fordetails)

If we now execute an INPUT', the DOS sends the H, E, L,L, and O. But when the DOS sees the CHR$(O) it also sendsEOI which is just as good as a carriage return. ST is set to64 and the DOS positions automatically to the nextrecord; REL REC '2.

18

Page 19: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 19/48

The DOS would also send EOI if the character being sentwas from the last position in the record. In this case therecord is not full, but this means that the character in thelast position doesn't have to be a CHR$(13). You can save 1byte per record this way. For 2500 records that's almost 10full blocks!

Back to our example, INPUTi terminated when the DOS sawCHR$(O) and sent EOI. This has fUrther ramifications.

Suppose you were to execute something like:

100 RECORDi6, 1, 1110 PRINTi6,"HELLO";120 RECORD#6, 1, 20130 PRINT#6,"JIM";

;or "HELLO";R$;

there would be CHR$(O) 's left in between "HELLO" and "JIM"."JIM" would be lost forever to INPUTt, unless you positionback to it using RECORD# before INPUTting. Otherwise, onlyGETi could get it back. The DOS does not send EOI withCHR$(O) when using GETi.

Therefore, if you're anticipating blanks between data,or blank fields representing no data, it's best to constructthe record in RAM first using spaces as field padding.Remember though, leading spaces will PRINTt to the disk, butINPUTt (as with INPUT) ignores them. Leading spaces includespaces at the beginning of a record and spaces immediatelyfollowing a carriage return within a record.

Printover

Recall that the PRINTi command sends the characters intothe record and then pads to the end of the record with

CHR$(O)'s. This can be hazardous, especially if valid dataexists beyond the data being sent into the record. This datawould be wiped out with zeros. One more reason why youshould construct the record in RAM first. You could getaround this by putting the new data into the disk buffer witha "Memory-Write" routine, but that's fairly advanced and wewon't cover that here.

End Of File Detection

The following routine could be used to read the entirecontents of a REL file:

10 DOPENt8,"FILE NAME"20 INPUTi8,A$30 PRINT A$40 IF DS=50 THEN DCLOSEt8 END50 GOTO 20

On DOPENing, the file positions to record 1 and automaticallypositions to successive records after INPUTting each records'valid data. This would continue until reaching a record thathasn't yet been formatted. DS/DS$ would read 50, RECORD NOT

19

Page 20: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 20/48

Page 21: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 21/48

RECORD NOT PRESENT because disk space for a 6th record hasn'tyet been formatted. But 5 records don't fill the buffercompletely; there are still 4 bytes left (252-255). Thesebelong to record #6. The next PRINT# would start puttingcharacters into these 4 bytes, at which point the DOS wouldfind another available scetor, stick it's co-ordinates intobytes 0 and 1, and write the buffer contents onto thediskette. Now the buffer is re-formatted with the first AQ

bytes of the record space belonging to record #6. A DCLOSEwould write the rest of the data to disk. Requesting record

#3000 would force the DOS to format all records inbetweenbefore allowing access to the record.

NOTE 2

1. INPUT# continues to input characters from the diskuntil it sees a carriage return (, comma or a colon but we'llignore these here). The next line of your program should bea check of ST. If there is more data, ST will be 0; if not,ST will be 64. (see ST table, center page)

2. INPUT# also terminates on receiving EOI (End OrIdentify) • EOI has a line of it's own on the IEEE bus.

INPUT# checks this line. If it turns on, then no matter whatcharacter INPUT# has just received, inputting stops and ST isset to 64.

That all sounds like a lot but it really isn't. The

Relative Record System is really quite easy to work. Beingnew, it'll take some getting used to. Once you're stor ingdata in REL RECS, you'll hate to think how you did it anyother way!

21

Page 22: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 22/48

BASIC 2.0 to BASIC 4.0 Conversions (40 column)

Paul Higginbottom,Commodore U.K. Software Department

The best way I found to convert programs, was to divideall of the programs into four catagories. These are asfollows:

1. Programs written entirely in BASIC, with no PEEK,

POKE, USR, WAIT or SYS statements.

2. Programs written entirely in BASIC, with PEEK, POKE,USR, WAIT and/or SYS statements.

3. Programs written partly in BASIC and in machine code,with PEEK, POKE, USR, WAIT or SYS statements.

4. Programs written entirely in machine code.

First, I would like to discuss the utilities I use whenconverting programs. I use BASIC AID for the BASIC

conversion. This has FIND, CHANGE (something the TOOLKITlacks), NUMBER (renumber), KILL (to exit), DELETE, and BREAK(drops you into the monitor). This is a BUTTERFIELDabbreviation of our own BASIC AID (MP096, now on sale for10 pounds! and has 16 commands I think), but forBASIC 4.0. Also I use SUPERMON4.REL (byBUTTERFIELD/WOZNIAK/SEILER/QUITEAFEWOTHERS) which is anadd-on to the monitor commands for 4.0, allowing you to huntfor code or text, disassemble, assemble, list memory in ASCIIas well as hex, step through programs with trace or step,etc. I use a disk unit for conversion, but I should think atape user could do the same sort of thing, only slower. Thememory maps mentioned below have been published and are

avaialable in anyone of a number of current publications.

Now I will go through each catagory, one at a time.

1. This catagory shouldn't need any conversion.

2. Let's take the POKE statements first. Apart fromthose used to alter the screen RAM (which stay the same),usually the corresponding locations from machine to machinecan be found by looking at Jim Butterfield's memory maps,which are public domain documents. The only other problemsthat seem to arise, are when a location_has been POKEd with acertain valu~ to make the PET function in a different way. Agood example of this is the well known one that will disablethe RUN/STOP key. If you understand why it works, thenconversion to BASIC 4.0 is easy. All that is necessary, isto add three to the current contents of 144. On a 2.0 PET,POKE144,49 will disable the stop key. This is three morethan its normal contents (46). Therefore POKE144,PEEK(144)+3would work on either machine. Just to save you the bother,it is in fact POKE144,88 (to disable), and POKE144,85 (toenable), on BASIC 4.0 machines.

22

Page 23: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 23/48

.!.'O.

i1!... . . .. . .~ e:! ~. .

'"

=

J"g-. . . . ".:!:· ;.5:

~:

H I~

"*;~~8 H~~=O . j ; j ;:iii

. - ; : > 0 :: : C JJ!':

j =. .u "0

y~ a.!~;J

:Il:, a . .= e

a i:1::1.:.!... . . . .

~

-=,s

!

=!:l

·~~. . j·

~ ··u~ .:

!~!~0

". .

·.·. .

~ " i l . o.."8 .:u ~3

. I! ,

. .

~~ ~ ~nO.~~~~~~~M~~~nM~~~"M OMM ~

EN ~ nNMMM ••••• ~~~~~~~~~~~~ ~m~ ~

~~M.~~~.~O~NA~~~~~~~~!~~b~!~~~~~~~b~.~!!.~~O~~ """"n~"~MM ••••• ~~~~~W~~W~~~~~ •• ~~~~~

N

~ ~~0o 0 00o 0 00

"~'"'..."W,....CJlC.U~O' ,

"0

~~.~

~~000000000000" N~ . . . . . .0000000000000 gg 00000000000000000 0000

·U• U

".S,.

c,..

U .. " ~"_ Dg!!~,. . . .", ~ •0

0'" ..·i H

oou

""~• U C

..~«cVUV

Q'~

V.. .6i5~ ·V

~.~U

. . . ..'O..0

~ H ~j~ HIIPU>.

O~f>.."<Z>U......Nl IUQO

UUUUUU

'I I I I I

~&moGO

~~:::!!:!~~UUUUUU

-e

V,um

~~UU

"'vant..0.....,"'..:

uuuuuII 11UCO"l1al00...0'". . """'''' . . . .uuuuu

u

.u u, ,e-

u u

OONOUUOoMN

VUUUU

I 11 I(I).................

mUOIalN

uuouu

Page 24: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 24/48

~N~OM~N~M~~~~OCN~m~~~~U~~MUCMO~~~~~~~~~«M~~~~C~~U~N~~N~W~~OC~~~~~UO~M~~NN~~~~OM~~«~~~<N<O~~~<UCN~~UUUUO~~~~~~~OO~~~~~~NNMMM~~~.~ •• ~~~~~~.~~~~~~~=~~~~QU~~~~~~CQOOQ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<~~O~~~<~~~~MU~~~~N~~<Q~~~Q~~WC~U~UOOON~~~~W~~~~~O~N.

~~<~~~~~N~~~mW«CMN~WO~~~~~NN~~~~~~~~~~M~~Q=~~~UU~UC~~~~~~~OO~~~~~~NNM~MMM~.~ •• ~~~~~~~~~~~~m~=~m=~~U~~~~~~WWWWW~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~~~~~~.

W~<UW~<~~~Q<~ ~~~~~N~~~Q~m~Q~O~~U~~.<~~MU~~~U~N~~~~~.Q~~NQ~~~mUUNM~CW~~M~~ONN~~<~~~~=QM~~=mU~Q~UUUUC~~~~C~~CO~~"~~~NN~M~MMM~~.~~~~~~~~~~~~~~mm~~m~QQ~~.~~~

W~~~W~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

gem

" ' " w,"OG>

" . . . . .

"' . .-: . . . . . .

~>C"I

"Il<. .. . .w

0: :o.. .. .

o. . . . ' "11'0",0ca e

. . .o. . .:-. . .'0

OOOC~~~~C~N~M~~UN~~~~QM.~~~O~~<UM~~Mo~mmO~MQMN·~<UU~O~<Q~~~CU~N~~OOMN~.~~OOO~~~~O~N~~~QO~~¢~O.MMMMM~~~~~.~~~~~~wc<~~mm~W~~NN.cmm~~~UUQC~~~N~~=~~C~Q~~QQ~~Qm~m~~Q~~~mm~uuuu~UUUUoououuuu~

~~~~~~QC~N~~UON~~.MWNUNM~~<M~~<CN~~~~~W~M~~~~m

~~~~~~~~~:~~~~~~~~~~~~~~:~S~~~~~~~:~~~~~~~B~B~~UUUUUUUUUUUUUUUUUUUUUUUUUUUUQQQQQQCQCCCCQCCQ~

o ~~c ~~~ QNM~«~M~N~Q~~~Mu~~~m ~c~uc.~~~~~w<

~ ~~~ M•• :~~~~~~:~~~~~:~S~fs~~~~:~~~:~~~~~~~o uuu uuu uUuUuUUUUuUuuuuUuUQCQ QCCCCCCQQCQQW

Page 25: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 25/48

"' . . .:V. . . . . .. . . .. . . . . . ..,'0

"I:. .,1:1:"0:I....

. . . . . . . .01 a ... . . . . .. . ."'VIll.,001

'0

. . . . ."001 . ..0 ..EOI:II:•. .. . .0.0"E. . '". . "

10"010. . . . .. . . . . .. . . .

'0II. .s' ". ..

!~I., ~

j~

~~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ~

"" . . . ,tnO.....t

'r04 . J : J

'0 ..., u~ . . . .

c :o Q)..-t

U . c 0 . .

.uo..

. . '"c . . . .

.uO ..... . . .11>'"Cc:J,..jo""" L!

::I.uO...m ...(1) . . .. .

u"II>" ~. O~C"'NM~~~~~~C"'NM.~C"'NO"'NM.~~~C"'NM •~m ~NNNNNNNNNNMMMMMM~~~~~~~~~~~~~~~ ~

III 0 IU~ L-~ __~N~ ~

r.l

r.l

r.l

0....<. . . . . .o

. . . .11>'0. . . .. . . . .o

.. .0. c > .. . . . . .

" ". . . . .I:

"' . .. .. . . . .'OU

"II>oa . . •O J ". . . . . .. . . . . .. . . .omVII>. .mv

'". . . . .. . . .. .. . : >en o

. .0

.c: . . .> . . > < . > < V . . 01. . . . V V . . . . . . 0.

. . . . 0 0 . . . ."'0 . . . . . . . E e . . . .. . . . .0 .0 f.Q :I

>0 . . . . en . . . .W . . . . E .> < 0

II . . .'"

V0.'0 0 I: > . II '0

.. e ~ .c: 0 I: .c: I:E - < O I 0 III W cC U M

. . . .0

....1 . . . . e:I.... :I'll . . . .0·... 001 lie

. . . II VIIM II:' . , . . . . . . . . ,r.l E E . . . . >11

r.l ~ ....e ....e 0 cu. .. . . . 0 ....0 ....0 M o a ..

. .'0 II 0. . . . . . .II

" ".> < .0 . . . II

8 ->: V V . . . . II . . . .0 0 "'0 . . . . 01

II . . . . . . II" e . . . . . . . .. . . . .0 .0 :> ... :I

. . . . 0" III . . . . . . . .II . . . . V .> < 0 0en . . . 0- 11'0 Ven 0 e . . . . . II '0 '0III ..: . c 0 ccu .c: e cU 0 III W 0" U r.l r.l

II:I 0 . . . N . . . 00 . . . N . . . 00. . . . . . . M . . . N

1 - < 1 1 1 . . . .Ill> I

. . . .

f;;~. . 0 . . . . N . . . . . . In . . . ~e

::;: . .OJ"u . c

. . . ."'01. c . c

....:.

encc"0

"' . . . .. . . . . . .

"' . .. . .'"- < 0 . .

III 0

~

ooo~~~=~=mmmmm=m~m~~««««<

Q.~OMNM~~~~m~<~UQW~ON.~=~<~u~

~COOQOCOc)

~~ an G\ Q ..H' .... e o r ..

~U. . .

J """"0\""""0\0\0\ M

~ ~M"''''''C,hCQQ'' III

,.QQQOQQQQM"''''M MM

~ I " " " ' 4 M " , , . . .. , , , , e a c r . . . -4 C " ' \ U \ " ' " or..

'"

~QOOOOOQO"''''''''''''''''''''''UUUUU OU

~ ON.~m<UWON~~~<U~N=<U~ N'"

:>f""if"""ll"""'t .-4 .-4 .-4r"4....t

I;: r- tMU"I, .. .. ""a3C . .I-

I ~ . . .. -4r-t. . -4 . . .. . .. . .. . .. . .. . .. . ..

I: : oN"\DCIO IIICUII}

I > : "' . . .I~ ~1Il

. ,."'''''''.,..11'\''''11\''''\0\0\0\0

"''' '. . .

I~ . .. .. . , .. .,U' \f '" -'O\CQCr .. . .. .. M " " .. .. . . 0" III

!~"'U"IU"IU\U'\~~~\D~~~\D\D\D\D •••••

I~ ON ....OOCCU"'CN ...'OOCCU"'NOOCCUW

E O\O\O\G'I ~CI\CI\ N 000,I;ON.. '" -CUW -c -cUW

--._.---.

~ ~~~~~~~~~~~~~~~~~~~~~~~e~~~~g~~~ ....Il~~~~~~jr,~~~~~9~e~~~~-Clll~~~~i: 0<...,";'11 ill'" Q;...l;1Il...l....1ll w U U IIIIIo OJ IIIII''''> "> IIIt t Po U Po III"U Po VI U f< f< U ........II"~...l;r . ~ f< 1< Q ~

-

Page 26: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 26/48

. . : I . . : Ir.l W

.~

. . . w w w w I!l I!l

. . . . . . . . . . . . . . . < < . . . . . . . . . .

~ III 0 < 0 < 0 < 0 < • •<, . E -< . . . . . . . . . . < < < . . . . .

~ . . . . . < to to Ul Ul III III III III:> :> 0 <

E :l0 < 0 <

, ~III

'" ' " E -< E - < E - <. . . . . . . .. . . O W . . . . . < < < . . . . .

1. . . . . . ..c .c, Ul Ul . . . . . . . . . . . . . . . .:c . . . . . . . . . . . . . . . . .~ . . . . . . . . . . . . . . . .. . .c .c .c .cIII w Ul Ul Ul Ul

I'"

I~ 0 : 7 ' C C > - > - 0 0 :s :s > > . . . . . .

I~. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . ..c .c .c .c .c .c

I~III III III III III III

~. . . . N . . . . . . 11 '1 . . . . 11 '1 CI'I . . . . 0 N . . . CI 'I

~ . . . . . . 11 '1 N . . . . . . . . . . N 11 '1 N.. ,

~ . . . . . . . . . . . . . . . . . . . . . . . .

. ~ ~r.l

'"Z to

:E Z Z H 0(

' " 0 H H o Q f- o

.~Ul Q ::> f- o ..:I ..:I

'"Z

U ~ '"to

'" '"..:I ..:I 0 E -<'"

..:I

!~:c ..:I ..:I to f- o

'"E- <

'" '"U

..:I c, f- o 0 0

'" " 'Ul Ul <

..:I

*> <

'" ' " E -< E -< Ul (;j0( 0( E- < to

'" ~u u

'" '"z

'" '" '"0(

1 ' - ; : to Ul Ul Ul Ul H C

'" '"Ul E- <

.. ;

.c0 : 7 '. . . .. . .

. . . . . G ' t' ". . . NN , . . . , . . .0III 0000. . . ., . . . . . . . . . . . . ,

:s0 O E - < o w

• u ••. . . . E - < l I l w a :0c . . . . . . G I

. . . . . . . . . . . .

~ G l G O G I G I

.c.c.c.c. . :.:.:.:.~:. ~If!'!-:. . . ~VlItOt'1. . . NNN~

III NNNN

. . . .. . . .

~

G O .... - . .C l . t : t : E - t E - t

oor..=GO

E - < ~ " ' C l.c ..:I'"'. . . .

~

c a :ClltO

III CI I. . . . . . .0

·s e n

0000000000000000000000000

XO~~~~~~MOOON~U~~~O~~~~~~MOOwOOOO~~~NNNMMM~~~~~~~~~~~~~oorooorooororororororororororororooooooooooooororo

V"r

rorooorororooooooooorororooooorororororooororoooro

U~~NoOO~~Noro~~Noro~~NOOO~~NOOOW~OO~OO~NM~~~~~roro~O~NNM~~~~ONNNMMMMMMMMMMMMM~~~~~~~~~MMMMMMMMMMMMMMMMMMMMMMMMM

*"O~NM~~~~ro~O~NM~~~~OO~O~NM~~ ~~~~~~~~~~NNNNN

Page 27: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 27/48

If the program is entirely BASIC, then the USR and SYScommands will not be used (unless routines from the ROMs arebeing used). If ROM routines are being used, again memorymaps are necessary.

The WAIT command is generally only used for keyboardactivity: WAIT152,1 (wait for shift key), and WAIT158,1 (waituntil bit 0 of the number of keypresses in the buffer is a 1;i.e wait until an odd number of keypresses > 0). The two justmentioned would be the same on 2.0 and 4.0.

The USR command would only be used if machine code wasalso used, but that is not covered in this catagory.

3. All hints made in catagory 2 should be observed forthis catagory as well. The USR command uses bytes 1 and 2 asan indirect address to a machine code routine. The parameterin the USR command is 'floated' and put into the firstaccumulator. The address POKEd into the bytes 1 and 2 willobviously not need to be changed, but the actual machine coderoutines, will more than likely need to be changed. Theroutines most commonly used by USR routines are FLPINT

,(floating point to integer conversion for accumulator #1, andof course INTFLP (the other way round!). The cor respondinglocations can again be found in the Butterfield memory maps.Use FIND/POKEI/ to find the USR command set-up statements,and work out the hex address. Use SUPERMON to disassemblethe USR code, and make any changes on the screen (JMP's intoROM usually). You should also know where your program startsin memory. To find this out off of a disk unit on a BASIC4.0 machine, the following program will do:

10 INPUT"FILENAME" ;F$:INPUT"DRIVE" ;DR20 DOPENtl,(F$),D(DR):IF DS THEN PRINTDS$:GOT060

30 GETtl,A$,B$:N$=CHR$(O)40 AD=ASC(A$+N$)+ASC(B$+N$)*25650 PRINT"PROGRAM STARTS AT"AD60 DCLOSE#l

You may want to add a little hex converter into theprogram.

To resave programs that do not start at $0401/1025, youwould need to drop into the monitor (SYS4 for example). Thenyou would need to see where your program ends by typing in.M 002A 002A <RETURN>. The contents of 002A,002B are the endof your program (LOW, HIGH). Let us say for example that.: 002A 40 lB 40 lB 40 lB 00 00 appears. To save yourprogram onto drive 0 on disk, you would need to type:-

.S "0:FILENAME",08,033A,lB4l! !

Start address($033A for example)

1 More than necessary,because the monitordoesn't save the last byte!

23

Page 28: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 28/48

4. Programs written entirely in machine code usuallyfall into three catagories.

(i) Those that use ROM entry points, and systemvariables allover the place.

(ii) Those that only use system variables (keyboard

usually) •(iii) Those that manage everything by themselves.

As before, I will handle each case separately.

(i) Tiresome, because usually the whole program willhave to be disassembled onto paper, and the listing gonethrough with a pen, whilst clutching memory maps!

(ii) Shouldn't be too much trouble, since most systemvariables are the same.

NOTE: $97 (151) = Keyboard Matrix coordinate on graphicskeyboards,

= Unshifted ASCII on business keyboards.

(iii) Will almost certainly work. Only keyboard type may

cause problems.

Editor's Note:

SUPERMON4.REL and AID4 are available from all CanadianCommodore dealers as part of the Commodore AssemblerDevelopement Pak.

Most programs will probably fall into category 1 andwon't need too much conversion at all. If a program runturns suddenly quite, check for the obvious first (i.e. STOPkey disable and don't forget that nasty screen POKE).

Also remember that BASIC 4.0 has reserved two morevariables besides TI, TI$ and ST. These are DS and DS$; theDisk Status. Any of these on the left of an "=" sign willcause ?SYNTAX ERROR, however, they are allowed on the right.If your date or something appears as "00, ok, 00, 00" or if avariable starts acting weird then you've probably missed one.

Programs using PRINT# should also take note. The PRINT#command no longer outputs aLINE FEED after the car riagereturn unless the logical file # is 128 or greater. Thiswon't need too much attention since most programmers inhibitline feeds in their PRINT# statements by following with

CHR$(13);. However, if for some reason the program dependson that line feed, simply change the file numbers to 128 orgreater.

One last point to bear in mind (although chances of thisone surfacing are slim to nil) is the fact that stringsstored in RAM now require two more bytes of overhead. Thisgets you the faster garbage collection. However, if your 2.0system packs PET's RAM to capacity with a lot of good strings

24

Page 29: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 29/48

(i.e. large string arrays with considerable length strings)then on 4.0 these two extra bytes per string can add up andpossibly cause ?OUT OF MEMORYERROR. Once again, highlydoubtlful.

Although converting programs .can be a pain, theadvantages of BASIC 4.0 make it all worth it.

25

Page 30: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 30/48

DOS 2.0 Commands from BASIC 2.0

I really shouldn't be telling you this because Commodoredoes not reccommend this combination of equipment. However,there are still owners of the original 8k PETs that haveupgraded to BASIC 2.0 to work disk, but can't upgrade toBASIC 4.0 because there simply aren't enough sockets on theboard. BASIC 4.0 requires one ROM installed in the $BOOOsocket which does not exist on original machine boards.

If you have a PET/CBM that came with BASIC 2.0 (three

empty sockets), I strongly reccommend that you upgrade toBASIC 4. If you bought the machine after July 1st, 1980,then the upgrade is free, so why not! The advantages ofBASIC 4.0 are listed in another article in this issue.

For those of you who don't upgrade your BASIC but doupgrade your DOS, you'll have to use the PRINTt15," commandto access some of the new DOS 2.0 features. Of course all ofthe old DOS 1.0 commands remain the same except for "B-W";use "U2" instead.

APPEND!

This BASIC 4 command OPENs a SEQ file for appending:

BASIC4:BASIC2:

APPENDt6, "FILENAME"OPEN 6,8,4,"0:FILENAME,A"

;defaults to DO,U8;,A for append

CONCAT

This one's quite simply a variation of the DOS1.0 Copycommand. However, if sent to DOSl.O, a dos syntax errorwould be placed in the error channel.

BASIC4:

BASIC2:

CONCAT "FILE 2",Dl TO "FILE l",DO

PRINTt15,"CO:FILE l=O:FILE 1,1:FILE 2"

RECORD!

Two commands are affected here. First you need to DOPENa relative file, specifying the length of each relativerecord; 50 in the following example:

BASIC4:BASIC2:

DOPENt6,"REL FILE NAME",L50OPEN 6,8,SA, "O:REL FILE NAME,L"+CHR$(50)

(See BASIC 4.0 and DOS 2.0 for more on The Relative Recordsystem, this issue).

The RECORDt command uses the logical file number, butthe BASIC 2.0 artificial RECORDt command uses the secondaryaddress (SA) that you chose in the OPEN command. In BASIC4.0 the DOPEN command choses an SA for you.

BASIC4:BASIC2:

RECORDt6, (RR), 2 ;RR is reI rec tHI = INT(RR/256) : LO = RR-HI*256PRINTt15,"P"CHR$(SA+96)CHR$(LO)CHR$(HI)CHR$(2)

The "P" stands for Position. The command tells the DOS toposition to relative record number RR. The "2" tells the DOS

to position to the second character of the record beforereading or writing. 96 is added to SA because that's howRECORDt does it.

Page 31: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 31/48

This program demonstrates how to use the artificialrelative record commands. BASIC 4.0 users should be able toreplace them with the high level syntax.

10001100111011201130

1140115011601200122012301240125012602000200520102020

203020402050206020702080300030053010 :REM ** WRITE A RECORD **3020 :3030 INPUT"RELATIVE RECORD NUMBER3040 PN=l:INPUT"DATA"iA$

3050 GOSUB9200:REM POSITION DISK3060 GOSUB9000:REM CHECK THE DISK3070 IFEN<>OTHENGOSUB91003080 PRINTt2,A$:GOT012004000 CLOSE2:CLOSEl:END90009001900290039005901091009101

91029103910592009201920292039205921092209230

OPENl,8,15:REM OPEN I/O CHANINPUT"[CS]FILENAME "iF$

CLOSE2:0PEN2,8,2,F$:REM OPEN ITGOSUB9000:REM ANY ERROR?IFEN=OTHEN1200:REM NO - GO ONIFEN<>62THENGOSUB9100:ENDINPUT"RECORD SIZE "iRS

F$=F$+",L"+CHR$(RS) :GOTOIII0INPUT"READ,WRITE,END "iA$

A$=MID$(A$,l,l)IFA$="R"THEN2000IFA$="W"THEN3000IFA$="E"THEN4000PRINT" [CU]"i:GOT01200

:REM ** READ A RECORD **

·NPUT"RELATIVE RECORD NUMBER "iRR

INPUT"RECORD POSITION "iPN

GOSUB9200:REM POSITION DISKGOSUB9000:REM CHECK THE DISKIFEN<>OTHENGOSUB9100:GOT01200INPUTt2,A$:PRINTA$:GOT01200

.. ;RR

:REM ** READ DISK MESSAGE **

·NPUTtl,EN$,EM$,ET$,ES$

EN=VAL(EN$):RETURN

:REM ** PRINT DISK MESSAGE **

·PRINTEN$","EM$","ET$","ES$:RETURN

:REM ** DOES RECORDt2,(RR),(PN)

RH=INT(RR/256) :RL=RR-RH*256C$="P"+CHR$(2+96)+CHR$(RL)+CHR$(RH)C$=C$+CHR$ (PN)PRINT'l,C$:RETURN

27

Page 32: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 32/48

This is the complete list of DOS bugs compiled by Mark Clarkeand Paul Higginbottom of Commodore U.K. Most aren't toorotten and we've added fixes where possible, but the ultimatefix is upgrading to DOS 2.X.

DOS Bugs Date: 25th June 1980 Revs: Jan/81

The list below is a guide to the errors that we areaware of through reports, and internal research.

Below is a list of all the release versions of the DOS andtheir ROM numbers.

DOS Description ROMs

1.0 standard 2040/30402.0 upgrade 2040/30402.5 standard 8050

901468-06/07 & 901466-02901468-11/12/13 & 901468-04901462-01/02 & 901465-02

The DOS 2 series is designed to work with pets that haveBASIC 4.0. All PETs (apart from BASIC 1.0) can run with allversions of the DOS. However certain facilities (e.g

relative record capability) available in BASIC 4.0, will notwork on DOS 1.0. See article on BASIC 4.0 and DOS 2.0 fordetails.

Dos 1.0

1. Save with replace

There are a few problems with the bam here. We suspectthat the problems are side effects of other commands.Solution: scratch first, then SAVE or for those who want tobe extra cautious, SAVE under a temporary file name, scratch

old file then rename temporary to old file name and scratchtemporary file.

2. Rename

This command fails occasionally, although disk unitgives 'ok' error message. We suspect this is caused when(i) the last directory entry has been scratched, (ii) thenumber of entries in the directory (including scratchedentries) is a multiple of eight (i.e the directory fills anexact number of blocks), and (iii) there are other scratchedfiles on the directory elsewhere. Solution: execute RENAME,

then OPEN the file using appropriate file type parameters.Check error channel; if file exists then COpy on same driveto new file name and scratch old file name. This requiresenough free blocks to accomodate both files.

28

Page 33: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 33/48

3. Duplicate

If an error happens during duplicate, the disk will hangtrying the problem again and again. If this duplicatecommand str ing is in an OPEN statement, then the PET alsocrashes, as the PET will not be operational until the filehas been OPENed.

4. Sequential files

If a sequential file of 254 characters (or any

multiple), is written to the disk, then an extra carriagereturn is added to the end of the file. This is because thedisk unit starts a new block (with a CR), when the currentblock is full, before checking to see if end of file isreached. PET will hang if INPUTi reads to the end of thefile.

5. Write protect problem

Any attempt to write data to a write protected diskette,will cause subsequent reading of this and other diskettes(with or without write protect tabs on), to do at least one

write to be made to the diskette. Solution: power down diskunit or send system reset to the command channel i.e.PRINTtl5,"u:" or "uj".

6. Block Allocate & Block Free

There appears to be a problem when using the commandswith numeric parameters. If the parameters are in a stringthen command is ok.

7. Illegal track & sectors

If illegal track or sector parameters are given to theblock commands, then partial overlaying of error messagesresults. Especially as a result of bug number 6 above.

8. Block Free

If an unallocated -block is freed, the block count isautomatically incremented by one, and thus an erroneousnumber of blocks free can be generated (more than 670 !).

Solution: Validate will r.estore order on the diskette.

9. Validate I

If an error occurs while validation of a diskette istaking place, then the bam will be left in an intermediarystate. Solution: re-initialisation of the diskette isnecessary in order to restore it to a safe state.

29

Page 34: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 34/48

10. Validate II

The validate command frees any sectors allocated forrandom access.

11. SAVE & OPEN without drive number

This causes partial updating on both drives, thuscorrupting both barns.

12. DOS handling of the IEEE bus

Occasionally during multiple 'GET#'s, the disk unittransmits a data byte onto the bus, even when the PET hashold of attention. This gives the appearance that a commandis being sent to the peripherals.

13. Extensive copying

We have found that after long periods of usage of thecopy disk files program (for software production) that if theoriginal diskette becomes corrupted, then the drive refusesto initialise any good copies (checked on other drives), and

has to be reset to resume normal operation.

14. Memory read

The byte returned from a memory-read operation is notaccompanied by EOI on the bus. This causes INPUT# to crashthe pet. Solution: GET# seems safer.

15. Buffer pointer at a

A B-P command of zero sets the buffer pointer to 1.

Dos 2.Q

1. Disk full message too late

If a file is being written to the disk (see Note 1) anda disk full message occurs, then because there is no spaceleft, it will be impossible to close the file, and recoverthe data. Solution: If in doubt, check error channel. IfDisk Full, *COLLECT disk, format new disk and repeat.

* Diskettes, from any DOS, containing improperly closedfiles should be COLLECTED or Validated only! Do not SCRATCH

files that show a "*" beside the file type on the directory.These files may point into good files. If it does, thescratch command will free all the blocks in the chain whichmight include blocks that belong to the good file. Theseblocks would be overwritten in subsequent operations,corrupting your good file.

30

Page 35: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 35/48

Page 36: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 36/48

The PET NMI Vector Henry Troup, Diemaster Tool

NMI is the Non Maskable Interrupt. An interrupt is a wayof telling the processor that its attention is needed forsomething else - right now! The regular PET interrupts aregenerated every 1/60th second, and are used to process theclock, keyboard, stop key and so on. These interrupts can be'shut off' by setting the interrupt mask. There is, however,another interrupt, NMI. NMI cannot be masked - that means thatit is always active.

On the old PET, the NMI line is held high (off) by thehardware. If you have an old PET, there's nothing you can do.The 6502 NMI vector is at $FFFA-$FFFB. This vector is in ROM.It points to a routine in ROM at $FCFE. This routine does ajump indirect through location $94-95 in zero page. Onpower-up, these locations are set to point at $C389, the BASICwarm start.

So, what can we do with NMI? Well, it can get us out ofa few sticky situations with the disk. The NMI. line isavailable on the expansion port. The port is two connectors of

50 pins each. NMI is on the front connector, on the inside.Count forwards from the break between the two connectors. NMIis the second pin. RESET is the fourth pin. If you have aRESET button which uses an alligator clip to connect to theRESET line, just move it to this pin. Otherwise, get a mini ormicro size clip and connect it to NMI. Now get another lead toground (any of the outer pins on the connector), and connect aswitch between the two. Are we ready?

Now, when you push the RESET button, you ground the NMIline, and the 6502 jumps to the BASIC warm-start. Try it -nothing spectacular, the machine just prints READY and thecursor. OK, now let's do something silly. Try WAIT32768,1,1:

Normally, that's a crash. Push NMI - READY. Neat, isn't it.

At this point, we can see that NMI can recover from somecrashes but for others (processor crashes, not infiniteloops) we'll still need RESET.

But now comes the interesting stuff. We can change theNMI vector at $94,95 to anything we want. If we point it at$FD17, we can use NMI to jump to the monitor at any time.Useful for machine language programs - and all you need is anRTI instruction to get back to where you were. (You could useit to try and examine BASIC while it runs, too.)

But, that's pretty tame. OK, how about having two BASICprograms available alternately. Here's how it can be done.Set up the first BASIC program in the usual place. Set itsend-of-memory pointer to IK short of half of your memory. Thatis, in a 32K machine, set eom to $3COO, in 8k, to $OCOO. Thencopy all of zero-page to the 256 bytes just after the eompointer of this program, and the stack to the next 256. Now,set the start of BASIC to after this stuff. For 32k, that's

32

Page 37: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 37/48

$3EOO. Set the eom pointer to 512 bytes short of the realend-of-memory. That would be at $7EOO. Now save all of O-pageinto this space, and follow it with the stack.

Now, we can write a routine (in the cassette buffer) toswap the two copies of O-page and the stack around. You'llalso have to juggle the top of the stack somewhat. When youpush NMI, the PC and the stack pointer go on the stack. You'llneed to push the X,Y, and accumulator, too. Then do the swap,and restore X, Y, A. Then an RTI should get things rolling.

Point the NMI vector (and the copies of the NMI vector) to thisroutine. Once all of this is debugged, we can start one of theprograms running. Then push NMI, and we swap to the otherprogram. Push the button again, and back to the other program.

I haven't done this, so I can't promise that I didn't misssomething out. If anyone does implement it (and finds a usefor it!), I'd like to hear.

You can also use NMI to handle some outside device. Goodluck!

Editor's Note;

Henry's concept is sound. It would require some carefulthought, although not much programming to accomplish. Anarticle on this would be a likely candidate for BestApllication award of Volume 3.

33

Page 38: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 38/48

1 \ Few Entry Pcints, 1.0 I 2.0 L 4.0 ROHj Jim Bytterfield

Entry points seen in various programmer's machine languageprograms. The user is cautioned to check out the variousroutines carefully for proper setup before calling, registersused, etc. This list is an update to one published inCompute.

ORIG

C357C359C38B

C3ACC430C433

C48DC522C553C567

C56AC59AC6B5C863C9CEC9D2CA27CA2DCA47CA49CEllCE13CEICCFD7D079DOA7D278na

D679D68DD6C4D73CD8FDD9B4DA74

DAA9DBIBDC9FDCA9DCAFE3EAnanananana

E7DE

UPGR 4.0C2D8 B350

C328 B3AOC355 B3CDC357 B3CFC389 B3FFC39B B40FC3AB B41FC439 B4ADC442 B4B6C46F B4E2C495 B4FBC52C B5A3C55D B5D4C572 B5E9

C575 B5ECC5A7 B622C6C4 B74AC873 BSF6C9DE BADBC9E2 BADFCAlC BBIDCA22 BB23CA43 BB44CA45 BB46CDF8 BEF5CDFA BEF7CE03 BFOOCFC9 C187D069 C2B9D09A C2EAD26D C4BCD472 FDllD67B C8D7D68F CBEBD6C6 C921D773 C99DD934 CB5ED9EE CC18DAAE CCDS

DAE3 CDODDB55 CD7FDCD9 CF83DCE3 CF8DDCE9 CF93E3D8 E202E76A D717E775 D722E7A7 D754E7EO D7SDE7B6 D763F156 FlS5

DESCRIPTIONOpen space in BASIC text

Check available memory?OUT OF MEMORYSend Basic error messageWarm start, BasicMain CHRGET entryCrunch & insert lineFix chaining & READY.Fix chainingReceive line from keyboardCrunch tokensFind line in BasicDo NE\ , l

Reset Basic and do CLR

Do CLRReset Basic to startContinue Basic executionGet fixed-point number from Basic.Send Return,LF if in screen modeSend Return, LinefeedPrint stringPrint precomputed stringPrint "?"Print character (output .A to device)Check for commaCheck for specific character' SYN TA X ER RO R'Find fl-pt variable, given nameBump Variable Address by 2Float to Fixed conversionFixed to Float conversionEntry to m.l.m. (dec. 54386 & 64785 resp.)Get byte to X regEvaluate StringGet two parametersAdd (from memory)Multiply by memory locationMultiply by tenUnpack memory variable to Accum #1

Copy Acc #1 to (X,Y) locationCompletion of Fixed to Float conversionPrint fixed-point valuePrint floating-point valueConvert number to ASCII stringPrint a characterOutput 4 ASCII hex chars from $FB,FCOutput .A as 2 hex digitsInput 2 hex digits to ATransfer 1 ASCII hex digit to A in binaryInput 1 hex digit to A

Print system message

34

Page 39: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 39/48

FOB6 FOB6 FOD2 Send 'talk' to IEEEFOBA FOBA FOD5 Send 'listen' to IEEEFl2C Fl28 Fl43 Send Secondary AddressE7DE Fl56 Fl85 Send canned message

Fl67 Fl6F Fl9E Send character to IEEEFl7A Fl7F FIB6 Send 'untalk'Fl7E Fl83 FIB9 Send 'unlisten'Fl87 Fl8C FICO Input from IEEEF2C8 F2A9 F2DD Close logical fileF2CD F2AE F2E2 Close logical file in A

F32A F301 F335 Check for Stop key

F33F F315 F349 Send message if Direct modena F322 F356 LOAD subroutine

F3DB F3E6 F425 ?LOAD ERRORF3E5 F3EF F42E Print. READY & reset Basic to startF3FF F40A F449 Print SEARCHING •••F411 F4lD F45C Print file nameF43F F447 F486 Get LOAD/SAVE type parametersF462 F466 F4A5 Open IEEE channel for output.F495 F494 F4D3 Find specific tape header blockF504 F4FD F53C Get stringF52A F521 F560 Open logical file from input parametersF52D F524 F563 Open logical file

F579 F56E F5AD ?FILE NOT FOUND, clear I/OF57B F570 F5AF Send error messageF5AE F5A6 F5E5 Find any tape header blockF64D F63C F67B Get pointers for tape LOADF667 F656 F695 Set tape buffer start addressF67D F66C F6AB Set cassette buffer pointersF6E6 F6FO F72F Close IEEE channelF78B F770 F7AF Set input device from logical file numberF7DC F7BC F7DF Set output device from LFN.F83B F812 F857 PRESS PLAY •• ; waitF85E F835 F87A Sense tape switchF87F F855 F89A Read tape to buffer

F88A F85E F8A3 Read tapeF8B9 F886 F8CB write tape from bufferF8CI F88E F8D3 Write tape, leader length in AF913 F8E6 F92B Wait for I/O complete or Stop keyFBDC FB76 FBBB Reset tape I/O pointerFDIB FC9B FCEO Set interrupt vectorFFC6 FFC6 FFC6 Set input deviceFFC9 FFC9 FFC9 Set output deviceFFCC FFCC FFCC Restore default I/O devicesFFCF FFCF FFCF Input characterFFD2 FFD2 FFD2 Output characterFFE4 FFE4 FFE4 Get character

35

Page 40: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 40/48

Fun with WAIT Statements Henry Troup, Diemaster Tool

Most of us find that the WAIT statement is of limiteduse. Until recently, the only use I had ever found was:

WAIT 59411, 8, 8

to wait for the cassette recorder play switch. But I didfind some amusing and useful applications for WAIT.

First, a quick review.

The statement WAIT I, J, K causes the value of locationI to be exclusive-OR'ed with K, and AND'ed with J. If theresult is 0, the process repeats until a non-zero result isobtained. Most often, only tangible results are obtainedwhen values of J and K are powers of 2 (1, 2, 4, 8, 16, etc.)since WAIT is a bit testing function. However testing forcombinations of bits can also be useful. Be very carefulthough ••• during WAIT, the STOP is not tested. If a WAITcommand is in entered, be certain a non-zero will occur orelse!

Obviously, most memory locations will be of very littleinterest with respect to WAIT. The only locations which areof interest, in fact, are those which are affected byexternal events. There are two sets of these: the keyboard/cassette/ user port/ IEEE locations in E-page, and a few inzero page. It's the zero page locations I want to talkabout.

GET Loops

The classic get loop is:

1000 GET A$: IF A$ = nn GOTO 1000

which loops until a non-null input is received. The sameeffect can be obtained by WAITing for the keyboard bufferpointer:

1000 WAIT 158, 127: GET A$

This waits until the keyboard buffer count (decimal 158 fornew ROM, 525 for old) is non-zero. It's a little harder tounderstand, but shorter and probably slightly faster. Forexperimentation, try replacing the GET command with INPUT andthe 127 with 2, 4 and 8.

WAITing for a key

Very often, a GET loop is used on a "Push Any Key ToContinue" basis. One interesting alternative is to use:

WAIT 152, 1

36

Page 41: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 41/48

This waits for the shift key to be pushed (old ROM, 516).The advantage is that nothing is put in the keyboard buffer,so that you need not clear the buffer.

Or, if you want to have fun, try exper imenting withWAITing for location 151 - key held down (515, old ROM).WAIT 151, 127, 255 will wait for any key. Specific keys areharder to WAIT for, since WAIT will only wait on one bit at atime. Remember that we're talking about un-decoded keyboardvalues here.

WAITing for the Clock

The real time clock occupies locations 141-143 in zeropage. WAITing for one particular bit in the clock to changestate will give an interesting delay effect. For example,WAIT 142, 1, 1 will wait for the rightmost bit of the secondbyte. This bit changes state every 256 jiffies, or 4 and afraction seconds. WAIT 143, 1, 1 will wait till the start ofthe next jiffy.

While some of these are not particularly useful, playing withthe WAIT statement is quite a bit of fun. If anyone finds

any more useful or interesting locations, I'll be WAITing tohear from you.

37

Page 42: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 42/48

8032 Control Characters

This table is a summary of the 8032 screen controlfunctions. The ESC/RVS characters will display aslower/upper case or upper case/graphics, depending on whichmode you're in. POKE59468,X (where X=12 for graphics, 14 forlower case) still changes modes without changing the gapbetween the lines. Notice that complimentary functionsdiffer by 128 using CHR$ (• See the Commodore BASIC 4.0manual for details on functions.

Control Function CHR$(value) Esc/RVS char.

BELL 7 g

GRAPHICS 142 shift n

TEXT 14 n

SCROLL DOWN 153 shift Y

SCROLL UP 25 Y

SET BOTTOM 143 shift 0

SET TOP 15 0

INSERT LINE 149 shift u

DELETE LINE 21 u

ERASE BEGIN 150 shift v

ERASE END 22 v

SET/CLRTAB

137 shift iTAB 9 i

The above describes the special 80 column screen controlfunctions. The functions can be activated two ways; by usingCHR$ ( and the appropr iate value or, preferably, by placingthe appropriate character in reverse field within quotes.This is done by entering quote mode, hitting 'ESC', then'RVS' and the character. For example, to do a Scroll Downenter quote mode and type 'ESC', 'RVS', shift & 'y' andRETURN. 'ESC' takes you out of quote mode. If you wish to

continue with more characters following the Scroll Downyou'll have to do an OFF/RVS, another quote and DELete thequote. This is comparable to the cursor control charactersbut not quite so automatic.

Although you could use the CHR$( values, the ESC/RVSmethod saves bytes and will eventually become much morelegible. After all, when was the last time you used aCHR$(17) to do a cursor right. (or is it a cursor up? •• oris 17 delete? •• no, I think it's a cursor down ••• I'd bettercheck ••• hmm)

38

Page 43: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 43/48

There is still another way to activate these functionswithout using PRINT. This is directly from the keyboard.But you say "There is no key on the keyboard assigned to do ascroll down or set top •••". By pressing certain keycombinations simultaneously, the keyboard value that ispassed to the operating system will be the CRR$ value thatactivates the function. This information was published byRoy Busdiecker in Compute #7, but Roy found many combinationsthat do the same functions. I've listed only the easiest

ones to remember.

Control Function Key Combination

TEXT BOTHShifts / n

GRAPHICS

SCROLL DOWN LeftShift / TAB / I

SCROLL UP

INSERT LINE

Shift / z / A / L

Z / A / L

Shift / RVS / A / L

RVS / A / L

Shift / TAB / leftarrow / DEL

/ TAB / leftarrow / DEL

Shift / TAB

TAB

SET BOTTOM

SET TOP

DELETE LINE

ERASE BEGIN

ERASE END

SET/CLR TAB

TAB

The two empty spaces beside TEXT and SCROLL UP are emptybecause they haven't been found yet. If anyone does, please

let me know.

The window can also be POKEd to size. The pokes are:

Screen TOP: 224,T where T=O to 24BOTTOM: 225,B where B=T to 24

LEFT: 226,L where L=O to 79

RIGHT: 213,R where R=L to 79

I'm not sure what weird or interesting effects you canget by making TOP less than BOTTOM or LEFT greater thanRIGHT. This is handled by the 6845 Screen Controller chip.The 6845 does all kinds of neat things which we'll cover in afuture Vol 3 Transactor.

39

Page 44: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 44/48

More On 80 Columns

A halt-scroll key has been added to the 8032. LIST afairly long program and touch the .." key. To restartscrolling, hit the left arrow key which is also theslow-scroll key.

ESCapeinsert modecharacters).

quite simply escapes you from quote(where cursor keys get displayed as

mode orreverse

SYS 54386 is the command to Call the monitor rather thanbreak to the monitor which can be done with SYS4.

POKE 144,88 disablesPOKE 144,85 enables.

the STOP and the clock.

To clear the window hit or PRINT 2 HOMEs consecutively.If a "window reset disable" were desired, it would be easyenough to insert a pre-interrupt routine to zeroize the homecount ($E8) so that the 8032 would never see 2 HOMEs in arow. The code would be LDA #0, STA $E8, JMP (the IRQvector). Enter it fast with these steps:

1. Enter m.l.m. with SYS42. Type: m 027a 027a3. •: 027a a9 00 85 e8 4c 55 e4 004. Now take the cursor up and change the

IRQ vector to 027a <RETURN>5. Exit the mlm with x <RETURN>6. Set a window with the key combination (above)7. Just try and clear it!

Best use for this would be for bulletproof INPUT. Theprogram would set the window to one screen line with

rightwindow - leftwindow = max input length. Then OPEN 1,0(input file from the keyboard) and use INPUT#l,A$. This way,no question mark is printed and hitting RETURN with no datainput doesn't break out of the program. The window could notbe cleared by the user either thanks to the pre-interrupt.Wella! •••failsafe keyboard input!

40

Page 45: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 45/48

The Toronto PET Users Group

Over the past 18 months, the TPUG hasbeen meeting at Sheridan College's OakvilleOntario campus. On behalf of Commodore, theclub executive and the members, I'd like tothank Sheridan for providing an excellentfacility. Special thanke to Frank Winter, TedBangay, Margo Martin and Dave Langden formaking it all possible.

The TPUG has now moved its meetinglocation to Leaside High School (south side ofEglinton Ave E., just east of Bayview Ave.)Meeting dates are scheduled for February 11,March 11, April 8, May 13 and June 10.

The TPUG is alsocompiling a library ofprograms. These programshave been categorized intoMachine Language andutilities, Music, Games,

Education, Math andScience, Medical,Business, Ham Radio,Telecommunications andMiscellaneous. The diskswill be made available toclub members only (regularor associate members) at$10.00 each. SeeTransactor #11 formembership particulars.

Disk Drive No. 0: best

michigan 1

universal wedge

qubic.alt

keno

mousemaze

kingdom Ipies

quandry

dragon.maze!

clouzot!

snake.alt

spade .instructs

magic.square

spades

anti-air Ibus

battleship .alt2

billiards!

clue

dog.star .adven

dominoes

draw.poker

dungeon 1.4

dungeon.alt3

m.b .instructions

madman.race

mille bourne

dice.pig

startrek .alt4

find.color

craps.odds

tank.war .alt

horserace

snowflake

wumpus.alt

listener

Twoavailabledirectoryshown here.

disks arenow. Theirlistings are

Should any other PETclubs wish to makeannouncements in TheTransactor, please don'thesitate to send them in!

Blocks Free

5

41

Disk Drive No.1: tpug-m

tpug-m.l, 1

universal wedge

copy all

supermon 1.rel

supermonl ins

supermon 2.rel

supermon 4.rel

supermon2/4 ins

extramon9g)$I000

extramon9b )$1000

extramon inst

append Irenum .rel

rom test--btfld

trace.rel{basic)

ramtest )$500

screen print

un-new Isys826

keysort2$7454

keysort2-2demo

keysort2-1demo

keysort2$lc54

low case list

disk append

disk mod/vl

disk id corrctor

disk peek

view bam

block get 1.0

bl get )$033a

keyprint /826

disk name (r)

copyprog

keymake

copydisk Isys973

tape test No.

tape write (No.)

copycat !sys934

copycat'sys934

disk logger

catalog

search

utinsel.rel

aid4

compactor

cassette.to.disk

datamaker

keysort.exel6/32

keysort.demo 1

keysort.demo2

keysort .exe8k

cross-ref

basic .aid .exe

Blocks Free

283

Page 46: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 46/48

XDOS 2.2 (C) By Prominico Industrial Electronics

XDOS 2.2 is a "souped up" DOS Support (plus a number ofother neat commands) for PETs with BASIC 2.0. It comes on anEPROM that can be installed in any of the three emptysockets, depending on which XDOS you buy:

XDOS 2.2-9 goes in socketXDOS 2.2-A goes in socketXDOS 2.2-B goes in socketEasy-to-follow documentation

UD3UD4UDS

included

XDOS initialization is done with a SYS. XDOS can alsolive with other interrupt driven software. As long as XDOSis started last, any previous IRQ vector tampering won't bedisabled.

Command Summary

MENU

The MENU command displays a maximum of 36 directory

entries (one drive at a time) starting with drive O. Verypretty! Hitting SPACE continues to display directory entriesfrom drive 0 to the end of the directory. SPACE againpro cedes to display drive 1. STOP clears the screen andreturns to BASIC.

All MENU commands default to both drives, however driveo or I only can be specified by following the command withthe drive number.

As directory entries are displayed, they are assigned anumber from 0 to Z. Hitting the corresponding characterhilights the filename, then LOADs and RUNs the program. Ofthis would not work for SEQ files, which brings us to •••

DMENU

DMENU does a directory listing just like MENU, butselecting a SEQ file will print file content to the screen.Preceding with an asterisk (i.e. *DMENU) would send the filecontents to the printer.

eMENU

Copies multiple files from on drive to another. Quick

and easy to use. Simply select the corresponding charactersand hit return.

SMENU

Works the same as CMENU, but for scratching files.

42

Page 47: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 47/48

Page 48: The Transactor V2 12

8/7/2019 The Transactor V2 12

http://slidepdf.com/reader/full/the-transactor-v2-12 48/48

Index Transactor #12

Transactor Article AwardsBits and Pieces

Exclusive OR ••••••••••BASIC DiffsScreen LoadingMore on NECContest! •••Oops!S ubs. Re newal s

#7 Insert ••••••••••Card Utility ListingPET BASIC LabellingBASIC 4, DOS 2 & ReI RecsBASIC 2 to BASIC 4 ConversionsDOS 2 Commands from BASIC 2 ••DOS Bugs ••••••••••The NMI VectorROM Entry Points •••••Fun With WAIT8032 Control Characters

More On 80 Columns

TPUG News •••••••••A Review: XDOS 2.2 ••••

..........

..

FP2

2334

4

55

56

8

1422262832

34363840

4142..