' +JJJJ ?\>m0M='+l> /+l   d']6@5L&]655]6LF%5 & "L}"BB5L&]6 X  `6 77777777777JJJJx 77L? L7877777777 776i 7 7867 7`77 777777`x =(`(8`5775I7`B` 76`77`>J><;VU<)?<`8'x0|<&HhHh 8 8 8 8V&` aI꽌ɪVɭ&Y:&<&Y:&;: 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8 9: :' 9: :& :x)*++`FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>?8  1 '" *"( (9"1 ( ,.(0# 2  /#0/#0 *?'#07#000'#07#0:"4<*55**5*%5)1)1)1)'#0/#0*5*75**5*:5/#0/#0'#07#0:::*::'#07#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)E(!8b $!H(+ "@H !D)"E` @ $ C ` DQ &J80^݌Hh < <݌ < < h < < < <`HJ>݌h Hh݌`葠葠ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 (G FG HZXj 80x D9$xxH` >( Z>h Z>L=.xxH >hh@(LH>9L>HH/Hh/ H?-З( 8(& 8$8 H` *8HNx`* >x$50x*$50xL9JJJJ`HHjf5 >h $50x`HA>VD;;P >(ED Z> ?$0x8x D9- 8DD# H8`?E Vˆʎ55L $ 5 55555 &a*5`*5` "L&5_*b*JL%u**Lz%`** $  Q(lXJ̥KlV $  Q(lV eօ3L e3L &%R*L &%Q*L d' "L4% N'e*)n*5 5 &`@-e*f*f* 5 "L# "5f*`L %.* *t*Q*L$ %L&*L` "O**P**u** d' "L% N'e*)n*o*o*n* &8ɍ` ^&f\*555L& ^&NR* & "R*ΩL&)\*Z* ʽ LH*v 3h`0h8` " ['L & N'С55 &5`*A*@` +5L^6L65`  \* ?*0 '\* '  Q( ^&\*lZl^?*c*q)H c*h`f*5h*5j*555@O*AP*`u*@`@5&`Q*R*`E 'Ls' ' ' @DAE@u*`8` %@ @A@`@`**@*A`M5 ) "L&`8@AW*c*@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@c*h8&ȑ@Hȑ@Ah@L'Hȑ@ȑ@* htphso`hMhL`9V*8U*897T*6S*67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- (   Ϡ734@~3!+,W,o,*--,,9,-.-~3~3,,,,~3~3,,,,~3_*3 j.5 *H*H`Lc3 (+L3 +55555 1^3_* )3J Q*L_3Ls3443 D23455545554 70 / 7 :/354545455454555535L^/5-5I5555 55` / 4/ 2-5! / 08555454 70L3 (+50+5B5C3 2 70L35 *H*H`Lg3L{3505 *H*H` 3 ,5L3 3 1 ,H 1hBL, 0 BH [1 1h`Lo3 35 ,L3 3 1B , 1L,H 0hB@ 55 [1L133 (+34) 34 70L3 3L3 (+ 055L- (+34L{33454445 70 ^/* / 3B0 HȱBh -355 -8 /L38 25` +5 /3 /. /. 3 E7D B. /. /. 0]34S0J4 4) 3 4D4E B. 4  /. 02L3 Ν3 3`HD٤33DEEhiHLG.h ` /5B5-` /5B-` + X05I33383 33DH /4 E03744Ȍ7 X040 7 J7L35B5C`,5p` / R0-55`50` K/ R0-55`575755` 4/ K/ /( 55L/BȱBL/58` D2BH5BH :/ 75Bȭ5Bhh55 R0B5m55ȱB5m55` /LR0557755`*7*75LR0 E0(33 48`433 R0` E033LR0*7*7`777 555I7575757577** 7757`7 L35555f /55555555 ^/`855 i /B58` 41L 15ȱB5 /5555 /5`3 D23ȑB55B5 / 7 55`5555555555 5555`555`55BC55`5555`L3 /5B5C355 0Q340"B4 3` 02۰Ϭ33B438`3i#`3ЗLw35!50>5555`53 /3m3 3 3733i35 3583 /35ЉLw35`H /5h 25L/~43 533`55555555J5m55m5jn5n5n5ۭ55m5555m55m55`"L? 585H ~.(3` # d ֠z# u*`DEX (MADR),YGET A CHAR. MSGXIF ZERO, EXIT COUTPRINT THE CHAR. MSG1AND LOOP BACK #MSGX RRTNRTN ADR. BACK ON STK.  ; ;PRINT ONE CHAR. PRT1 : #$80SET BIT 7 ON COUTPRINT IT AND RETURN ; ;TIMING LOOP FOR BURN TIME TIMI WAIT #PSTBOF CREGB DREGB ; ; OUTPUT TO VIDEO SCREEN PCHAR #$80 COUT1 ; ; R E T U R N S E Q . EXIT SAVEX SAVEY PCHAR   ; ;** D BANK ** PCHAR 00 SAVEX 00 SAVEY 00 LENGTH *-INIT  3ITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ; PCH ENTRY PT. TO CSW SETCSW#PUNCH CSWL /PUNCH CSWH SETDOS  EXIT ; ;** PUNCH ONE CHARACTER ** ; PCH1 CREGB PCH1 PCHAR DREGB #PSTBON CREGB #$01 $32 ; ; INITIAL ENTRY PT. INIT FF PCH ; ; PUNCH ENTRY PT PUNCH PCH SAVEY SAVEX PCHAR PCH1 ; ; HAS DDR BEEN SET? CREGB #$30 #$30 SETCSW ; ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 B ; APCH ; PUNCH AN ASCII TAPE ;  $2000  $800 ; ; E Q U A T E S ; SETDOS $03EA DREGB $C0A2 CREGB $C0A3 WAIT $FCA8 COUT1 $FDF0 ; ; Z E R O P A G E ; CSWL $36 CSWH $37 PSTBOF $36 PSTBON $3E OPNDDR5000 LDLD6:5600" !5120:= p STRIP SPACES FROM B$I uL(B$)T zI1Ll (B$,I,1)" "6030 B$(B$,(L1I)):IL  L(B$):$d%| SETUP LEADER LENGTHK4000:"LEADER LENGTH IN INCHES "j"MIN. LEN.= 6 INCHES ";LDyLD6LD6LD36LD36:PUNCH LEADERT$LD$:LEADER CHAR.I1LD:5000:PUNCH STOP CODE & TRAILER T$CR$SC$:0 PUNCH ST$(I)(EIČ36355:EIA?EIČ36352:ASCIISOP4ĺST$(I):nOP5Č2048,ST$(I),S:OP6Č2048,ST$(I),T:36358::PR#0PSETUP SEQUENCE #RNN1UN$(N)Z(N$)3N$"0"N$:5210_N$"N"N$:SLN$"/"NMAND< END OF SEGMENT1=NSNS1:5120:PR#0M>PE:"^ END OF SEGMENT"[@NS3950AINR%T$LD$LD$LD$LD$:5000:GAPF3510n5650:A$100019:1:958:PUNCH T$EIČ36355:EIAEIČ36352:ASCIIT$;:512:3750 5200:GET NEXT SEQ.#FST$(I)N$(ST$(I),PEC1,LPEC)]5100:PCH. ST$(I)rI(NR%1)3900 M F U N C T I O NB$"M":2200: SEARCH "M"PE38252300: COUNTV(C$):V2V30V9939003510:GET NEXT COMSC  I0% : START THE SEQ. HERE0 34,10M II1:LOOP RE-ENTRY PT.[AU3750k S L A S H|B$"/":2200$SL0:PESL1tN F U N C T I O N~B$"N":2200:SEARCH "N"PE37352300:NLC:GET DIGITS & COUNTN(C$)E ";:A$ T(A$):T3295/ T1T23250< T3295M T3280,3285W 3215t 4000:"NEW NAME ";NA$: 4000:"TAPE NO. ";TN$ TN$"TAPE NO. "TN$: 5500:LEADER T$NA$LD$TN$LD$LD$SC$CR$ 5000:PCH. TITLE+GAP+TN+GAP+E1)):3213? LE(TN$):(TN$,1)" "TN$(TN$,(LE1)):3214b :5:10)"TITLE AND TAPE NO."t 16:"MENU": 8:5:"TITLE: ";NA$ 5:TN$: 5:"(1) NEW TITLE" 5:"(2) NEW TAPE NO. :5:"C/R TO CONTINUE" 4000:"YOUR CHOICTO MEM.% T I T L E & T A P E #M I0:B$"TAPE":2200: SEARCH "TAPE"n LE(ST$(0)):PENA$ST$(0) PENA$(ST$(0),(PE1)):TN$(ST$(0),(LE1PE)) LE(NA$):(NA$,1)" "NA$(NA$,(LE1)):3212  LE(NA$):(NA$,1)" "NA$(NA$,(L FL0:FILE NOT LOADED# 10007 P U N C H` 4000:"ASCII OR EIA (A/E) ";:A$v EI1:A$"A"EI0 4000:"NO. OF PROGRAM SEGMENTS ";NS 4000:"AUTO LINE NUMBERS (Y/N) 6ǎ ʎˎǎ(` >p;@k1 5758493223342526373829FFFFFFFFFF ; LENGTH *-START  T RTLENGTH OF BINARY FILE   OVE" (RNMPTR),YSTORE IT BACK 'RNMPTRRESET PTR LOBYTE TO NEXT LINE RNMPTR+1 RENUM DONE CLEAR ; *ADD ADD LINNUM TO VALUE IN PAGE ZERO AD1,XLINNUM=DIST. TO MOVE LINNUM AD1,X AD1+1,X LINNUM+1 AD1+1,X  &LENGTH *-STARESSES  $(RNMPTR),YGET "NEXT LINE" LOBYTE $LINNUMADD "DIST. TO MOVE" LOBYTE (RNMPTR),YSTORE IT BACK X= ORIG. NEXT ADR. LOBYTE GET "NEXT ADDRESS" HIBYTE (RNMPTR),Y !DONEIF ZERO, "END OF PROGRAM" &LINNUM+1ADD HIBYTE "DIST. TO MT ; ; TEMP 00 LENGTH *-EBURN  0FRGT. NYBLE ONLY FOR HEX VALUE HEXOKTAKE O.K. EXIT HEX1 #$41<41 ? HEXNGYES. NG EXIT #$47>F ? HEXNGYES. NG EXIT SUBTRACT $37 #$37FOR HEX VALUE HEXOK O.K. CLEAR THE CARRY AND RETURN HEXNG SET CARRY IF NG AND EXING:    #$A0SET THE TIMING NO. WAITMON. WAIT ROUTINE     ; ;CONVERT DEC. ASCII TO HEX ;ON ERR, CARRY SET ON RETURN CDAHX : #$7FTURN BIT7 OFF #$30<0 ? HEXNGNO. NG EXIT #$3A>9 ? HEX1YES. CHECK FOR A:F %#$DEX (MADR),YGET A CHAR. MSGXIF ZERO, EXIT COUTPRINT THE CHAR. MSG1AND LOOP BACK #MSGX RRTNRTN ADR. BACK ON STK.  ; ;PRINT ONE CHAR. PRT1 : #$80SET BIT 7 ON COUTPRINT IT AND RETURN ; ;TIMING LOOP FOR BURN TIME TIMIT ; ; TEMP 00 LENGTH *-EBURN  0FRGT. NYBLE ONLY FOR HEX VALUE HEXOKTAKE O.K. EXIT HEX1 #$41<41 ? HEXNGYES. NG EXIT #$47>F ? HEXNGYES. NG EXIT SUBTRACT $37 #$37FOR HEX VALUE HEXOK O.K. CLEAR THE CARRY AND RETURN HEXNG SET CARRY IF NG AND EXING:    #$A0SET THE TIMING NO. WAITMON. WAIT ROUTINE     ; ;CONVERT DEC. ASCII TO HEX ;ON ERR, CARRY SET ON RETURN CDAHX : #$7FTURN BIT7 OFF #$30<0 ? HEXNGNO. NG EXIT #$3A>9 ? HEX1YES. CHECK FOR A:F %#$ ߠrȱȱ ߠZȱȱ 1 , g ʆei  g 8`` ` CONTINUE";A$!A$"X"ġ:1000'F4CLEAR INST. LINE AND DOWNW>19:1:958dH20:1:768ST$(I),B$:PE(6):FIND NUMERICAL VALUE & LENGTH L(ST$(I)):C0:C$"" KPE1PE7 KL2350 CH$(ST$(I),K,1) T(CH$)UTINEq2100:TO INST. LINE6vER%1915,1920,1925Q{"OUT OF MEMORY":1955u"FILE "FI$" NOT FOUND":1955"DISK READ ERROR":1955:4000:"END OF CUSTOM MACRO PRINT/PUNCH ROUTINE":DELAY ....."INPUT X TO STOP" "C/R TO)T2T1NR% ER%51900+FL1:WHOW MANY STRINGS WILL FIT INTO MEMORY?qX(0):X0XX65535UL(X30): L I S T R E C O R D S IT1T2ST$(I)(16384)127Ĺ16368,0:A$!I&l ER% ERROR RO: READ FILE INTO MEMORY*1765ID(ST$(0)):DEALLOCATE ST$VST$(UL)nI0:T10:SET INDEX34,3:4:SET TOPNR%0:READ TO EOFER%0:RESET ERROR #KY(16384):16368,0INVOKE AMPER-READR(FI$,ST$(I),NR%,ER%83ĺ" IF ";:605:" > ";:610:" GOTO N";:600gHV84ĺ" IF ";:605:" < ";:610:" GOTO N";:600HV85ĺ" IF ";:605:" >= ";:610:" GOTO N";:600HV86ĺ" IF ";:605:" <= ";:610:" GOTO N";:600HV99ĺ"ALARM # 500 + ";:600:4HV33İ600:" = ";:605:" * TAN (";:610:")";iHV34İ600:" = ATN (";:605:" / ";:610:")";HV80ĺ" GOTO N";:600HV81ĺ" IF ";:605:" = ";:610:" GOTO N";:600HV82ĺ" IF ";:605:" <> ";:610:" GOTO N";:600/HV26İ600:" = ";:600:" * ";:605:" /";:610aHV27İ600:" = SQR (";:605:" + ";:610:")"HV28İ600:" = SQR (";:605:" - ";:610:")"HV31İ600:" = ";:605:" * SIN (";:610:")";HV32İ600:" = ";:605:" * COS (";:610:")";650:" .OR. ";:6054^HV12İ650:" .AND. ";:605UcHV13İ650:" .XOR. ";:605vhHV21İ600:" = SQR ";:605mHV22İ600:" = ABS ";:605rHV23İ600:"= REM ";:605wHV24İ600:"= BIN ";:605|HV25İ600:"= BCD ";:605-HVNPĺ"N";:KNP1:9007GPĺ5);"G";:KGP1:900VHPĺ09);"H";:KHP1:900k,HV1İ650:16996HV2İ650:" + ";:610:1699@HV3İ650:" - ";:610:1699JHV4İ650:" * ";:610:1699THV5İ650:" / ";:610:1699YHV11İyܑ֠Ԉݑ ` 3L 8ॄȱee [8mHnnhm Lmn`Н``RCD, f ` f`έm ڭЬLȽ   کȑڽȑڎ  (ɍ')鮝茞жȩڢЏLʠopooّҥoȑҥpȑiҥiݥߐ ސLnipٌL_LH xh0ݒ ( HH` L 3L ߅Є ߅҄ ߅Ԅ ߅ք ʠԅވԅߌل܄ݱЅȱHȱЅh څ`ȩȩڠȩڠ   ]  N 0!#))(i#U 7 L_ )fffffffffffffffffffffffffffffffffffffff55fffffffffffffffffffffffffffffffffffffff     (T$)B$"P":2200:PP(6)8B$"Q":2200:QP(6)QB$"R":2200:RP(6)uB$"G65":2200:CM(6):CM1550NPĺ" ";A$:"N";M26 T$(A$,M,1):T(T$) T48T57ĺT$;:1548 " ";:(A$,LEM1);:M6  :THER COPY? ";:A$"A$"Y"1325,INR%2B1470:1000U(ST$(I))0ıdD$;"PR#1"x2048,ST$(I),S:54,240:55,253:1002::PR#0B$"N":2200:NP(6)B$"G":2200:GP(6)B$"H":2200:HP(6)HPT$(A$,HP1,2):HV7ľA$_A$ST$(I):LE(A$)&d15005iM$(A$,3)NnM1(M$"M01")1405|sM$"M00"M$"M02"M$"M30"M$"M99"1405x1445}M$;" READ. CONTINUE(Y/N)? ";:B$(B$,1)"Y"1430D$;"PR#1":" "" ":D$;"PR#0":1445"ANOM11#1700: FILE TO MEM 7( PRINT HM$ FOR SOROCK-D$;"PR#1":FF$\2LE(ST$(0))7(ST$(0),1)" "ST$(0)(ST$(0),(LE1)):1330<:ST$(0):" ":TITLEF34,3:4:SET TOPKTNR%PI1(NR%1)UKY(16384):16368,0ZKY12CORDS HAVE BEEN READ":20000D(ST$(0)):1000OREAD AND LIST ALL RECORDSh1700: READ RECORDS1800:LIST RECORDS:NR%;" RECORDS READ"2000D(ST$(0))1000FORMAT PRINT:"STOP ON M01 ";A$M10:(A$,1)"N"T BLOCK$l:"LAST RECORD IS #";T24mER%51160>p2000UsREMOVE LAST BLOCKtvD(ST$(0)):DEALLOCATE ST$yX(0):RESET POINTERS|ST$(UL): REDIM ST$C(FI$,ST$(I),NR%,ER%):CONTINUE READINGT1T2:T2T2NR%1127"ALL REAND LIST A BLOCK OF RECORDS' O:1765W R10:"HOW MANY RECORDS/BLOCK TO READ? ";NR%o UNR%1NR%UL1103| XST$(UL) [ER%0:I0:T10 ^ INVOKE AMPER-READ aR(FI$,ST$(I),NR%,ER%) dT2NR%1 gER%1900,1900,1900,1900,1130j1800:LISOR EIA PUNCH"0 "5 EIA FORMAT PUNCH W/SPACES"Q "6 EIA FORMAT PUNCH W/TABS"h "7 NEW FILE NAME" "8 CHANGE DRIVE #" "9 END PROGRAM" 20:"OPTION; ";OP OP1OP91005 OP1200,1100,1300,3000,3000,3000,2900,2920,1950 LREAD T48T57950 T45950. T35950J LLE:955: END OF LOOPS B$;Y _ n  M E N U ::5:5:"FILE NAME: ";F$ 8 "1 SCREEN LIST ALL RECORDS" "2 READ BLOCKS OF RECORDS" "3 FORMAT PRINT FILE" "4 ASCII ,A$300,D";D1 :21003 FL0:FILE LOADED FLAGP 2900: FILE NAME & DR.#n XPPĺ14);:KPP1:900;:w Y615 ]QP:KQP1:900: ^615 bRPKRP1:900: g" ERROR ": 600:" = ";:605: LK(LE) B$(A$,L,1):T(B$) LEADER CHAR.=SPACE) KTB$"*":TAB CHAR.\ PAF$(10)(255)(255)(255):ASCII EOL FILL 1013,76:1014,0:1015,147: SET & VECTOR D$;"BLOAD AMPER-READER.OBJ,A$9000,D";D1 D$;"BLOAD PCH8E00.OBJ,A$8E00,D";D1 D$;"BLOAD AMPER-SEARCH.OBJ| ***** CM/POP *****3::HOUSE KEEPINGd4000:"MACHINE ROUTINES ON DRIVE ";:A$:A$D1(A$):D11D1220736252:CR$(13):FF$(12)<D$CR$(4):ES$(27)AEISC$(3):STOP CODEBEISC$(37) FLD$" ":      !(` 12478 35690TVWZ/SUXY,-LNORJKMPQABDGH.+CEFI, !!!P'!<>!8 9 P@60>!0 L ɀ*L !!! >p;@k1 absduvghyQRCTEFWXI2#4%&78), 0 P()0I026e6 7 PD )[ Ɂ )? L > 6 (` OOiLeeLLLL0LLL5IL5IбLL8eL8iLeeLOOOOOOOOAʽLLLLLLLLL8iLuuH hLL 0 LB  ȹ LB̅L9EFGhHhh) JQJJJLJ)LHHEFG(l#.2J-97>EjNWbՑ]mp񩠅aL92DWbr:# LINE# > .STRING. .OLDSTR.NEWSTR. SOURCE FILE<#> # p 8e  Lȱ7 ) LhhLB  ɒ 8ɍɘ Lv LB `$( e`p)2(:YlRLaLBɓ,Ƀɠ`: SYNTAX: BAD FORMAT: MEMORY FULL: BAD RANGEBYTES USEDBYTES REMAININGALL OR SOME?(A/S)?: BAD SLOT OR DRIVE #  YQL  jWHW hW L )|IQi A l9LedeɍH)) @ eh %eɠ#$dHeheLGɖ %LFdɕɈLɄ LGɆ %HɍhhɉfdLvHheɔ[L   )?LBBZ '?J          $ LB IAYA!!:JL):I H  `hhiLi (ɠ B$q*q $c  ɃLBɜ la9a:  *4  $9 I b oLBL I   ` Y X L NL NLol  :;  o ';  &; LBl;  )8l+?;  ):l;  (1*2 LB  j   TLY )4$( J$1I ɃLT!$9 Lj)2 `J/?   fc i j )IQJQ!:BQl?7ʆ 7AY` 4L.  ):(;" LH <)q'q*qq , 7`4?l4 4 $;Ll;8   32)81  (98 MJ78%9<)q(q LB <2qq"l  ):(;  )8*9(  ? ] B+?6Y+S7?XZLL  LiʽWLB     LB L L l;8 LBLl8(d8?  )`  T  +)L  N L ':;?   $[L 7? NeL $[0 3 $[0 Ʉɑ`LB +: 2d1*: $0I ɰf֩L7? %9+1;)`ɍ 'd +5%7LL LLLːEȹE 2"? wn - L L 4!X1G8+,.vT)fy2$Z0 bf$' b$abb p$$ɻ fWfɍ f ) f в`ɍ`  `l  2"*806,& ( ң:.4  $     Ʋζڭƴζǰرζڵζ԰ιԱιͳǰزڲαǰزڭƳαڭƶαزڭͰαǰرڱα԰αͰζ԰ζǵرڶӱζǹӷͰζǰرڱͰζڵζǷжѶհװƴıζǰرζǰرڭαԱʹαǵرڶαǹӵͰαǰذڱͰαڱαǰڭƸαǰڰͰαرڶαԱαͰα԰αǵرڱӱαǹӷͰαǰزڱͰαڰαرƶα   ÅŠɠҠҠΠéԠŠҠÍm8  }ɛ`Ɉ*ɠ,) ɘɈ : 3  ɕ(0@  `)?  @ ɍЗL$U0 B T ɍS ɍ Uj`UT`7ʎ V`889Lm Y a $[0PL La L ,Π҇ͬӶıҬӶı$(l8H)H(h0h(hN OH?%Oh,(,`%R,RR`\ m 1$R02߰.ݰ۰&I $Rp,c ɔɗ @ p]` 1ɠɍSS Ll3 1ɺ)[ pZ@ L ɍڥɍɍ L, L \\  (\ s\0ɠ0۩  ʩL 8L,,,w, ` nLЬӶı¸̱ĠàҨөpi 0  La ~   ` xB  x7ɘ[&&&&ee&&eL7`ɺɰ)`8` ` ( L (I,8L. L  L ʠ! L ɍɬΠ L ɍ 'H4 H`)`  ɠ`% & `^- Lf -' % & L   ɍ` ɍ` ɍ`L,   ( w L[ ~ 80)?i@Ip    ~ p lL Lj L1LxLGLa ' X JJJJX +  WRS78   U vZ[V٭ 3 xɮ W Lm ɒ i L % &   ɿV  #)ɬɭ   L $VLN ȹ4  "T"T$:C8:FP55:3520/ T$"M"T$:C9:FP60Q CCCT$TB$T$:CCCC1:3520e8288:2060 HEXnT$;54,240:55,253:BACK TO VIDEO1002:SET DOS VECTORT$LD$: GET LEADER CHARI1LL:5000:$CR$"N"T$:FP0:C0:CC0:3520E G(T$):T$"G"T$:C1:FP6:3520c T$"X"T$:C2:FP10:3520 T$"Z"T$:C3:FP19:3520 T$"I"T$:C4:FP28:3520 T$"K"T$:C5:FP37:3520 T$"F"T$:C6:FP46:3520 T$"S"T$:C7:FP51:3520 T$D: TOTAL DIGITS'T((T10ND)0.5):SG(T):T(T)FT$(T)SLE(T$)nLETDT$"0"T$:2015T1$(T$,2)"."(T$,4):L1(T1$)SG0T1$"-"T1$T2$T1$L2(T2$)(T2$,1)"0"L2L21:T2$(T2$,(L2)):2035  T500:SEQ. NO.$T$"01":3501;TLD:2000:FORMATT23502:PRINT X+ MOVEZ7mx500:SEQ. NO.}TTZ:2000:FORMAT3503: PRINT Z+ MOVE:: F O R M A TNI2: NO. INTEGER PLACESND4:NO. OF DEC. PLACESTDNIN:((PS2)2)PSEV1*EV1T$"-"T$@3503:PRINT ZINCODPDPIX:b500:SEQ. NO.T$"33":3501:PRINT G33TTZ:2000:FORMATT$"-"T$:3503T1TP:NI1:ND5:SET FORMAT PARMS2003:FORMAT K3505: PRINT KLE(T$)#LE3T$"0"T$:505WLE3ĺ"SEQ. NO. = ";SN:"NEXT SEQ.NO.";SN:500a3500o SNSN1:uL:N500: SEQ. NO. XPS1T$"01":3501[TLDIX:2000:FORMATjT$"-"T$:3502:PRINT XINCoT(IZ):2000:FORMATEV18TDP:2000+"CURRENT DEPTH= ";T1$=TDTDP:2000Z"DEPTH REMAINING= ";T1$p"DEPTH/PASS ";IXIX0142. EXIT ON NEG. NO.IZ.55IX:28.8 DEG."PASSES AT THIS DEPTH ";NP:: S E Q U E N C E #T$(SN) A$:5000:PCH. MDI LINE! 142> ,PS1İ500:T$"91":3501W 1400: GET PASS DATAj 61100: LINE 1} ;1200: LINE 2 @1300:LINE 3 E1400:LINE 4 JPSPS1:NPNP1 ONP0310 T305 : :N E W P A S S D A T A20:1:95F PROGRAM", "ENTER DATA FOR MDI LINE";A$A :LE(A$):A(0)e A$"T"300:JUMP TO THRD. SEQ. LE0160:JUMP TO MDI SEQ. T$CR$SC$:5000: C/R AND STOP CODE LDLD6:5100:PUNCH TRAILER 5:"END TAPE PUNCH PROGRAM": 500:T$|5100: PUNCH LEADER" :3:1C "INPUT THE TITLE ";T$:5000W "TAPE NO. ";T$u T$" TAPE NO. "T$:5000 T$" "SC$:5000 : : START THE SEQ. HERE :"ENTER T FOR THREADING SEQUENCE" "ENTER C/R FOR END OL Z MOVE$ A"INITIAL SEQ. NO. ";SNH F"MACHINE ROUTINE ON DRIVE ";DM[ KDM1DM2103c P70 gD$;"BLOAD PET.A,A$2000,D";DM jLD$" " m: p"LEADER LENGTH IN INCHES " s"MIN. LEN.= 6 INCHES ";LL vLL6LL6:LL36LL36  #MDOD(2DT) %TMD:20007 &"MINOR DIA.= ";T1$F 'TDT:2000_ ("THREAD DEPTH= "T1$z )LD.100: LOOP DEPTH *LD(DT1.5)LDLD.05:42 -"THREAD STARTS AT Z ";TS 2"THREAD LENGTH ";LT 7"PRETRAVEL(INCHES) ";PT <TZLTPT:TOTA  CA$(1)# D$(4):CNTRL D4 TB$"*":TABI CR$(13): C/R fDP0:THRD. DEPTH SO FARHM$(27)(42):ESC *SC$(3):STOP CODEPS1: FIRST PASS:"MAJOR DIA. ";OD"THREADS/INCH ";TP DT.649519TP:DEPTH        2INVOKE AMPER-READ.3R(FI$,ST$(I),NR%,ER%)<3T2T1NR%M3ER%51000S"3"3ESET ERROR #3KY(16384):16368,03INVOKE AMPER-READ"3R(FI$,ST$(I),NR%,ER%),3T2T1NR%63ER%51000@3)2I0:T10:SET INDEX234,3:4:SET TOP2NR%0:READ TO EOF2ER%0:RESET ERROR #2KY(16384):16368,0ILE/LIST COMPLETE":z/0D$;"PR#1" 0L(A$)0L0ı 02048,A$,S:*0D$;"PR#0":2READ FILE INTO MEMORY2D(ST$(0)):DEALLOCATE ST$23000:ST$(UL)&2I0:T10:SET INDEX<234,3:4:SET TOPS2NR%0:READ TO EOFl3ER%0:RM$"M01"12240/M$"M00"M$"M01"M$"M02"M$"M30"M$"M99"12220/12280/M$;" READ. CONTINUE(Y/N)? ";:B$/(B$,1)"Y"12265/D$;"PR#1":" "/" ":$/D$;"PR#0":12280?/"ANOTHER FILE? ";:A$O/A$"Y"500t/::20:"TFFILE TO MEM.}&/LE(ST$(0))0/(ST$(0),1)" "ST$(0)(ST$(0),(LE1)):12070:/ST$(0):" ":TITLED/D$;"PR#0"N/34,3:4:SET TOPX/TNR%b/I1Tl/KY(16384):16368,0.v/KY127ľA$</A$ST$(I)G/12290V/M$(A$,3)o/M11* L I S T R E C O R D S+ +IT1T2+ST$(I) +(16384)127Ĺ16368,0:A$*+I4+.FORMAT PRINT.FF$(12):CR$(13) .:"STOP ON M01 ";A$&.M10:(A$,1)"N"M11?/PRINT HM$ FOR SOROCS/D$;"PR#1":FF$l/13000:& VECTOR '(37632)(37637)23410025:AMPERREADER LOADED ?$'D$;"BLOAD AMPER-READER/A,A$9000")':4000.'"FILE NAME ";FI$3'OP310045 8'"DRIVE NO. ";D"='47082,D:47096,D7B'F$FI$",D"(D)=G'Mt'10040:500]'10030:500{A$uA$"X"ġ:500{ HOW MANY STRINGS WILL FIT INTO MEMORY? X(0):X0XX65535 UL(X30) CLEAR INST. LINE AND DOWN19:1:95820:1:'' HOUSE KEEPING:'36864:D$(4)i'1013,76:1014,0:1015,147: SET TINE}4000:TO INST. LINEER%1010,1020,1030"OUT OF MEMORY":1099"FILE "FI$" NOT FOUND":1099"DISK READ ERROR":1099 J:"END OF PROGRAM" K(13);(4);"FP":1DELAY .....H"INPUT X TO STOP"b"C/R TO CONTINUE";aREMOVE LAST BLOCKfD(ST$(0)):DEALLOCATE ST$kX(0):RESET POINTERSpST$(UL):REDIM ST$uC(FI$,ST$(I),NR%,ER%):CONTINUE READINGwT1T2:T2T1NR%z8458"ALL RECORDS HAVE BEEN READ":2000LD(ST$(0)):500d ER% ERROR ROU:3000 *10:"HOW MANY RECORDS/BLOCK TO READ? ";NR% /NR%1NR%UL805 9ST$(UL) >ER%0:I0:T10 C INVOKE AMPER-READHR(FI$,ST$(I),NR%,ER%) KT2NR%-MER%1000,1000,1000,1000,850DR11000:LIST BLOCKSWER%5895]\2000t510 :OP600,800,12000,500,500,500,10200,10100,1098 X READ ALL RECORDS INTO MEMORY b3000:ST$(UL) l13000: READ RECORDS 11000:LIST RECORDS :NR%;" RECORDS READ"$ 20003 D(ST$(0))< 500[ : READ A BLOCK OF RECORDSg %EAD AND LIST RECORDS :5:5:"FILE NAME: ";F$ 8 "1 SCREEN LIST ALL RECORDS" "2 READ BLOCKS OF RECORDS" "3 FORMAT PRINT FILE" "7 NEW FILE NAME"$ "8 CHANGE DRIVE #"9 !"9 END PROGRAM"P &20:"OPTION; ";OPc 0OP1OP9 | ***** TFILE/LIST **** LOMEM MOVES PROG.START UP TO $A47 SO FPRINT.A CAN LOAD AT $800 ((104)1070 2(13);(4);"BRUN LOMEM.A,A$300":2656, <(13);(4);"BLOAD FPRINT.OBJ,A$800"7 F10000Y PHM$(27)(42): HOME SOROC t R         50 CH$(ST$(I),K,1)% T(CH$)J$ T47T58CC1:C$C$CH$:2355U. KPE7\3 Kb8 tL 4000:ST$(I)Q B$;C$;:10:"COUNT IS ";C:A$[ T "FILE NAME ";FI$^ OP2940h "DRIVE NO. ";Dr 47082,D:47096,D| F$FI$",D"(D).."INPUT X TO STOP"3"C/R TO CONTINUE";A$GA$"X"ġ:1000Ml4CLEAR INST. LINE AND DOWN}>19:1:958H20:1:768ST$(I),B$:PE(6):FIND NUMERICAL VALUE & LENGTH L(ST$(I)):C0:C$"" KPE1PE7 KL23A$ !I&(l ER% ERROR ROUTINEAq2100:TO INST. LINEYvER%1915,1920,1925t{"OUT OF MEMORY":1955"FILE "FI$" NOT FOUND":1955"DISK READ ERROR":19554000:"END OF TEXT/POP ROUTINE"(13);(4);"FP":DELAY ...MPER-READ$R(FI$,ST$(I),NR%,ER%)2T2T1NR%CER%51900NFL1:zHOW MANY STRINGS WILL FIT INTO MEMORY?X(0):X0XX65535UL(X30): L I S T R E C O R D S IT1T2ST$(I)(16384)127Ĺ16368,0:(I),S:(54,240:55,253:1002::PR#0CREAD FILE INTO MEMORYM1765lD(ST$(0)):DEALLOCATE ST$yST$(UL)I0:T10:SET INDEX34,3:4:SET TOPNR%0:READ TO EOFER%0:RESET ERROR #KY(16384):16368,0 INVOKE AM30"M$"M99"1405x1445B}M$;" READ. CONTINUE(Y/N)? ";:B$Y(B$,1)"Y"1430mD$;"PR#1":" "w" ":D$;"PR#0":1445"ANOTHER COPY? ";:A$A$"Y"1325IT1000(ST$(I))0ıD$;"PR#1"2048,ST$1)" "ST$(0)(ST$(0),(LE1)):1330<<ST$(0):" ":TITLEKAD$;"PR#0"aF34,3:4:SET TOPkKTNR%vPI1TUKY(16384):16368,0ZKY127ľA$_A$ST$(I)d1455iM$(A$,3)n(M11)(M$"M01")1405sM$"M00"M$"M02"M$"1800:LIST RECORDS0:NR%;" RECORDS READ":2000ID(ST$(0))S1000eFORMAT PRINT~:"STOP ON M01 ";A$M10:(A$,1)"N"M11#1700: FILE TO MEM ( PRINT HM$ FOR SOROC-D$;"PR#1":FF$2LE(ST$(0))$7(ST$(0),OCATE ST$$yX(0):RESET POINTERS=|ST$(UL): REDIM ST$jC(FI$,ST$(I),NR%,ER%):CONTINUE READING~T1T2:T2T2NR%1127"ALL RECORDS HAVE BEEN READ":2000D(ST$(0)):1000READ AND LIST ALL RECORDS1700: READ RECORDS1103 XST$(UL)$ [ER%0:I0:T10< ^ INVOKE AMPER-READW aR(FI$,ST$(I),NR%,ER%)d dT2NR%1 gER%1900,1900,1900,1900,1130 j1800:LIST BLOCK l:"LAST RECORD IS #";T2 mER%51160 p2000 sREMOVE LAST BLOCK vD(ST$(0)):DEALL "8 CHANGE DRIVE #"* "9 END PROGRAM"A 20:"OPTION; ";OPU OP1OP91005 OP1200,1100,1300,3000,3000,3000,2900,2920,1950 LREAD AND LIST A BLOCK OF RECORDS O:1765 R10:"HOW MANY RECORDS/BLOCK TO READ? ";NR% UNR%1NR%UL U # ::5:5:"FILE NAME: ";F$* 8K "1 SCREEN LIST ALL RECORDS"k "2 READ BLOCKS OF RECORDS" "3 FORMAT PRINT FILE" "4 ASCII OR EIA PUNCH" "5 EIA FORMAT PUNCH W/SPACES" "6 EIA FORMAT PUNCH W/TABS" "7 NEW FILE NAME" $800"4 d1013,76:1014,0:1015,147: SET & VECTOR \ iD$;"BLOAD AMPER-READER.OBJ,A$9000" nD$;"BLOAD PCH8E00.OBJ,A$8E00,D";D1 sD$;"BLOAD AMPER-SEARCH.OBJ,A$300,D";D1 x:2100 }FL0:FILE LOADED FLAG 2900: FILE NAME & DR.#  M E NMEM.A,A$300,D";D1:26565 )D1(36000): RECOVER D1T -36252:CR$(13):FF$(12)n 2D$CR$(4):ES$(27) 3SC$(3):STOP CODE 4LD$" ":LEADER CHAR.=SPACE 5TB$"*":TAB CHAR. 7HM$ES$(42):HOME SOROC <D$;"BLOAD FPRINT.OBJ,A ***** TEXT/POP *****5: HOUSE KEEPINGf4000:"MACHINE ROUTINES ON DRIVE ";:A$:A$D1(A$):D11D122036000,D1:SAVE DR.# LOMEM MOVES PROG.START UP TO $0A60#SO FPRINT.A CAN LOAD AT $800 ((13);(4);"BRUN LO               Y PCHAR   ; ;** D BANK ** PCHAR 00 ECHAR 00 SAVEX 00 SAVEY 00  E#$3F COUTZ EXIT ; ; PUNCH ONE CHARACTER EIADEL#$7F EIAPCHDREGB #PSTBON CREGB #$01 WAIT #PSTBOF CREGB DREGB ; ; OUTPUT TO VIDEO SCREEN VOUT PCHAR #$80 COUT1 ; ; R E T U R N S E Q . EXIT SAVEX SAVERY PT. TO CSW SETCSW#PUNCH CSWL /PUNCH CSWH SETDOS  EXIT ; ; WAIT FOR PUNCH READY ; PCH1 CREGB PCH1 ; ; CONVERT TO EIA PCHAR #$7F #$7F EIADEL #$5B ERRRTN  EIA,X ECHAR #$81 EIAPCH ERRRTNCH PCH SAVEY SAVEX PCHAR PCH1 ; ; HAS DDR BEEN SET? CREGB #$30 #$30 SETCSW ; ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ; PCH ENTFFFFFFFFFFFFFFFFFFFFFFF # 10FFFFFFFFFFFFFFFFFF3E703B406B31 )E3 20010213041516070819FFFFFFFFFFFF )E4 FF616273647576676879515243544546 )E5 5758493223342526373829FFFFFFFFFF ; ; INITIAL ENTRY PT. INIT FF PCH ; ; PUNCH ENTRY PT PUNWDREGB $C0A2 CREGB $C0A3 CSWL $36 CSWH $37 PSTBOF $36 PSTBON $3E OPNDDR $32 SETDOS $03EA COUT1 $FDF0 COUTZ $FDF6 WAIT $FCA8 ;  $2000  $800 ; ; ASCII EIA XTBL )EIA FFFFFF0BFFFFFFFFFFFFFFFFFF80FFFF # FFFFFFFFF      C$:5000#LDLD6:5600 #$:5000=#LDLD6:5100C#"END OF PUNCH PROGRAM"c'Lp STRIP SPACES FROM B$%uL(B$)0zI1LH(B$,I,1)" "6030aB$(B$,(L1I)):ILguL(B$):(#CR$;D$;"CLOSE ";F$<#:20:"ANOTHER TAPE? ";:A$:A$:F#A$"N"NN0:5510P#:20:"END OF PUNCH PROGRAM"Z##T$CR$ST$ i# : P U N C H S E Q #5 5202:5000:S | SETUP LEADER LENGTHy 4000:"LEADER LENGTH IN INCHES " "MIN. LEN.= 6 INCHES ";LD LD6LD6 LD36LD36 :PUNCH LEADER T$LD$:LEADER CHAR. I1LD:5000:  NNNS3060 9100:90005 3000:GET NEXT LINEH 19:1:958:V PUNCH T$` T$:t EIČ36867:EIA EIČ36864:ASCII T$; 36870:PR#0  PSETUP SEQUENCE # RNN1:T$(N) _(T$)3T$"0"T$:5215 dT$CR$"N" SPACES@ (A$,1,1)"N"SN$(A$,2,3):N(SN$):A$(A$,(L4)) (A$,2,1)"N"SN$(A$,3,3):N(SN$):A$(A$,1)(A$,(L5)) 5250:PUNCH SEQ. NO. T$A$:5000:PUNCH REST OF INPUT LINE M$(A$,3) M$"M02"M$"M30"M$"M99"NNNN1 R$;D$;"READ ";F$# B$:GET TITLE1 4000:T$L 4000:"TAPE NO. ";TT$d T$" TAPE NO. "T$ 4000:5000: PCH TAPE# T$LD$LD$SC$:5000:PCH. TITLE GAP : START THE SEQ. HERE 5200:INC.SEQ# B$:L(B$):A(0) 6000:STRIPD$" ":LEADER CHAR.=SPACE: TB$"*":TAB CHAR.Q T0:I3686436867` TT(I):p T7765500 D$;"BLOAD PCH.OBJ,A$9000,D";D1 :4000 "DISK TITLE IS ";T$:F$T$ 20:1:"ON DRIVE ";D2 CR$;D$;"OPEN ";F$;",D";D2 C!X TEXT/PCH#]::36864Nb4000:"MACHINE ROUTINES ON DRIVE ";D1wg4000:"ASCII OR EIA (A/E)0T88FP10:X@0T80FP10:PC0T85FP10:UH16368,0/KY127ľA$&/A$ST$(I)1/12300@D/M$(A$,3)YG/M11M$"M01"12121I/M$"M00"M$"M01"M$"M02"M$"M30"12115N/12130S/M$;" READ. CONTINUE(Y/N)? ";:B$X/(B$,1)"Y"12125Y/D$;"PR#1":" "Z/" ":[/D$;"PR#0":(A$,1)"N"M11).PRINT HM$ FOR SOROC=.D$;"PR#1":FF$V.13000:FILE TO MEM.g.LE(ST$(0)).(ST$(0),1)" "ST$(0)(ST$(0),(LE1)):12017.ST$(0):" ":TITLE.D$;"PR#0".34,3:4:SET TOP.TNR%/I1T /KY(16384):2,D:47096,D!J'F$FI$",D"(D)'L'7t'10055:500G'10050:500e* L I S T R E C O R D Sk+x +IT1T2+ST$(I) +(16384)127Ĺ16368,0:A$*+I4+.FORMAT PRINT.FF$(12):CR$(13).:"STOP ON M01 ";A$.M10:' HOUSE KEEPING$'36864:D$(4)S$'1013,76:1014,0:1015,147: SET & VECTOR .'(37632)(37637)23410045:AMPERREADER LOADED ?8'D$;"BLOAD AMPER-READER/A,A$9000"=':4000B'"FILE NAME ";FI$D'OP310056G'"DRIVE NO. ";D H'4708PROGRAM": DELAY .....2 "INPUT X TO STOP"L "C/R TO CONTINUE";A$_ A$"X"ġ:500e  HOW MANY STRINGS WILL FIT INTO MEMORY? X(0):X0XX65535 UL(X30) CLEAR INST. LINE AND DOWN 19:1:958 20:1:845- "ALL RECORDS HAVE BEEN READ":2000A D(ST$(0)):500Y  ER% ERROR ROUTINEr 4000:TO INST. LINE ER%1010,1020,1030 "OUT OF MEMORY":1099 "FILE "FI$" NOT FOUND":1099 "DISK READ ERROR":1099 J:4000 K"END OF %" MER%1000,1000,1000,1000,8509 R11000:LIST BLOCKH WER%5895R \2000i aREMOVE LAST BLOCK fD(ST$(0)):DEALLOCATE ST$ kX(0):RESET POINTERS pST$(UL):REDIM ST$ uC(FI$,ST$(I),NR%,ER%):CONTINUE READING wT1T2:T2T1NR% z" RECORDS READ" 2000( D(ST$(0))1 500P : READ A BLOCK OF RECORDS\ %:3000 *10:"HOW MANY RECORDS/BLOCK TO READ? ";NR% /NR%1NR%UL805 9ST$(UL) >ER%0:I0:T10 C INVOKE AMPER-READ HR(FI$,ST$(I),NR%,ER%) KT2NR" "8 CHANGE DRIVE #". !"9 END PROGRAM"E &20:"OPTION; ";OPX 0OP1OP9510 :OP600,800,12000,500,500,500,10200,10100,1098 X READ ALL RECORDS INTO MEMORY b3000:ST$(UL) l13000: READ RECORDS 11000:LIST RECORDS :NR%;( ! ***** TEXT FILE/LIST *****,10000NHM$(27)(42): HOME SOROC iREAD AND LIST RECORDS:5:5:"FILE NAME: ";F$8"1 SCREEN LIST ALL RECORDS""2 READ BLOCKS OF RECORDS""3 FORMAT PRINT FILE" "7 NEW FILE NAME      absduvghyQRCTEFWXI2#4%&78),LL67 `̐̐,?0ːʐǐP&)0I026#67 Pf,̐ ǐ)4[ ̐ȐɁ')? Lǐɐ**ɐ**NɐjL> 6ǐ ʐːǐ(` >p;@k15000#LDLD6:5100#<0(#:5000:#p STRIP SPACES FROM B$-uA$""8zI1L[C$(B$,I,1):C$" "A$A$C$amL(A$)s(#CR$;D$;"CLOSE ";F$<#:20:"ANOTHER TAPE? ";:A$:A$:F#A$"N"NN0:505P#:20:"END OF PUNCH PROGRAM"Z##T$CR$SC$:ECTOR  :0 : P U N C H L E A D E RN T$LD$: GET LEADER CHARb I1LD:5000:h n N: O:S E T U P SEQ# PNN1 UT$(N) ZLE(T$) _LE3T$"0"T$:5210 dT$CR$"N"T$ i : :P U N C H SEQ#5205E M$(A$,3)8 M$"M02"M$"M30"M$"M99"NNNN1H NNNS1050X 9100:9000q 1000:GET NEXT LINE 19:1:958: : : PUNCH T$ 8288: 2060 HEX T$; :POKE COUT ADR. INTO CSW 54,240:55,253 1002:SET DOS V 5200:INC.SEQ#+ B$:L(B$):A(0)C 6000:STRIP SPACES| (A$,1,1)"N"SN$(A$,2,3):N(SN$):A$(A$,(L4)) (A$,2,1)"N"SN$(A$,3,3):N(SN$):A$(A$,1)(A$,(L5)) 5250:PUNCH SEQ. NO. T$A$:5000:PUNCH REST OF INPUT LINTLE ";T$:F$T$ 4000:50009 20:1:"TAPE NO. ";T$Q T$" TAPE NO. "T$h 20:1:958:5000 T$" "SC$:5000 CR$;D$;"OPEN ";F$;",D";D2 CR$;D$;"READ ";F$ B$: SKIP OVER TAPE TITLE : START THE SEQ. HERED$;"BLOAD PET.A,D";D1;",A$2000"6 LD$" "_ 4000:"NO. OF PROGRAM SEGMENTS ";NSi 4000 "LEADER LENGTH IN INCHES " "MIN. LEN.= 6 INCHES ";LD LD6LD6 LD36LD36 5100: PUNCH LEADER :4000 "INPUT THE TI TEXT FILE/EIA PUNCH&:Q4000:"MACHINE ROUTINES ON DRIVE ";D1u4000:"N/C FILES ON DRIVE ";D2D$(4): CNTRL D#CR$(13):C/R(SC$(3):STOP CODE-TB$"*":TAB CHAR.2I819281957TT(I):<T776500! A      00 SAVEY 00 ; ; ASCII EIA XTBL ; )EIA FFFFFF0BFFFFFFFFFFFFFFFFFF80FFFF )E1 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF )E2 10FFFFFFFFFFFFFFFFFF3E703B406B31 )E3 20010213041516070819FFFFFFFFFFFF )E4 FF616273647576676879515243544546 )E5 EEN VOUT PCHAR #$80 COUT1 ; ; R E T U R N S E Q . EXIT : SAVEXRESTORE REG'S SAVEY PCHAR RESTORE STATUS AND EXIT ; ;** D BANK ** PCHAR 00THE INPUT CHAR. ECHAR 00THE EIA CHAR. COUNT 00PARITY BIT COUNT SAVEX ATE BIT1 OF COUNT INTO ACC. BIT7 EIAPCHPUNCH THE CHAR. ; PUNCH ONE CHARACTER EIADEL#$7F EIAPCHDREGB #PSTBONSTROBE "ON" CREGB #$01WAIT 30 USEC WAIT #PSTBOFSTROBE "OFF" CREGB DREGBRESETS PIA ; ; OUTPUT TO VIDEO SCRHAR. #$00ZERO THE BIT COUNTER COUNT IGNORE BIT7 #$07NO. OF BITS TO CHECK NEXT NEXT BIT ZEROSKIP IF ZERO #ONE COUNTIF ONE,INC THE COUNT ZERO DEC.BIT COUNTER NEXTLAST BIT? RESTORE BIT0 SHIFT BIT7 OUT COUNTROT#$5BPAST "Z" &ERRRTNYES.INVERSE OUTPUT TO SCREEN GET EIA CHAR. EIA,X ECHARSAVE IT #$81LEGAL CHAR.? EIAPCHYES.PUNCH IT ERRRTN: #$3FSET INVERSE COUTZOUTPUT IT EXIT ; ; APAR : ;ASCII PARITY GENERATOR PCHARGET THE CRY PT. TO CSW SETCSW#PUNCH CSWL /PUNCH CSWH SETDOS  EXIT ; ; WAIT FOR PUNCH READY ; PCH1 CREGB PCH1 EIAASCII? APARNO.SKIP ; ; CONVERT TO EIA PCHARCHECK FOR DELETE #$7F #$7F EIADELOUTPUT THE DELETE PCHARINCL.INPUT CHAR. PCH1SKIP IF V IS CLEAR ; ; HAS DDR BEEN SET? CREGB #$30 #$30 SETCSW ; ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ; PCH ENTEIA INITSKIP ALWAYS PCHE : #$FFSET EIA FLAG EIA ; ; #; INIT. PIA AND SET OUTPUT VECTOR INIT FFSET N,V,AND Z FLAGS PCHAND SKIP ALWAYS ; ; PUNCH ENTRY PT PUNCH CLR. V FLAG PCH PUSH STATUS SAVEYSAVE REG'S SAVEX EIA VECTORS ; CALL 36870 = PR#0 ; "APCH PCHASETUP ASCII PUNCHING EPCH PCHESETUP EIA PUNCHING +PRZERO#COUT1SET OUTPUT VECTOR TO SCREEN CSWL /COUT1 CSWH SETDOSSET DOS VECTORS AND RETURN ; PCHA : #$00SET ASCII FLAG OL REG.ADR. COUT1 $FDF0BYTE TO SCREEN COUTZ $FDF6SCREEN W/O MASK WAIT $FCA8MON.WAIT ROUTINE ; ; Z E R O P A G E ; CSWL $36CONSOLE VECTOR ADR. CSWH $37 ; START : &; CALL 36864 TO SET ASCII VECTORS $; CALL 36867 TO SET ;  ; ; EPCH ;PUNCH EIA TAPE ;  $9000  $800 ; ; E Q U A T E S ; PSTBOF $36STROBE "OFF" PSTBON $3ESTROBE "ON" #OPNDDR $32OPEN DATA DIR.REG.BYTE "SETDOS $03EASET DOS I/O VECTORS DREGB $C0A2DATA REG.ADR. CREGB $C0A3CONTR  GRAM":" T1000,1010,1020,1030> :"C/R TO CONTINUE";T$F 90U 2048,A$:f 2048,A$,N:w 2048,A$,S: 2048,A$,T: A$"/N 002G50X-80000Z100000M08":::3:10 d" N/C LINE FORMATTING ROUTINE"F n"1 NO FORMATING"] x"2 DELETE SPACES"v "3 FORMAT W/SPACES" "4 FORMAT W/TABS" "9 END": "THE INPUT LINE IS": 2000:A$ "YOUR CHOICE ";T T9ė:20:1:"END OF PRO FPRINT DRIVER;LOMEM MOVES PROGRAM UP TO A$0A60]SO FPRINT.A CAN LOAD AT $800~(D$(13)(4):C/R+CONTROL D2D$;"BRUN LOMEM.A"<2656:LOMEM CLEARS ALL VARIABLESFD$(13)(4):REDEFINE D$PD$;"BLOAD FPRINT.OBJ,A$800" Z  z#??ȸŰʠ ԮӠ ͯР! Ϡ  ҠĠŠԮԮʠ ͮ! ͮӠ "ԮӠ Ƞ Ȯʠ Š Ůʠ Π ή Ġ Į Ƞ ҭȮʠȠï͠ïͮˠЮ̠ Š  Ůʠ ůԠ ĠЦנ ͮʠҠԮԮҭҮʠ !ԠԠڠŠ"ԠԠڠŠԠҠԠůȠ ԠůԠ ԯȠ ԯР Ǡ͠ԠԠŠԠӠàŠϠԠŠ ҭҠҠ ůԠŠϠҭ®Ԡנ ˠŠ٠ˠŠĠˠŮԠנׯҠŠ( I0:B$"TAPE ":2200:SEARCH "TAPE "I LE(ST$(0)):PENA$ST$(0)~ PENA$(ST$(0),(PE1)):TN$(ST$(0),(LE1PE)) LE(NA$):(NA$,1)" "NA$(NA$,(LE1)):3212 LE(NA$):(NA$,1)" "NA$(NA$,(LE1)):3213 LE(TN$):(TN$,1)" P U N C H: 4000:"ASCII OR EIA (A/E) ";:A$P EI1:A$"A"EI0y 4000:"NO. OF PROGRAM SEGMENTS ";NS 4000:"AUTO LINE NUMBERS (Y/N) 2K BYTES LONG" KMSG : / "PROGRAM REQUIRES MORE THAN 2K BYTES OF RAM"  0D0D002N E S ; ;INCREMENT PROG. PTR. INCP : TXTTAB INP1 TXTTAB+1 INP1 ; ; ;;INCREMENT EPRM PTR INCE : EPRM INE1 EPRM+1 INE1 ; ; ;TIMING LOOP FOR BURN TIME WAIT : PUSH ACC. ON STK.  PUSH Y ON STK.  PUSH X$00 LOOP (TXTTAB),Y (EPRM),Y INCP INCE WAIT TXTTAB PRGEND TXTTAB+1 PRGEND+1 LOOPLOOP BACK (TXTTAB),YMOVE LAST BYTE (EPRM),Y $FF65BACK TO MONITOR ; ; END BASIC/EROM PROGRAM  (;U T I L I T Y S U B - R O U T I M),YMOVE IT TO EROM  #TLENTRNS LENGTH SEROMIF >= SKIP INCE WAIT SLP1 ; ; ;SET EPRM ADR. SO FOLLOWING ;BASIC PROG. STARTS BURNING ;AT $D030 SEROM : #$30 EPRM #$D0 EPRM+1 ; ; ;MOVE BASIC PROGRAM TO EROM MOVE : #NS2H+1ADRHI ; ";MOVE PROG. STARTING ADR. TO TRNS TXTTAB TRNS4L+1 TXTTAB+1 TRNS4H+1 ; ;SET EPROM STARTING ADR.=$D000 #$00 EPRM #$D0 EPRM+1 ; ;BURN TRNS ROUTINE INTO EPROM ; #$00 #$00 SLP1 TRNS,XGET TRNS BYTE (EPR> TOO LONG ERR EXIT ; CKLO LENGET LOBYT #$D0PROG. < $7D0 ? MVPENDYES. SKIP ERR ERR2K > 2K ERROR EXIT ; ;MOVE PROG. END ADR. TO TRNS MVPEND:  LENPROG. LENGTH #$30+BASE ADR. OF $C830 TRNS2L+1ADRLO LEN+1 #$C8 TROG. END ADR. TXTTABMINUS PROG.START ADR. LEN=LENGTH PRGEND+1 TXTTAB+1 LEN+1 LEN+1=# OF BYTES CKLEN LEN+1 ; ;CHECK PROG. LENGTH >2K CKLEN : LEN+1GET LEN. HYBYTE #$07 >$07? MVPEND< SKIP CKLO= SO CK. LOBYT ERR$10LEN. OF PROG. EPRM $12EROM BURN ADR. ; ;MONITOR ENTRY POINTS ; MOVL $FE2CMON. MOVE ROUTINE ; ;BASIC ENTRY POINTS %BASC $E003BASIC WARM ENTRY POINT ; ; EQUATE TABLE ; ; ; ;COMPUTE LEN. OF BASIC PROG. STAR :  PRGENDPR  ; BASIC/EROM ROUTINE ;BASIC PROGRAM TO EROM  $2000  $800 ; ; Z E R O P A G E ; $TXTTAB $67A/S START OF PROG. PTR. "PRGEND $AFA/S END OF PROG. PTR. ADR1 $3CMON. ADR A1 ADR2 $3EMON. ADR A2 ADR4 $42MON. ADR A4 LEN      20:'p STRIP SPACES FROM B$+'uL(B$)6'zI1LN'(B$,I,1)" "6030g'B$(B$,(L1I)):ILm'{'L(B$):AGTH)&4000:"LEADER LENGTH IN INCHES "H&"MIN. LEN.= 6 INCHES ";LDW&LD6LD6h&LD36LD36{&:PUNCH LEADER&T$LD$:LEADER CHAR.&I1LD:5000:&&PUNCH STOP CODE & TRAILER&T$CR$AF$SC$:5000&LDLD6:5600'!51352:ST$(I)AF$ST$(I): ASCII1%OP4ĺST$(I):L%OP5Č2048,ST$(I),S:g%OP6Č2048,ST$(I),T:z%36358::PR#0%PSETUP SEQUENCE #%RNN1%UN$(N)%Z(N$)3N$"0"N$:5210%_N$"N"N$:SLN$"/"N$%d&| SETUP LEADER LENPE:"^ END OF SEGMENT"%$@NS3950N$AINR%T$LD$LD$LD$LD$:5000:GAPX$F3510f$n5650:A$p$1000$19:1:958:$PUNCH T$$EIČ36355:5015:EIA$36352:ASCII$T$;:5120$ PUNCH ST$(I)$EIČ36355:EIA%EIČ36%#ST$(I)N$(ST$(I),PEC1,LPEC)<#5100:PCH. ST$(I)T# M F U N C T I O Nr#B$"M":2200: SEARCH "M"#PE3825#2300: COUNT#V(C$):V2V30V993900#3510:GET NEXT COMMAND#< END OF SEGMENT#=NSNS1:5120:PR#0$>HERE" 34,10," II1:LOOP RE-ENTRY PT.:"AU3750J" S L A S H["B$"/":2200m"$SL0:PESL1"tN F U N C T I O N"~B$"N":2200:SEARCH "N""PE3735"2300:NLC:GET DIGITS & COUNT"N(C$):3750"5200:GET NEXT SEQ.#1T23250! T3295(! T3280,32852! 3215O! 4000:"NEW NAME ";NA$:j! 4000:"TAPE NO. ";TN$! TN$"TAPE NO. "TN$:! 5500:LEADER! T$NA$LD$TN$LD$LD$SC$CR$AF$! 5000:PCH. TITLE+GAP+TN+GAP+SC! I0" : START THE SEQ. "TN$(TN$,(LE1)):3214= :5:10)"TITLE AND TAPE NO."O 16:"MENU":h 8:5:"TITLE: ";NA$v 5:TN$: 5:"(1) NEW TITLE" 5:"(2) NEW TAPE NO. :5:"C/R TO CONTINUE" 4000:"YOUR CHOICE ";:A$ T(A$):T3295 ! T?BgCh ,L8gh АL i0 iȍ g!h!Ѕ , LK 0Ѕg gůh尐gLegh``HHH@hhh`͠ӠŠΠˠӠƠ  Lȩ0<ȅ=>  = B = ɰ$0 $` d'ZONTAL AXIS).THE STATUS OF EACH SECTOR IS BASEDON THE BIT MAP OR VTOC IN TRACK 17,SECTOR 0.LEFTMOST VERTICAL COLUMN SERVES AS ASECTOR INDEX. PRESS ESC TO STOP. TO RESTART, TYPE: CALL 2051` LM`st`ɩ XLhh L HH` `ȑ`ȑ`, ,ɛȑ  L  APPLE DOS SECTOR USE MAP LAWRENCE HALL OF SCIENCETHE FOLLOWING MAP DISPLAYS 16 SECTORS(VERTICAL AXIS) IN EACH OF THE 35TRACKS (HORISED) R  FREE SECTORS (effff  K)$  VOLUME=  ; J di i   i8ȱ8& G  di i  L #Н,,, / 9E  H / X m  INSERT DISKETTE, PRESS RETURN,,,ɍ G   READ ERROR IN VTOCL8 Đ @  DOS 4 6 8 0 2 4 D 0 2 4 6 8 0 2 4 (MAGENTA=USED) I (WHITE=ERROR) (GREEN=UNUذεǹԱεǹذڰͰεǹӰͰεǰذƱεڭεǹڭưεǹεǰڰƱͰζԲζǹذڰͰζӰͰζǰڭƱζǹڭưζǹڰƱͰζرͰζǰذԱιͰδǰذδڰδحڰδdzڭ˰δǰذδڰδحڭδdzڭ˰δǰذδڰδحڰδdzڭ˰δǰذδǹͰδǹذڰθδحڰδdzڭ˰δǰذδڰδحڭδdzڭ˰δǰذδڰδحڰδdzڭ˰δǰذδڰδحڭδdzڭ˰ǹӰͰδǰذڰͰδǹδǰحڭδdzڭ˰δǰذδڰδحڰδdzڭ˰δǰذδڰδحڭδdzڭ˰δǰذδڰǰذηذڭηǹڰƱͰηذڰθǹԴθǹذڰθǹӰͰθǰذڰƱͰθڰưθǹڭưθǰذθǹθǰڰƱͰθڰͰθرڰδǹԴδǹذڰΰذڰƱͰηڭηǹڭưηذηǰذڭɰ˰ưηǰڭưηذưηǹذڰƱηذηǹذڭưηڭưηǰذڭɰ˰ưηưαǹذڰƱͰγǹԳγǹذڰγӰͰγǰذڭƱͰγǹذưγǹذưγڭγǹذڭưγǹذڭưͰγڰƱηǹԳηǹرڰηӰͰηǹڰưαذƱαǹڭưαذưαǹڰƱαذαǹڭưαذưαǹڰƱαذαǹذڭưαڭưαذڭưαڭưαذנŠϮΰǹԱΰǰذͲΰǹӰͰΰǹذڰͰΰǰذڭƱΰذưӰΰڭưαǹڰƱαǹذưα      AD1X AD1+1 AD1X ; INCAD2AD2 AD2X AD2+1 AD2X ; ;** D BANK ** PCHAR 00 LENGTH *-READ  SO RETURN $C010RESET KB STROBE KEYP2 $C0002ND KEYPRESS KEYP2NO. LOOP BACK $C010YES. RESET KB STROBE "XX? MEXITON X, EXIT TO MONITOR KPX RETURN "MEXIT PULL RET. ADR. FROM STK.  $FF65RETURN TO MONITOR ; INCAD1AD1 #PSTBOF CREGB DREGB INCAD2INC. THE ADRESS PTR. KEYP1CHECK FOR A KEYPRESS IPCHNO. KP. PUNCH NEXT CHAR. ; ;S U B - R O U T I N E S ; +;IF KEY IS PRESSED, WAIT FOR 2ND KEY PRESS "KEYP1 $C000CHECK FOR KEY PRESS KPXNO. KEY PRESS,TER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ;** PUNCH ONE CHARACTER ** ; PCH1 CREGB PCH1 #$00SET INDEX=0 (AD2),YGET THE NEXT CHAR. DREGB #PSTBON CREGB #$01 WAIT D READO.K. READ NEXT CHAR. ;  IPCH : AD2IS AD2=>AD1 ? AD1 AD2+1 AD1+1 MEXITYES. EXIT TO MONITOR PUNCHNO. PUNCH NEXT CHAR. PUNCH : CREGBHAS PUNCH DDR BEEN SET? #$30 #$30 PCH1YES. SKIP ; ; OPEN DIRECTION REGIS DRDY CREGA #$80 DRDY #RSTBOF CREGA ; ;** CLEAR THE READ INT. ** DREGA ;** IGNORE DELETES #$FF RD1 #$EF RD1 PCHAR ; #$00SET INDEX=0 (AD1),YPUT IT INTO MEM. INCAD1AND INC. THE ADR. KEYP1CHECK THE KEYBOARCREGA ; ;** SET PORT A = 8 BITS INPUT DREGA #RSTBOF CREGA ; ;**READ ONE CHARACTER ** RD1 #RSTBONREAD STROBE ON CREGA "NOTRDYDREGARESET INTERRUPT BIT !CREGAWAIT TILL NOT RDY RESETS #$80 NOTRDY ; ;** WAIT FOR DATA READY RSTBOF $3E RSTBON $36 WAIT $FCA8APPLE WAIT SR ; IREAD : "#BUFFPOINT AD1 AND AD2 AT BUFF AD1 AD2 /BUFF AD1+1 AD2+1 ; READ : CREGAHAS READ DDR BEEN SET? #$30 #$30 RD1YES. SKIP ; ;** OPEN DATA DIR. REG'S $00 w ; ; DUPLICATE ; DELETES ARE IGNORED ;  $800  $800 ; ; P A G E Z E R O AD1 $00 AD2 $02 ; BUFF $1000BUFFER ADDRESS DREGA $C0A0 CREGA $C0A1 DREGB $C0A2 CREGB $C0A3 PSTBOF $36 PSTBON $3E OPNDDR $32 ɭ˸δǰضڭδǰضڭɶ˭δǰطڭɭ˸δǰطڭɭ˲δǰطڰδظδڵδǰڱͰδرڶͰδ԰δͰι԰ιͳصڭɰ˭δǰصڭδصڭɶ˶δǰصڭɰ˸δǰضڭδǰضڭɲ˵δǰضδضڭɰ˸δضڭδǰضڭɲ˭δǰضڱڶͰβ԰βͰδ԰ʹδǵرڶδǹӲͰδǰشڱͰδڵδǰڭδǰصƸδǰصڭɰ˸δǰصڭδǰصڭɶ˭δǰصδβǰضβضڭβǰضڭɲ˭βǰضڭɭ˸βǰضڭβǰضڭɶ˭βǰطڭɭ˸βǰطڭɭ˲βǰطڰβظβڵβǰˠŠٍβǰ԰ʹβǵرڶӱβǹӲͰβǰشڱͰβڵβǷвѲխ׵ƸıβǰڭβǰصƸβǰصڭɰ˸βǰصڭβǰصڭɶ˭    )0I0 >6))>ڍ  L WLe)0I026> 6  LX,,,`hhLe ɰ˭εǰصڭεǰصڭɭ˱εǰصεǰصڭɰ˱εǰشڭεǰشڭɭ˭εǰحεǰڱͰεرڸε԰ιͳضڭɸ˱εǰضڭεǰضڭɭ˭εǰضڭɷ˲εǰضڭεǰضڭɭ˭εǰضεǰضڭɰ˸εǰصڭεǰصڭɭ˭εǰصڭˠŠȠŠϮε԰ʹεǵرڸεǹӲͰεǰظڵͰεǰڭεǰطƴαڭƵεطڭεǰطڭɭ˭εǰضڭɭ˭εǰ  KEYPRESS KEYP2NO. LOOP BACK $C010YES. RESET KB STROBE "XX? EXITON X, EXIT TO MONITOR READREAD NEXT CHAR. !EXIT $FF65RETURN TO MONITOR ; ;** D BANK ** PCHAR 00 !LENGTH *-READLENGTH OF ROUTINE  N PCH1 PCHAR DREGB #PSTBON CREGB #$01 WAIT #PSTBOF CREGB DREGB ; +;IF KEY IS PRESSED, WAIT FOR 2ND KEY PRESS "KEYP1 $C000CHECK FOR KEY PRESS &READNO. KEY PRESS, READ NEXT CHAR. $C010RESET KB STROBE KEYP2 $C0002ND PUNCH : CREGBHAS PUNCH DDR BEEN SET? #$30 #$30 PCH1YES. SKIP ; ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ;** PUNCH ONE CHARACTER ** ; PCH1 CREGB ESET INTERRUPT BIT !CREGAWAIT TILL NOT RDY RESETS #$80 NOTRDY ; ;** WAIT FOR DATA READY DRDY CREGA #$80 DRDY #RSTBOF CREGA ; ;** CLEAR THE READ INT. ** DREGA ;** IGNORE DELETES #$FF RD1 #$EF RD1 PCHAR ;  CREGAHAS READ DDR BEEN SET? #$30 #$30 RD1YES. SKIP ; ;** OPEN DATA DIR. REG'S $00 CREGA ; ;** SET PORT A = 8 BITS INPUT DREGA #RSTBOF CREGA ; ;**READ ONE CHARACTER ** RD1 #RSTBONREAD STROBE ON CREGA "NOTRDYDREGAR ; ; DUPLICATE EVERYTHING ; INCLUDING DELETES ; ;  $300  $800 ; DREGA $C0A0 CREGA $C0A1 DREGB $C0A2 CREGB $C0A3 PSTBOF $36 PSTBON $3E OPNDDR $32 RSTBOF $3E RSTBON $36 WAIT $FCA8APPLE WAIT SR ; READ : ڭεǰشڭɭ˭εǰحεǰڱͰεرڸε԰εͰι԰ιͳεǰضڭɭ˭εǰضεǰضڭɰ˸εǰصڭεǰصڭɭ˭εǰصڭɰ˭εǰصڭεǰصڭɭ˱εǰصεǰصڭɰ˱εǰشεǰڭεǰطƴαڭƵεطڭεǰطڭɭ˭εǰضڭɭ˭εǰضڭɸ˱εǰضڭεǰضڭɭ˭εǰضڭɷ˲εǰضڭڭαǰصڭɭ˭αǰصαǰشڭαǰشڭɭ˭αǰحαڵαǰڱͰαرڱα԰αͰε԰ʹεǵرڸεǹӲͰεǰظڵ͵˭αǰضڭɭ˭αǰضڭɸ˱αǰضڭαǰضڭɭ˭αǰضڭɷ˲αǰضڭαǰضڭɭ˭αǰضαǰضڭɰ˸αǰؠˠŠȠŠϮαǰ԰ʹαǵرڱӶαǹӲͰαǰظڵͰαǷбѱղ׵ƱıαǰڭαǰطƴαڭƵαطڭαǰطڭɭ     )0I0 >6))>ڍ)0I026> 6,,,LLe INC. AD2 BY 1 INCA2 : AD2 INCA2X AD2+1 INCA2X ; ; ;INC THE MSG. ADR. BY 1 INCM : MADR INCMX MADR+1 INCMX AND RETURN ; ; OUTPUT MSG. FOLLOWING JSR MSG : SRTNPULL MADR FROM STK. MSG1 INCMINC MADR BY 1 00SET INR. FROM STK.    $100,XLO BYTE FIRST MADR  $100,XHY BYTE 2ND MADR+1  ; ;PUT RETURN ADR. BACK ON STACK RRTN : SET THE STACK INDEX    MADRPUT RTN. ADR. $100,XBACK ON THE STK.  MADR+1 $100,X  ;IFT TO LEFT NYBLE    TEMPAND SAVE IT ; RDKEYREAD 2ND CHAR. COUT1ECHO IT "CDAHXCONV.TO HEX IN RGT. NYBLE ERRXON ERR RESTART #GETA2 TEMPOR IT WITH LEFT NYBLE  ; %;SAVE RETURN ADR. FROM STACK AT MADR SRTN : GET RTN ADAND END OF STRING ; END OF ROUTINE ; ;GET ADDRESS FROM KEYBOARD GETADR: RDKEYREAD 1ST CHAR. COUT1ECHO IT $CDAHXCONVERT TO HEX IN RGT NYBLE GETA1SKIP IF VALID HEX DIGIT ERRX PULL RTN ADR  EBURNAND RESTART "GETA1 O.K. SHE TIMING ROUTINE #$00SET FOR ZERO INDEX (A1),YGET BUFFER BYTE (A4),YOUTPUT TO EROM #NXTA4INC A4,INC A1 ,CMP A1 W/A2 BURNLOOP BACK TILL >= ; ; ; "BURN COMPLETE MSG." BDONE : MSG  8D8D2 C/R'S  "BURN COMPLETE"  8D00C/R AD1MOVE AD1 TO A1 (3C,3D) A1ADRLO AD1+1 A1+1ADRHI ; AD2MOVE AD2 TO A2 (3E,3F) A2ADRLO AD2+1 A2+1ADRHI ; AD3MOVE AD3 TO A4 ($42,43) A4+1ADRLO AD3+1 A4+1ADRHI ; ; ;START THE BURN ROUTINE BURN : TIMINGTHDRHI AD3+1 GETADRGET ADRLO AD3 ; ; ; ; "READY TO BURN" MSG. MSG  8D8D2 C/R'S  "READY TO BURN (Y/N) ?"  00END OF STRING ; RDKEYGET THE REPLY #"Y"YES? SETADRYES.SET BURN ADDRESSES EBURNNO. RESTART ; SETADR: SG  8DC/R TO NEXT LINE  "BUFFER ENDS AT $"  00END OF STRING GETADRGET ADRHI AD2+1SAVE IT AT AD2 GETADRGET ADRLO AD1 ; ;GET THE EROM ADDRESS MSG  8DC/R TO NEXT LINE  "EROM STARTS AT $"  00END OF STRING GETADRGET AMICRO-PRODUCTS EROM BURNER"  8D00C/R AND EOS ; !;GET THE STARTING BUFFER ADDRESS MSG 8DC/R  "BUFFER STARTS AT $"  00END OF STRING GETADRGET ADRHI AD1+1SAVE IT AT AD1 GETADRGET ADRLO AD1 ; ;GET THE ENDING BUFFER ADDRESS M $FCB4INC A4,INC A1, CMP A1,A2 #RDKEY $FD0CREAD CHAR. FROM K.B. PRBYTE $FDDAPRT. ACC. IN HEX PRNTAX $F941PRINT A,X IN HEX WAIT $FCA8MON. WAIT ROUTINE ; ;START OF EROM BURN ROUTINE EBURN : HOMEHOME THE SCREEN MSGOUTPUT A MSG.  " A1 ADR. A2 $3EMON. A2 ADR. A3 $40MON. A3 ADR. A4 $42MON. A4 ADR. A5 $44MON. A5 ADR. ; ; MONITOR SUB-ROUTINES ; COUT $FDEDOUTPUT 1 CHAR. &COUT1 $FDF0OUTPUT 1 CHAR. TO SCRN. $HOME $FC58HOME SCREEN ENTRY PT. 'NXTA4 ' ; E B U R N ;2716 EROM BURN ROUTINE ; FORMATTED OUTPUT ROUTINE  $800  $800 ; ; Z E R O P A G E ; AD1 $00BUFFER START ADR. AD2 AD1+2BUFFER END ADR. AD3 AD2+2EROM START ADR. MADR AD3+2MSG. ADR. A1 $3CMON.      ڰΰǰذڰΰǹذڭưΰǹڰƱΰرͰΰͰίàԠ͠ΰǹԱΰǰذͲΰǹͰΰǹذڰӰͰΰǰذڰƱΰǹڰưΰذڭΰǹڰưΰǹذưΰǹذڰƱΰӰԲΰڰΰǹذưΰǹذڰƱΰԲΰǹذ INC. AD2 BY 1 INCA2 : AD2 INCA2X AD2+1 INCA2X ; ; ;INC THE MSG. ADR. BY 1 INCM : MADR INCMX MADR+1 INCMX AND RETURN ; ; OUTPUT MSG. FOLLOWING JSR MSG : SRTNPULL MADR FROM STK. MSG1 INCMINC MADR BY 1 00SET INR. FROM STK.    $100,XLO BYTE FIRST MADR  $100,XHY BYTE 2ND MADR+1  ; ;PUT RETURN ADR. BACK ON STACK RRTN : SET THE STACK INDEX    MADRPUT RTN. ADR. $100,XBACK ON THE STK.  MADR+1 $100,X  ;IFT TO LEFT NYBLE    TEMPAND SAVE IT ; RDKEYREAD 2ND CHAR. COUT1ECHO IT "CDAHXCONV.TO HEX IN RGT. NYBLE ERRXON ERR RESTART #GETA2 TEMPOR IT WITH LEFT NYBLE  ; %;SAVE RETURN ADR. FROM STACK AT MADR SRTN : GET RTN ADAND END OF STRING ; END OF ROUTINE ; ;GET ADDRESS FROM KEYBOARD GETADR: RDKEYREAD 1ST CHAR. COUT1ECHO IT $CDAHXCONVERT TO HEX IN RGT NYBLE GETA1SKIP IF VALID HEX DIGIT ERRX PULL RTN ADR  EBURNAND RESTART "GETA1 O.K. SHE TIMING ROUTINE #$00SET FOR ZERO INDEX (A1),YGET BUFFER BYTE (A4),YOUTPUT TO EROM #NXTA4INC A4,INC A1 ,CMP A1 W/A2 BURNLOOP BACK TILL >= ; ; ; "BURN COMPLETE MSG." BDONE : MSG  8D8D2 C/R'S  "BURN COMPLETE"  8D00C/R AD1MOVE AD1 TO A1 (3C,3D) A1ADRLO AD1+1 A1+1ADRHI ; AD2MOVE AD2 TO A2 (3E,3F) A2ADRLO AD2+1 A2+1ADRHI ; AD3MOVE AD3 TO A4 ($42,43) A4+1ADRLO AD3+1 A4+1ADRHI ; ; ;START THE BURN ROUTINE BURN : TIMINGTHDRHI AD3+1 GETADRGET ADRLO AD3 ; ; ; ; "READY TO BURN" MSG. MSG  8D8D2 C/R'S  "READY TO BURN (Y/N) ?"  00END OF STRING ; RDKEYGET THE REPLY #"Y"YES? SETADRYES.SET BURN ADDRESSES EBURNNO. RESTART ; SETADR: SG  8DC/R TO NEXT LINE  "BUFFER ENDS AT $"  00END OF STRING GETADRGET ADRHI AD2+1SAVE IT AT AD2 GETADRGET ADRLO AD1 ; ;GET THE EROM ADDRESS MSG  8DC/R TO NEXT LINE  "EROM STARTS AT $"  00END OF STRING GETADRGET AMICRO-PRODUCTS EROM BURNER"  8D00C/R AND EOS ; !;GET THE STARTING BUFFER ADDRESS MSG 8DC/R  "BUFFER STARTS AT $"  00END OF STRING GETADRGET ADRHI AD1+1SAVE IT AT AD1 GETADRGET ADRLO AD1 ; ;GET THE ENDING BUFFER ADDRESS M $FCB4INC A4,INC A1, CMP A1,A2 #RDKEY $FD0CREAD CHAR. FROM K.B. PRBYTE $FDDAPRT. ACC. IN HEX PRNTAX $F941PRINT A,X IN HEX WAIT $FCA8MON. WAIT ROUTINE ; ;START OF EROM BURN ROUTINE EBURN : HOMEHOME THE SCREEN MSGOUTPUT A MSG.  " A1 ADR. A2 $3EMON. A2 ADR. A3 $40MON. A3 ADR. A4 $42MON. A4 ADR. A5 $44MON. A5 ADR. ; ; MONITOR SUB-ROUTINES ; COUT $FDEDOUTPUT 1 CHAR. &COUT1 $FDF0OUTPUT 1 CHAR. TO SCRN. $HOME $FC58HOME SCREEN ENTRY PT. 'NXTA4 ' ; E B U R N ;2716 EROM BURN ROUTINE ; FORMATTED OUTPUT ROUTINE  $800  $800 ; ; Z E R O P A G E ; AD1 $00BUFFER START ADR. AD2 AD1+2BUFFER END ADR. AD3 AD2+2EROM START ADR. MADR AD3+2MSG. ADR. A1 $3CMON.     ((952I));:: L0240+ L17L17P I1L:951I,((A$,I,1))128:r D$;"BSAVE ";F$;",A$3B8,L$11" D$;"BRUN EDASM.OBJ" J" d::D$(4)%nF$"ASMIDSTAMP";xD$;"NOMON C,I,O"XD$;"BLOAD ";F$;",A$3B8"|3:"APPLE ][ EDITOR-ASSEMBLER"5:"CURRENT ASSEMBLER ID STAMP IS:"7:1I952968:((I));:7:1:"";A$:L(A$) L17Ģ7:L1:IL16: CHAR. ACHAR 00ASCII CHAR. CNT 00CHAR. COUNTER LCNT 00CHAR. THIS LINE KFLAG 00 MVAL 00MCODE VALUE PACKED  [0M30? EXITYES. END OF PROGRAM EXIT ; NOTEOP: #$00NOT "END OF PROG." CNTZERO THE COUNT RD1AND READ NEXT LINE ; EXIT SAVEXEXIT THIS ROUTINE SAVEY SAVEA   ;** D BANK ** SAVEA 00 SAVEX 00 SAVEY 00 ECHAR 00EIA #"M"M? NOTEOPSKIP IF NOT "M"  BUFF,XGET NEXT CHAR. MOVE 1ST DIGIT TO LEFT NYBLE    MVAL  BUFF,XGET 2ND M DIGIT #$0FRGT. NYBLE ONLY MVALOR IN 1ST DIGIT MVAL #$02M02? EXITYES. END OF PROGRAM EXIT #$3OLYES. SKIP TO EOL NOTCR : CNT BUFF,XPUT CHAR. IN BUFFER CNTINC. THE CHAR. COUNT RD1AND READ NEXT CHAR. EOL : CNTMOVE COUNT TO LCNT LCNT LCNTGET THE POSITION GET RELATIVE INDEX MINUS 2  BUFF,XGET LAST CHAR.-2 ES FF *-$01 RD1 #$80C/R? CR ; ; INVERSE ASTERISK IF ILLEGAL ILEGAL#$2A IEXIT CR #$0D ; ;NORMAL VIDEO SCREEN EXIT NEXIT #$80 ; ;INVERSE VIDEO SCREEN EXIT IEXIT ACHAR OUT1 : COUTOUTPUT THE CHAR. #$8DC/R? EECHAR ; ; CONVERT EIA TO ASCII CKT8C/R OR ILLEGAL CHAR.  ASCII,X ACHARSAVE THE ASCII CHAR. ILEGAL00 = ILLEGAL CHAR. #$0101 = IGNORE CHAR. RD1GET NEXT CHAR. NEXIT ; ;CHARACTERS W/TRACK 8 #CKT8 #$FFIGNORE 8 HOLE DELETITS INPUT #$00 DREGA #RSTBOF CREGA KFLAG ; ;**READ ONE CHARACTER ** RD1 #RSTBON CREGA NOTRDYDREGA CREGA NOTRDY ; ;** WAIT FOR DATA READY DRDY CREGA DRDY #RSTBOF CREGA ; ;** CLEAR THE READ INT. ** DREGA 0000000000 )A6 00414200440000474800002E00000000 )A7 2B000043004546000049010001000001 ; INIT : READ SAVEX SAVEY SAVEA KFLAGSKIP IF INIT. COMPLETE RD1 ; ;** OPEN DATA DIR. REG'S #SETDDR CREGA ; ;** SET PORT A = 8 BRANSLATE TABLE )ASCII 01313200340000373800000100000000 )A1 20000033003536000039000000000000 )A2 3000005400565700005A000000000000 )A3 002F5300550000585900002C00000100 )A4 2D00004C004E4F000052000000000000 )A5 004A4B004D000050510000  ; EIA READ ; DREGA $C0A0 CREGA $C0A1 KSWL $38 RSTBOF $3E RSTBON $36 SETDDR $3C BUFF $300LINE BUFFER SETDOS $03EA #COUT $FDEDCHAR. OUTPUT ROUTINE PRBYTE $FDDAPRT.ACC. IN HEX ;  $2000  $800 ; ; EIA TO ASCII T   CATALOG DRIVE #1"5 K11:10:"(2) CATALOG DRIVE #2"E P12:10:A$Z RD(A$):D0D0g SD2110t UD0110 dCR$;D$;"CATALOG,D";D i n:C CR$(13): C/R+D$(4): CNTRL DR: INIT THE PRINTER TO 80 COLUMNSeCR$;D$;"PR#1"o#" ":((27);"7080"-D$;"PR#0"2::5:9<" N/C TAPE ROUTINES"A7:14:"DOS 3.3"C9:10:"(0) NO CATALOG" F10:10:"(1)  A!ʽ C!) C!C! 0@!L B!60>>!0 ?!L ɀ*L ?! ɍ @!@!Ы@!A!(AD)TR:220 T1$;4);:! D1$(T$,(LEND))"."(T$,ND)+ L1(T1$)Y (T1$,1)"0"L1L11:T1$(T1$,(L1))" "o SG0T1$"-"T1$} LE(T1$) LE(TD2)T1$" "(T1$):270  :C A L C . O F F S E T T$(AD):LE(T$):AD10T$" "T$ T$;2);: TOF70 FF$:D$;"PR#0":, : F O R M A TL NI1:NO. OF INTEGER PLACESi ND4:NO. OF DEC. PLACES TDNIND: TOTAL DIGITS SG(T):T(T) T((TTT)0.5) T$(T) LE(T$) LENDT$"0"T$:235 LENDT1$"."T$:255 T5:18:"TOOL RADIUS ";T1$;) _TR2:220K d19)"TOOL RADIUS ";T1$:" ":g iR$"D"R1R12:R2R22s nI045 s(12):A(0) xADI:TRR1:505 }ADI45:505 " "; ADI:TRR2:505 ADI45:505 " "  CCCC1:CC0T1E4 <DRPI180:RD1DR6 =OF(90): OFFSET ARRAYB >I090_ ?OF(I)(((90I)2)DR)1e @x ACR$;D$;"PR#1" F::FF$:30 KR$"R"ĺ"R A D I U S O F F S E T S":" " PR$"D"ĺ"D I A M E T E R O F F S E T S":" " UTR1:200 Z" D$(4): CNTRL D0CR$(13):C/RIFF$(12):FORM FEEDh#"FIRST TOOL RADIUS ? ";R1("SECOND TOOL RADIUS ? ";R2-"ENTER R FOR RADIUS VALUES"2" D FOR DIAMETER VALUES ";R$5"HOW MANY COPIES ?";CC 7PI3.14159265:T     #PSTBOF CREGB DREGB ; ; OUTPUT TO VIDEO SCREEN VOUT PCHAR #$80 COUT1 ; ; R E T U R N S E Q . EXIT SAVEX SAVEY PCHAR   ; ;** D BANK ** PCHAR 00 ECHAR 00 SAVEX 00 SAVEY 00 ; LENGTH *-START  CREGB PCH1 ; ; CONVERT TO EIA PCHAR #$7F #$7F EIADEL #$5B ERRRTN  EIA,X ECHAR #$81 EIAPCH ERRRTN#$3F COUTZ EXIT ; ; PUNCH ONE CHARACTER EIADEL#$7F EIAPCHDREGB #PSTBON CREGB #$01 WAIT ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ; PCH ENTRY PT. TO CSW SETCSW#PUNCH CSWL /PUNCH CSWH SETDOS  EXIT ; ; WAIT FOR PUNCH READY ; PCH1 6273647576676879515243544546 )E5 5758493223342526373829FFFFFFFFFF ; ; INITIAL ENTRY PT. INIT FF PCH ; ; PUNCH ENTRY PT PUNCH PCH SAVEY SAVEX PCHAR PCH1 ; ; HAS DDR BEEN SET? CREGB #$30 #$30 SETCSW ;  $FCA8 ; START : ; INITINITIAL E.P. PCHPUNCH E.P. ; ; ASCII EIA XTBL )EIA FFFFFF0BFFFFFFFFFFFFFFFFFF80FFFF # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # 10FFFFFFFFFFFFFFFFFF3E703B406B31 )E3 20010213041516070819FFFFFFFFFFFF )E4 FF61 ; EPCH ;PUNCH EIA TAPE ;  $2000  $800 ; ; E Q U A T E S ; DREGB $C0A2 CREGB $C0A3 ; ; Z E R O P A G E ; CSWL $36 CSWH $37 PSTBOF $36 PSTBON $3E OPNDDR $32 SETDOS $03EA COUT1 $FDF0 COUTZ $FDF6 WAIT  (T):T(T) T$(T)$ LE(T$)> LETDT$"0"T$:235d T1$(T$,2)"."(T$,4):L1(T1$)z SG0T1$"-"T1$ T2$T1$ L2(T2$) (T2$,1)"0"L2L21:T2$(T2$,(L2)):265 PNEW RADIUS"$ K10:"(2) NEW ANGLE"? P10:"(3) END PROGRAM"O UA$:T(A$)\ ZT25,35z d:20:"END OF PROGRAM": : F O R M A T NI2: NO. INTEGER PLACES ND4:NO. OF DEC. PLACES TDNIND: TOTAL DIGITS T((TTT)0.5) SG PI3.14159265:TT1E40DRPI180:RD1DR8:C5:10["TOOL RADIUS= ";TRf#6:10~("ANGLE(DEG.)= ";AD-A((90AD)2)DR2OF((A)1)TR7TOF:200<10:"OFFSET= ";T1$;="/";:T2OF:200:T1$A10:10: F"(1)   `8`A[`8`H h`H^  h`hh)` ` 9 `` `16,115:ȱ) )pqr v LD LD 8A e    C  ST0  !  ȹ     L  9 L````  L `0:GL_Lb '06T86FP19:VM HT89FP19:Y` RT87FP28:Ws \T90FP28:Z fT73FP28:I pT74FP37:J zT75FP46:K T70FP55:F T83FP60:S T84FP66:T T77FP72:MCP2ĺA$: CR$;D$;"PR#1") I0ĺHM$1 A$E 54,240:55,253Q 1002:c FORMAT PRINTv CR$;D$;"PR#1" L(A$) L0ı CP1:CURSOR POS. FP1:PRINT POS. K1L T$(A$,K,1) T(T$) T652240 T71FP6:30"ĺ:"M30 READ: ";:250" 2608 M$"M02"İ3100:N M$"M30"İ3100:j "CONTINUE (Y/N) ";:B$ (B$,1)"N"ĉ:10:"END OF PROGAM":  READ ONE LINE 8320:A$ PRM2ı 56,27:57,253:1002: PRINT ONE LINE PRMT TOP dI11000+ i400:READ ONE LINEF nKY(16384):16368,0V sKY127ľA$~ xPRM2000,500:BR. TO PRINT ROUTINE M$(A$,3) PRM210,220 M$"M00"ĺ:"M00 READ: ";:250 PRM2241 M$"M02"ĺ:"M02 READ: ";:250 M$"M"LOAD RET.A @2000 (Y/N) ?";A$2 7(A$,1)"N"70R <10:"LOAD FROM DRIVE # ";Dl AD$;"BLOAD RET.A,D";D FPRM1D$;"PR#1":FF$:D$;"PR#0" HPRM2İ3000 K:400:READ TITLE LXX(56):XY(57):XX,XY: P500:PRINT TITLE  U34,3:4:SE   A/S NC TAPE TO TEXT FILE ::"(1) FORMAT PRINT"Z"(2) CONVERT TO TEXT FILE""ENTER YOUT CHOICE 1 OR 2 ";PRMD$(4):FF$(12)#CR$(13)(HM$(27)(42):HOME SOROC):"FILE NAME? ";F$+"DRIVE #? ";D- 25:10:      L `0:`8`A[`8`H h`H]  h`\hh)` ` P `ȱ) ) ȱ) )pqr v LY LY 8A e   $ D  [ST0 $ ! $ ȹ  .  . L  P L``` ` ^L^ '06ER%0:I0:T10C INVOKE AMPER-READHR(FI$,ST$(I),NR%,ER%)KT2NR%MER%1000,1000,1000,1000,850R300:LIST BLOCK*WER%58954\2000KaREMOVE LAST BLOCKjfD(ST$(0)):DEALINE ER% VARIABLEINVOKE AMPER-READR(FI$,ST$(I),NR%,ER%)T2T1NR%ER%51000300:LIST RECORDS:NR%;" RECORDS READ"2000 D(ST$(0))5004 : READ A BLOCK OF RECORDS@%:3000p*10:"HOW MANY RECORDS/BLOCECORDS""2 READ BLOCKS OF RECORDS""3 RETURN TO MAIN MENU"&20:"OPTION; ";OP0OP0OP3510:OP600,800,200X READ ALL RECORDS INTO MEMORYb3000lST$(UL):qI0:T1I:SET ARRAY INDEXQvNR%0:READ TO EOFpER%0:DEF%UL415 BA$"THIS IS RECORD NUMBER: " D$;"OPEN ";FI$ D$;"DELETE ";FI$ D$;"OPEN ";FI$ D$;"WRITE ";FI$ I1NR% BA$;I I D$;"CLOSE"2000READ AND LIST RECORDSI:10:10:"OPTIONS"g14:"1 READ ALL R"FILE NAME ?";FI$} 200 , L I S T R E C O R D S 1 6IT1T2 ;ST$(I) @(16384)127Ĺ16368,0:A$ EI J CREATE A TEXT FILE 3000 ULUL10R :10:"HOW MANY RECORDS DO YOU WANT TO CREATE ? ";NR%h NR%1NR I N M E N Uv : 10:10:"AMPER-READ DEMO" :15:"MENU": "1 CREATE A RANDOM TEXT FILE" "2 READ AND LIST THE FILE" "3 GET EXISTING FILE NAME" "4 EXIT"1 20:"OPTION; ";OPD OP1OP4235] OP400,500,250,3999t | AMPER-READER DRIVER  HOUSE KEEPING 36864:D$(4) 1013,76:1014,0:1015,147: SET & VECTOR  #(37632)(37637)23445:AMPERREADER LOADED ?. (D$;"BLOAD AMPER-READER.OBJ,A$9000"J -FI$"AMPER-READER FILE"V 2EM$(5)n M A     L` g RgƖ8PgPQhQghe Ӣi  g y  gh^_8^eP^ȱ^ eQ^^_Ll8ePeQ` 00,D";DM! F1000:OPEN THE FILE: P8320:READ THE TAPET U1100:CLOSE THE FILEZ ct D$;"OPEN ";F$;",D";D D$;"DELETE ";F$ D$;"OPEN ";F$ D$;"WRITE ";F$  LD$;"CLOSE ";F$: EIA TAPE/TEXT FILE7:"CREATE EIA TEXT FILE"CD$(4)Q#CR$(13)j)3:"FILE NAME? ";F$}+"DRIVE #? ";D-25:10:"LOAD EIA READ.A (Y/N) ?";A$7(A$,1)"N"70<10:"LOAD FROM DRIVE # ";DM AD$;"BLOAD EIA READ.A,A$20  TXT ADD(4)? TXTPTR+1LOOKIN AT PG.2? #$02 !SETPTRYES. THEN DON'T INC. IT #TXTPTRNO. LOOKING AT TEXT ADDINC. THE TEXTPTR. ; SETPTR: PRGBEGMOVE PRGBEG TO RNMPTR PRGBEG+1 RNMPTR RNMPTR+1 RENUM : !#$00FIX "NEXT LINE" ADDTO MOVE PRGBEG-1 AND BLT2 IS CALLED FUNNY LBL1  BLT2APPLESOFT BLK. TRANSFER SKP5 : '#VARTABNOW GO UPDATE THOSE POINTERS ADD(1)VARIABLE PTR. #PRGEND ADD(2)END PROG. TEXT PTR. #PRGBEG ADD(3)START PROG. TEXT PTR. #OLDND PRGBEGW/ RESULT IN Y AND X Y=LOBYTE LEN. OF PROG. PRGEND+1 PRGBEG+1 X=HIBYTE LEN. OF PROG. ; A=HYBYTE OF LEN. OF PROG. HIGHDS+1ADD NEWADR HYBYTE "HIGHDS+1SAVE NEWADR END HYBYTE STRANGE MATH HERE BECAUSE LBL1WE HAVE  (LINNUMLOBYTE OF NEWADR TO HIGHDS HIGHDS PRGBEGSUBT. PRGBEG LOBYTE LINNUMSTORE AT LINNUM LINNUM+1SUBT. HYBYTES HIGHDS+1 PRGBEG+1 LINNUM+1LINNUM=DIST. TO MOVE ; ; CALC. LENGTH OF PROGRAM "PRGENDSUBT. PRGBEG FROM PRGET LOMEM FRMEVLO.K. SO GET VALUE &GETADRCONV. TO INT.(LINNUM=NEWADR) ; $PRGBEGSET HIGHTR=PRGEND PAGE NO. HIGHTRLOBYTE IS ALWAYS $00 PRGEND+1MOVE THE HYBYTE HIGHTR+1 HIGHTRMAKE LOBYTE=$FF ; (;CALC. MOVE DIST. FOR RENUM SUB-ROUTINE =RESULT) 'SYNCHR $DEC0COMPARE REG.A AND TXTPTR SNERR $DEC9 ,GETADR $E752CONVERT FAC TO INT. AT LINNUM ; START : #$4CSET UP & VECTOR AMPSND #LOWM AMPSND+1 /LOWM AMPSND+2  LOWM : #$A4A4=LOMEM TOKEN SYNCHRCHK. TXTPTR ATXTPTR $B8TEXT PTR. 'AMPSND $3F5AMPERSAND VECTOR LOCATION ; %; D O S 3.2 S U B - R O U T I N E S ; CHRGET $00B1GET NEXT CHAR. (BLT2 $D3C3PART OF FP BLOCK TRANSFER ,CLEAR $D66CCLEAR VARIABLES AND STK. PTR. )FRMEVL $DD67EVAL. FORMULA (FAC67START OF PROG. TEXT. $800 ALWAYS &VARTAB $69START OF VARIABLE STORAGE FRETOP $73HIMEM OLDTXT $79 $DATXT $7DNEXT DATA LOCATION PTR. (HIGHDS $94BLK. TRANSFER DEST. ADDRESS 'HIGHTR $96BLK. TRANSFER FROM ADDRESS PRGEND $AFEND OF PROG. TEXT   ; LOMEM ROUTINE ; $; APPLE ORCHARD MARCH/APRIL 1980  $300  $800 ; ;CALLING STATEMENT IS ; &LOMEM:DEC.ADDRESS ; ; P A G E Z E R O ; AD1 $00WORKING ADDRESS 1 LINNUM $50GEN. 16 BIT NO. RNMPTR $5ERENUMBER PTR. -PRGBEG $!!!!!!!!!FP51:S T84FP55:T. T77FP60:ML CPFPĺ" ";:CPCP1:510_ T$;:CPCP1:k CR$;:D ^FP1:PRINT POS. hK1L1 rT$(A$,K,1)= |T(T$)K T65520] T71FP6:Gp T88FP10:X T85FP10:U T89FP19:Y T90FP28:Z T87FP19:W T73FP28:I T75FP37:K T70FP46:F T83"ĺ:"M30 READ: CONTINUE (Y/N) ";:B$:220T (B$,1)"N"ĉ:10:"END OF PROGAM":] 130c q 8320:A$ D$;"IN#0": D$;"PR#1" I0ĺHM$ "TI1ĺA$::TI0:310 ,320 6D$;"PR#0": @L(A$) JL0ı TCP1:CURSOR POS. n270: PRINT TITLE+ x34,3:4:SET TOP9 I11000B 250] KY(16384):16368,0m KY127ľA$v 270 M$(A$,3) M$"M02"ĺ:"M02 READ: CONTINUE (Y/N) ";:B$:220 M$"M00"ĺ:"M00 READ: CONTINUE (Y/N) ";:B$:220* M$"M30l D$(4):FF$(12)%CR$(13)EHM$(27)(42):HOME SOROCK(u25:10:"LOAD RET.A @2000 (Y/N) ?";A$<(A$,1)"N"90F10:"LOAD FROM DRIVE # ";DPD$;"BLOAD RET.A,D";DZD$;"PR#1":FF$:D$;"PR#0"d:TI1:250: GET TITLE!! ! ! ! ; R E T U R N S E Q . EXIT SAVEX SAVEY PCHAR   ; ;** D BANK ** PCHAR 00 SAVEX 00 SAVEY 00  )#PUNCH CSWL /PUNCH CSWH SETDOS  EXIT ; ;** PUNCH ONE CHARACTER ** ; PCH1 CREGB PCH1 PCHAR DREGB #PSTBON CREGB #$01 WAIT #PSTBOF CREGB DREGB ; ; OUTPUT TO VIDEO SCREEN PCHAR #$80 COUT1 ; VEY SAVEX PCHAR PCH1 ; ; HAS DDR BEEN SET? CREGB #$30 #$30 SETCSW ; ; OPEN DIRECTION REGISTER #OPNDDR CREGB ; ; PORT B: 8 BITS OUTPUT #$FF FF *-$1 DREGB #PSTBOF CREGB ; ; PCH ENTRY PT. TO CSW SETCSW{DREGB $C0A2 CREGB $C0A3 CSWL $36 CSWH $37 PSTBOF $36 PSTBON $3E OPNDDR $32 SETDOS $03EA COUT1 $FDF0 WAIT $FCA8 ;  $2000  $800 ; ; INITIAL ENTRY PT. INIT FF PCH ; ; PUNCH ENTRY PT PUNCH PCH SA"""" ~ T$;:CPCP1:  CR$;:I T653198!  T71FP6:G4 ! T88FP10:XG " T85FP10:UZ & T90FP19:Zm ' T87FP19:W + T73FP28:I 0 T75FP37:K 5 T70FP46:F : T83FP51:S ? T84FP57:T D T77FP63:M N CPFPĺ" ";:CPCP1:3150 65  8320:A$- D$;"IN#0":< D$;"PR#1"R EOP1ĺ" ":EOP0` I0ĺHM${ TI1ĺA$::TI0:2030 3000 D$;"PR#0": L(A$) L0ı CP1:CURSOR POS. FP1:PRINT POS. K1L T$(A$,K,1) T(T$)EOP1:130G nM$"M02"ĺ:"M02 READ: CONTINUE (Y/N) ";:B$:EOP1:130_ pM$"M01"ĺ" ":130 sM$"M02"ĺ" ":"M02 READ: CONTINUE (Y/N) ";:B$:130 xM$"M30"ĺ:"M30 READ: CONTINUE (Y/N) ";:B$:EOP1:130 (B$,1)"N"ĉ:10:"END OF PROGAM": 1D$;"PR#0"* 2:TI1:1000: GET TITLEB 72000: PRINT TITLEX <34,3:4:SET TOPf AI11000p F1000 KKY(16384):16368,0 PKY127ľA$ U2000 ZM$(A$,3) dM$"M00"ĺ:"M00 READ: CONTINUE (Y/N) ";:B$:EOP1:130 iM$"M01" D$(4):FF$(12)%CR$(13)EHM$(27)(42):HOME SOROCKu5:10:"LOAD RET.A @2000 (Y/N) ?";A$#(A$,1)"N"47(10:"LOAD FROM DRIVE # ";D-D$;"BLOAD RET.A,D";D/D$;"PR#1"0FF$:" EIA TAPE LISTING":" ": "" " " " "