@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 164ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u05  15 2 2151^116115ύ011$r2ԭ5 3)5)5ԭx GT}@@L00)+& 2 L0=ɛ -L!1LV1L1 /3 3ȹ441L-4 v3 25 2H 2h͔5U}L3L3 2 k3U hh`DOC`QL3P1Lk0S1H /3h0B k3@ VL0LU!#$53 1181118V}1111Ε5 1Lk0552 1Ȍ1i111i11115Lk0pppB4f5&&&&&&&&^6f^6&&&&&W}&&A1@BJ D2ELVK@BHILV^Щ6 2BD2EJ VBD5EHI0 V0%5X}5 2iХiL[2 25 25`D:*.*` i@`8 ``@i `8@`0 BLV525<4Y}5`HH i ԍΗ552 ԍhh@ Lح1Э1Ѣ 24.4 24Z}4`D4E` 2BJ k3LVRH` 2BD4EhK)I JLV333 BASIC languag i}e OBJ > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST j} > BASIC LISTing -Some MACHINE language programs can only be run by booting the disk MENU "without" BASIC! -For s k}ome programs, XL/XE models may require a "TRANSLATOR" program to be booted first! [Also available from BELLCOM] - l}Most programs are relatively self-explanatory; however, some have separate DOCumentation files available. Some BASIC m} programs may contain instructions in their program listings. -To use this great MENU program on your own disks, n}simply copy the file "AUTORUN.SYS" onto your disk. * MENU written by DAVID CASTELL * program on your own disks, ^$U (c)1983 Action Computer Services  B JKIHiDiELV`L=$p} =$ BLV` L$$l L$ &` Fj`8冨凪` $EӅӥq} $`ʆǪƩ Ɛee` $ƦʆǢ &Ɛeǐ % %L$ $'&&&8儨児r}祂*L$&&*ń8&&L$ [%`hihiHHȱȱL$c !#3`s}L$JJJJ`H $h`Hȩh r$L% {$L% %$L% -$L% 3$H8t}`HhHh _&L% BHI V䅠L% L& =$L%Ԇ ؠPIPP`u} &P -$L% &L& &L& 'L&H- &8塪墨hL' 'L& &'L& &ȹP`v}텠8堨塪 &芨Oȩ-`PP &P棩 Ѥģ0-ģ6000:,80H w}& &ehe&eģ0ʥ 8堅塅`$ &&*i0:0i &Ʀ`¢ 护x}°ڱ%ȱ%E &L`(担CS R&L`(I 'L`(H (L`( &L`( &B V %NLMȑy}` MLN%B VL%S:)E:)H L& ) ) & L&h)0I))L&[\ZUVT` @)))z}` G)L& :)L& @)L&) ` G)L& &%` 0d $ҥ `2)2{}ҩ`p`0)9*`@0)ӈJJJJ)`Ѕ`ȱ`` 5*ȥ`Hh|}ƣĢ`ƥĤ`Ѣ *`ȱѢĦ`膡`}}`ťƤe8夰L* Ƥ8`ŦeѠe桊L*()p~}; IF KEY#7 THRINTE("PLEASE RELEASE KEY TO CONTINUE!"):FIp( DO:KEYIN=KEY:IF KEYIN=7 THEN EXIT:FI:ODbpRETURNUp}NpPROC COSE()8p PNTR=(Y*80)+(X*2)+9:C=0p A=RAM(PNTR):A=A&$C0o IF A=0 THEN C=C%$80:FIo A=RA}M(PNTR):A=A&$30o F A=0 THEN C=C%$40:FIo AM(PNTR):A=A&$0Co IF A HEN C=C%$20:FIno A=RAM(PNL, })0 %*^+]+]+i^+i %*,,`L,,S,`L - ,M 5*`L-R+_ T+ S+ } -`LL-R+ߍ T+ S+  -`L|-J+}J+L- &K+K+J++J+L-M 5*`L-W+_} T+ S+  -`L-Z+Y+`Y+Z+L.Y+Z+L-`L. - -`L.L.. ?&L .. ?&L+..* ?&L6..5 ?&`L}A.T+iS+ -i+I:L`.Q+Le.Q+`Li.E s) c)~ c)~E c)E c)D s) c) c)D} c)D c)`L. .IL/L.PLEASE RELEASE KEY TO CONTINUE!. ?&ЍR+R+IL/L/L/`L/PO+ &%}N+ &%eei W+iX+L+,mW+,mX+J+J+)J+J+L/L+ L+,mW+,mX+J+J+)0J+}J+L/L+ @L+,mW+,mX+J+J+) J+J+L/L+ L+,mW+,mX+J+J+)J+J+L&0L+ L+W+X+,m}W+,mX+J+J+)J+J+L^0L+ L+,mW+,mX+J+J+)0J+J+L0L+ L+,mW+,mX+J+J+) J+J}+L0L+ L+,mW+,mX+J+J+)J+J+L0L+ L+8W+W+X+X+,mW+,mX+W+iX+i,e},eW+i(X+i,e,eW+i)X+i,e,e`L1PO+ &%N+ &%}eei W+iX+,mW+,mX+W+iX+i,e,eW+i(X+i,e,eW+i)}X+i,e,eK++)J+J+L2,mW+,mX+,mW+,mX+)?W+i(X+i,e,e,mW+},mX+K++)@J+J+L!3,mW+,mX+,mW+,mX+)ϑW+i(X+i,e,e,mW+,mX+}K++) J+J+L3,mW+,mX+,mW+,mX+)W+i(X+i,e,e,mW+,mX+K++)J+J}+L4,mW+,mX+,mW+,mX+)W+i(X+i,e,e,mW+,mX+W+X+K++)J+J+Ly}4,mW+,mX+,mW+,mX+)?W+i(X+i,e,e,mW+,mX+K++)J+J+L4,mW+,}mX+,mW+,mX+)ϑW+i(X+i,e,e,mW+,mX+K++)J+J+LY5,mW+,mX+,mW+},mX+)W+i(X+i,e,e,mW+,mX+K++)J+J+L5,mW+,mX+,mW+,mX+})W+i(X+i,e,e,mW+,mX+8W+W+X+X+`L5J+mK+_+M+L+IL6M+ M+L+IL6M+ }@M+L+IL%6M+ M+L+IL76M+ M+L+ILI6M+ M+L+IL[6M+ M+L+ILm6M+ M+L+IL6M+ M+J+mK+M+}_+`L6D`,:a,J+m,66J+L6=8J+,J+_,J+L6.J+_,J+PJ+_,J+SJ+_,J+FJ+_,J+J+_, L}&J+_, .L#7 FILE NAME = 7 R&,_ ?&,_ &K+ O+=O+L7N+ N+L7 /L+K+_+K+K+I~L7K+}}K+L7K+_+J+J+ &K+L7K+N+L[7O+LL7L+K+77L+L7 L+_+J+J+ &L+L7 L& .`L7T+iS+ -r+I}L08 .L%8SORRY, DIRECTORY FILLED!8 ?& .`+L`8 .LU8SORRY, DISK IS FILLED!8> ?& .` J+J+_+ILx8J+L8J+_+K}+8J+ J+L8Le8J+ &%W+X+K+IL8W+X+K+IL8W+iW+X+iX+K+IL8W+iW+X+iX+K+IL 9W+}iW+X+iX+K+IL%9W+iW+X+iX+K+IL@9W+iW+X+iX+K+IL[9W+iW+X+iX+V+jU+P+V+T+U+S+ -P}+_+L9L9P+i P+P+L9U+V+P+Li9_mP++i, q*P+J+P+i99J+L:NJ+_+IL : }J+_+J+i_+J+L98U+jV+ &% P+ [%e[+i\+X+W+ [%K+}K+ &%8W+宍J+P+iJ+_+P+iK+_+P+i_+P+iX_+P+i<_+P+i_+V+T+U+S+} -X+V+W+U+K+ O+=O+L;N+ N+L; /L+K+_+K+K+I~L;U+V+K+iV+U+ [%_+K+i}_+ &%8U+嬮K+_+K+8U+S+V+T+ -N+L;O+L ;V+U+ [%8J+J+)J+U+)W+V+)X+}J+L=DJ+OJ+L< J+_+J+L;W+ X+Lk<8U+V+ [%K+8U+V+K+ &%8嬍J+}L<8U+ V+ [%K+8U+ V+K+ &%8嬍J+J++K+++X+<++W+ X+L=},+ q*`J+oJ+L2=J+_+IL,= J+_+J+i_+J+L<8U+V+ [%K+8U+V+}K+ &%8嬍J+J++K+++X+<++++V+T+U+S+ - >. \+[+ [%K+ K+ }&%8[+宍L+L+ [%iL+J+ 5U+iV+i [%K+U+iV+iK+ &%8}L+ J+X+ȌW+W+X+L>L+L>L+8K+K+ 58L+L+W+X+Lm>T+iS+ -`L>Q+L> I-L> y-K+ O+=O}+L(?N+ N+L"? }1K+K+I~L?Q+L?S+T+ I-L? y-K+N+L>O+L>`L,? f.P+ L&LD?D:*.PSF?< &}J+P+k?k?J+L?D_,,_ z&b,AL?L?J+L`? L&R+I R+IL? .L.AЍR+b,AL? .L?END OF DIRECTORY!?} ?& .L.AL+AD`,:a, J+J+_,I L@J+_,I L@8J+J+L@L@L?J+.J+_,J+PJ+_,J+SJ+_,J+FJ+_,J+_,P}+ .Ld@ FILE NAME = @W R&,_ ?&L@PUSH FOR NEXT PICTURE!@u ?&L@#PUSH OR FOR MAIN MENU!@ ?&L@ }(DO NOT SWITCH DISKS YET!)@ R& L&,_ & > L&ЍR+R+ILAL"AL A 5*L4?_, .`L:AV+jU+P+ f}.V+T+U+S+ -R+R+I R+ILvA .LXCЍR+P+i_+LB ._mP++i8,_ q*`,LA }.LAEND OF DIRECTORY!A ?& .LXC_,LA FILE NAME = A R&,_ ?&L.BPUSH FOR NEXT PICTURE!B ?&L\B#PUSH } OR FOR MAIN MENU!B8 ?&LB (DO NOT SWITCH DISKS YET!)Bf R&P+i_+ &%S+T+P+iS+}_+S+T+}iT+ >ЍR+R+ILBLBLB 5*P+i P+P+LCU+V+P+V+T+U+S+ -U+V+LUC .LHCI CANT'T FIND ANY} PICTURES!C, ?& .LXCL_A .`L_C L&LoCD:*.PSFCg &_,,_ z&b,ALC .LCI CAN'T FIND D:C R&, R}&LC.PSFC ?&`, L&LEK+J+,CCJ+LBDFJ+iJ+,]_,LDK+j,IPLDK+k,ISL-DK+l,IFL L&LELC`LE f. ._,L9E FILE }NAME = E, R&,_ ?&P+i_+ &%S+T+P+iS+}_+S+T+iT+ >`LEV+jU+P+V+T+U+S+ -_mP+}+i8,_ q*`,LF .LE CAN'T FIND E R&, ?& .`K+,L+J+L+FFJ+L. .LG (DO NOT SWITCH DISKS NOW!)Gf ?&Q+LGLG$ENTER PICTURE }NAME (15 LETTERS MAX!)G ?&LGLG ENTER FILE NAME (8 LETTERS MAX!)G ?&LG?G R&, s&,L H`Q+LH ELH \C`,}L*H . .` .LUH$PUT DESTINATION DISK IN DRIVE#1 NOW!H0 ?&LHPUSH KEY WHEN YOUR READY!H_ ?&LH#PUSH KEY TO }GO TO MAIN MENU!H ?&LH%(YOU CAN SWITCH DISKS AT THIS POINT!)H R&ILHLHLHI IL I .` >. .L.I (DO NO}T SWITCH DISKS NOW!)I ?&Q+LoILeI$ENTER PICTURE NAME (15 LETTERS MAX!)I@ ?&LILI ENTER FILE NAME (8 LETTERS MAX!)Ir} ?&LI?I R&, s&,LI`Q+LI 7LI 6ILI .`LI ) 5*  ~)  ~) >. M+\+[+Q+L/JȌV+}jU+P+V+T+U+S+ -LKJL:JD:*.PSFJ2 &M+L$KLWJJV ?&LyJPUSH TO SEE MORE!Ja ?&LJ$PUSH O}R FOR MAIN MENU!J ?&LJ (DO NOT SWITCH DISKS YET!)J R&ЍR+R+ILJLJLJR+I R+ILJL/M ) 5*}  ~)  ~) M+Q+L&L_,P+i_+LKJ+J+LsKP+mJ+8_+J+_,J+LHK_,`,LKLKK ?&}LKEND OF DIRECTORY!K ?&LKK ?&L/MLKFILE # K R&[+\+\+[+ &LK IS K R&,_ ?&8M+M+P+i P+P+L}LU+V+P+V+T+U+S+ -Q+IL,M_,,_ z&b,AL}LLLLLK ?&LhLEND OF DIRECTORY!LV ?&LsLLr ?&L/MD`,:}a, J+J+_,I LLJ+_,I LL8J+J+LLLLLLJ+.J+_,J+PJ+_,J+SJ+_,J+FJ+_,J+_,LLFILE # L R&[+}\+\+[+ &LM IS M R&,_ ?&8M+M+LKJQ+IL>M L&R+I R+ILSM .`LsMPUSH TO GO MAIN MENU!MV ?&,_ }s&`LM ) 5* ~) ~) ~)R 5*LMM ?&LMM ?&LM M ?&LN } |PRINT SHOP DISK UTILITY|M ?&LGN N& ?&LRNNQ ?&L]NN\ ?&LN# The 'PRINT SHO}P' is Trademark ofNg ?&LN Broderbund Software!N ?&LNN ?&LN" This program by Dave Oblad,1985N ?&LN}N ?&LO Downloaded from theO ?&LDO ŠҢO( ?&LlO BBS. (714) 772-9671ON ?&}LwOOv ?&LO' This Program Was Written Using ACTION!O ?&LO ACTION! is Trademark ofO ?&LO Action Com}puter ServicesO ?&L+P" Portions of this Program areP ?&LXP" Copyrighted (C) 1984, A.C.S.P5 ?&LcPPb ?&LP}! Push key to continue!Pm R&R 5*ILPLPLP ) 5* ~) ~) ~)LP"THIS PROGRAM W}AS DESIGNED TO ALLOWP ?&L)Q YOU TO SHARE YOUR UNIQUE PICTUREQ ?&LVQ"CREATIONS WITH OTHER ATARI OWNERS!Q3 ?&LQ#THIS I}S ACCOMPLISHED BY FIRST USINGQ` ?&LQ THE 'PRINT SHOP' GRAPHICS EDITORQ ?&LQ!TO CREATE AN PICTURE ANDQ ?&L }R%SAVING IT TO THE 'Ҡˠ'!Q ?&LRR ?&LAR NOW THIS PROGRAM CAN BE USED TO:R ?&LnR"A: VIEW THE 'Ҡ}' PICTURES.RK ?&LR%B: XFER THEM TO AN ATARI FORMAT FILE.Rx ?&LR%C: SWAP,BY MODEM,ATARI FILE VERSIONS.R ?&LR#D: VI}EW ATARI FORMAT FILE PICTURES.R ?&L,S%E: XFER THEM TO 'Ҡ' FOR USE!S ?&L7SS6 ?&LgS%THE ATARI FILE NAME .EXT }MUST BE .PSFSA ?&LS$THIS PROGRAM DOESN'T CHECK DISKS FORSq ?&LS%DUPLICATE FILE NAMES, SO BE CAUTIOUS!S ?&LS#THIS PR}OGRAM IS INTENDED TO ENHANCES ?&L"T#BRODERBUNDS 'PRINT SHOP' AND NOT TOS ?&LQT$DISSEMINATE THEIR PRODUCTS SO PLEASET,} ?&L{TDISTRIBUTE ORIGINAL WORKS ONLY!T[ ?<PUSH KEY TO BEGIN!T R&ILTLTLT`LT , , M . )} 5*  ~)  ~)LU" TO TRANSFER A PICTURE FILE!T ?&L.Q+}LU 7ALU )?R+ILU FR+ILU ILT``T DISKS AT THIS POINT!)Un R&ЍR+R+ILULULU L& L&R+ILU >.}Q+LU 7ALU )?R+ILU FR+ILU ILT``T}000000}.20100F?g  000000= PRSHPDIR.BAS ============ PRSHPDIR.BAS is a LISTed BASIC program which will list the dir- e}ctory of a PRINT SHOP saved graphics disk. It will identify which are graphics files, which are Screen Magic files and }how many sectors are available on the disk for additional graphics (5 sectors each for a graphic file, 61 sectors for} each Screen Magic file). You can opt to dump a 4-column list to a printer and further select "tiny print" for EPSON/}compatible printers. It uses a machine language subrout- ine to speed the reading of the directory sectors.or EPSON/r  MBUFPTYPLFNSLNSTA } d""****************************n""* *x""* PRINT SHOP DIRE}CTORY *""* *""* by Rich Moore *""* *""* } *""* Prints directory for *""* PRINT SHOP (tm) saved *""* graphics. Has "Tiny *}""* print" option (EPSON *""* and STAR MICRONICS *""* dot matrix printers). *""* File types are sh}own *""* by a lower-case letter *""* in front of the name: *""* *""* g g}raphic file *""* s screen magic file *"""* *,""****************************6}@11;AP,;A(,;@ ,;@,Jjj6.`ԅhhh@Rh h hhhh˩1 } ѰM͍  Y04TII67@,.6i  8逅˥ЧУ`^67A(,.#}h*AF:A,*AR@r!@@!6-|##(}Print Shop Disk Directory(( Inse}rt disk,$!( or (print)$(++(" + for tiny print46-F:B2y,("@)"@}46-@++@*@*@A &6-Ab6-&("A 7 }A@7@@P' 6.B"@'6.AS @@'"@'} @ B+ @ Print Shop Directory8 @B A ,( No Printer."6-, }A A`-@ 6. &-@@0)6-@2$%)67%@,.7<,:}4 A`D N6-@:7%@,,X6-%@6.7,b 4X6.gl 4A6.sv67@<}@,.(*"(@2(@!@2(@ *"@(@} ")"@ ( "@)"@(6-%@@D)A@;/(&󠠠}堠;6- F:B2y,@A ( 6-%@ A $'$6-%@}%@V$+4S,=6.=:A&,667@%B:,,. sectors free:(=( "A%")"@}%(@ 1(@(@&(@1@*$$(Press for next disk4 F:B2y,@A} > A`H8&6-?:C:,<@<. LOADING SCREEN MAGIC FILES -------------------------- } When you load a screen magic file, the screen will be cleared and the picture will be loaded into memory. Press any ke}y to go back to the main menu. LOADING PRINT SHOP GRAPHIC FILES -------------------------------- When you load a} Print Shop graphic file, the following things will happen: 1. You will be asked for the X and Y coordinate}s which will be used to place the graphic on the screen. Typ- ing in response to eit}her prompt will set that coordinate to zero. 2. If you have already loaded one or more files into } memory, you will see the following prompt..."Clear or Existing screen?". Typing 'C' will erase the } screen in memory while typing 'E' will not. 3. If you respond with 'E', you will see another s }creen prompt: "Overlay (Y/N)?". Responding with 'N' will erase the area under the graphic whe }n the graphic is loaded. Typing 'Y' will not. 4. The graphic will be placed on the screen at the spec- } ified coordinates. Press any key to return to the main menu. SAVING FILES  } ------------ To save a screen, type 'S' from the main menu. Make sure you have a disk that has been formatted with }Atari DOS in drive 1. The name of the last file you have loaded will be printed on the screen. You can enter a new file}- name or type to use the name of the last file loaded. Ρ Print Shop file names may contain charac}ters which are not allowed in Atari filenames. Make sure to delete any such characters. ----------------------------}----- PROLOGUE... I hope you enjoy using this program. If you have any further questions or comments, please leave }me a message on Compuserve. - MIKE --------------------------------- ACTION LIS}TING -------------- ------------------------------ |The PSMAGIC.ACT program listed| |in ACTION!, is inclu}ded for | |your interest and reference. | ------------------------------ ;Print Shop Screen Magic;and Graphic Lib}rary ;File conversion utility;by Mike Collins;ver. 2;8/20/85;ŠΠŠŠŮBYTE ramtop=106, hitop, lot}op,clear=[0], intact=[1], picflag=[0],overBYTE ARRAY fname, filenameCARD smem=88, screen, dlhi, xpos, yposTYPE directory}=[BYTE n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,na,nb,nc,nd,ne,nfCARD startsec, PA, bytes]directory POINTER file;*******************}*****************;Burst (Block) I/O routines to do;quick disk I/O, utilizing a call to;CIO;******************************}******PROC CIO=$E456(BYTE areg,xreg);************************************CARD FUNC Burst(BYTE chan,mode, } CARD addr,buflen) TYPE IOCB=[BYTE id,num,cmd,stat CARD badr,padr,blen BYTE a1,a2,a3,a4,a5,a6]} IOCB POINTER iptr chan==&$07 iptr=$340+(chan LSH 4) iptr.cmd=mode iptr.blen=buflen iptr.badr=addr CIO(0,chan }LSH 4)RETURN(iptr.stat);************************************BYTE FUNC BPut(BYTE chan CARD addr,len)BYTE }stat stat=Burst(chan,11,addr,len)RETURN(stat);************************************PROC DISKINV=$E453();*************}***********************BYTE FUNC resdisk(BYTE drv, cmd CARD buf, sec)TYPE DCB=[BYTE sbi, dnum, com, stat} CARD addr, to, cnt, secnum]DCB POINTER diskdisk=$300disk.dnum=drvdisk.com=cmddisk.addr=bufdisk.secnum=secD }ISKINV() RETURN(disk.stat) ;************************************BYTE FUNC GetSec(BYTE drv !} CARD buf, sec)BYTE statstat=resdisk(drv, 'R, buf, sec)RETURN(stat);************************************PROC shif"}t(CARD buffer)PokeC($CB,buffer)[24 160 0 8 40 177 203 106 145 203 8 200 192 12 208 244 40]RETURN;*************#}***********************PROC overlay(CARD to, from, length)BYTE POINTER pointto, pointfromCARD countFOR count=0 TO length-$}1DOpointto=count+to pointfrom=count+frompointto^=pointto^ OR pointfrom^ODRETURN;************************************PR%}OC vdelay()BYTE jiffy, clock=20jiffy=clock ;This loop ensuresDO ;that 1 vbl interuptUNTIL jiffy#clock;&}will occur. All OD ;hardware registersRETURN ;will be updated.;***********************************'}*BYTE FUNC uppercase(BYTE chr)IF chr>='a AND chr<='z THEN RETURN(chr-$20)FIRETURN(chr);******************************(}******PROC nobreak() ;disable break keyPoke(16,64) Poke(53774,64)RETURN;************************************PROC ercheck)}(BYTE ernum)IF ernum#1 ;error check routineTHEN ;if ernum<>1 then reportramtop=lotop ;error to userGraphics(0) no*}break()vdelay()Position(8,11) Print("ERROR #")PrintBE(ernum)Position(8,13) Print("Press any key")ernum=1GetD(7)FIRETU+}RN;************************************PROC init()hitop=ramtopGraphics(24) nobreak()screen=smemlotop=Peek(561)-1 dlhi=P,}eekC(560)Error=ercheckfilename="D1: "RETURN;************************************BYTE FUNC menu()BYTE selecti-}onramtop=lotop ;put menu under screenGraphics(0) nobreak()Position(9,8) PrintE("oad Print Shop File")Position(9,10) Prin.}tE("ave File(Atari DOS)") DOPosition(9,12) Print("Make Selection:")selection=GetD(7) selection==&127selection=uppercase(/}selection)Put(selection)UNTIL selection='L OR selection='SODRETURN(selection);************************************PROC 0}showscreen(BYTE option)BYTE mode, jiffy, clock=20;clear screen if option=0ramtop=hitop ;set ramtop for gr.8IF option=clea1}r THEN Graphics(24) nobreak() picflag=0 ;erase pictureELSEPokeC(560,dlhi)FIvdelay()RETURN;**************************2}**********CARD FUNC psdir()BYTE x, stat BYTE ARRAY dirbuf(129)CARD sectorramtop=lotopGraphics(0) nobreak() Print3}E(" for next file, to load") PutE() Poke(85,6) PrintE("Filename File Type") PutE() FOR sector=362 TO 34}92 DO ;read stat=GetSec(1,dirbuf+1,sector);directory IF stat#1 THEN ercheck(stat) EXIT 5}FI fname=dirbuf FOR x=1 TO 4 DO IF fname(1)=0 THEN RETURN(0) FI fname(0)=15 file=fname+1 Poke(85,6) Prin6}t(fname) ;print filenames Print(" ") IF file.bytes<641 THEN PrintE("Graphic") ELSE PrintE("Screen Magic") 7}FI IF GetD(7)=155 THEN Poke(filename(1),'D) Poke(filename(3),':) filename(0)=15 MoveBlock(filename+48},fname+1,8) RETURN(file.startsec) FI fname==+32 OD ODRETURN(0);************************************BYTE 9}FUNC getcoord()BYTE optionramtop=lotopGraphics(0) nobreak()xpos=0 ypos=0Position(8,5) Print("This is a graphic file.")D:}OPosition(6,7) Print("Enter X coordinate(0-232): ~~~~~~")xpos=InputC()UNTIL xpos<233ODDOPosition(6,9) Print("Enter;} Y coordinate(0-140): ~~~~~~")ypos=InputC()UNTIL ypos<141OD IF picflag=1 THEN DO Position(6,11) Print("lear or <}xisting Screen?: ~~~~") option=GetD(7) option==&127 option=uppercase(option) UNTIL option='C OR option='E OD Put(optio=}n) IF option='E THEN DO Position(6,13) Print("Overlay(Y/N)?:") over=GetD(7) over==&127 over=uppercase(over) UNT>}IL over='Y OR over='N OD Put(over) FI ELSE option='C over='N FI IF option='C THEN option=clear ELSE option=i?}ntact FIRETURN(option);************************************BYTE FUNC psload(CARD sector) ;return error #BYTE statCARD@} offset, seccntoffset=0showscreen(clear)FOR seccnt=1 TO 61DOstat=GetSec(1,screen+offset,sector) IF stat#1 THEN EXIT FIA}offset==+126sector=PeekC(screen+offset);sector linkIF sector=0 OR sector>720THEN EXIT FIODercheck(stat)picflag=1RETURB}N(stat);************************************BYTE FUNC gfxload(CARD sector, option) ;return error #BYTE stat, wait, bak=710C}, point=709, i, bitsBYTE ARRAY gfxbuf(640), shiftbuf(12)CARD offset, seccntoffset=0showscreen(option) bak=8 point=0D}vdelay()FOR seccnt=1 TO 5DO stat=GetSec(1,gfxbuf+offset,sector) IF stat#1 THEN EXIT FI offset==+126 sector=PeekC(gfxbuE}f+offset);sector link IF sector=0 OR sector>720 THEN EXIT FIODercheck(stat)picflag=1bits=xpos&7 xpos== RSH 3 FOR F}offset=0 TO 51 DO IF bits#0 THEN shiftbuf(11)=0 MoveBlock(shiftbuf,gfxbuf+offset*11,11) FOR i=1 TO bits DO sG}hift(shiftbuf) OD IF over='Y THEN overlay(screen+offset*40+xpos+40*ypos,shiftbuf,12) ELSE MoveBlock(screeH}n+offset*40+xpos+40*ypos,shiftbuf,12) FI ELSE IF over='Y THEN overlay(screen+offset*40+xpos+40*ypos,gfxbuf+offsI}et*11,11) ELSE MoveBlock(screen+offset*40+xpos+40*ypos,gfxbuf+offset*11,11) FI FI ODGetD(7) ;wait for keypresJ}sRETURN(stat);************************************PROC saveit()BYTE statramtop=lotopGraphics(0) nobreak()IF picflag THK}EN Position(15,8) Print("Save Screen") Position(8,10) Print("Insert disk with Atari DOS") Position(8,12) Print("Enter filL}ename or .") Position(8,14) Print(filename) Position(8,14) Print("") InputS(filename) showscreen(intact) Close(2)M} ;just in case Open(2,filename,8,0) stat=BPut(2,screen,7680) IF stat#136 THEN ercheck(stat) FI Close(2) ELSE Put(2N}53) Position(8,10) Print("No Picture in Memory!") Position(11,12) Print("Press any key") GetD(7)FIRETURN;********O}****************************PROC main()BYTE choice, statCARD start, optioninit()DO choice=menu() IF choice='L THEN P}start=psdir() ;get first sector IF start#0 THEN IF file.bytes<641 THEN option=getcoord() gfxload(Q}start,option);load graphic ELSE psload(start);load picture FI FI ELSEIF choice='S THEN saveit() FI ODRR}ETURNoption);load graphic ELSE psload(start);load picture FI FI ELSEIF choice='S THEN saveit() FI ODR;Print Shop Screen Magic;and Graphic Library ;File conversion utility;by Mike Collins;ver. 2;8/20/85;ŠΠŠ!T}ŠŮBYTE ramtop=106, hitop, lotop,clear=[0], intact=[1], picflag=[0],overBYTE ARRAY fname, filenameCARD smem=88!U}, screen, dlhi, xpos, yposTYPE directory=[BYTE n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,na,nb,nc,nd,ne,nfCARD startsec, PA, bytes]di!V}rectory POINTER file;************************************;Burst (Block) I/O routines to do;quick disk I/O, utilizing a cal!W}l to;CIO;************************************PROC CIO=$E456(BYTE areg,xreg);************************************CARD !X}FUNC Burst(BYTE chan,mode, CARD addr,buflen) TYPE IOCB=[BYTE id,num,cmd,stat CARD badr,padr,b!Y}len BYTE a1,a2,a3,a4,a5,a6] IOCB POINTER iptr chan==&$07 iptr=$340+(chan LSH 4) iptr.cmd=mode iptr.b!Z}len=buflen iptr.badr=addr CIO(0,chan LSH 4)RETURN(iptr.stat);************************************BYTE FUNC BPut(BYTE![} chan CARD addr,len)BYTE stat stat=Burst(chan,11,addr,len)RETURN(stat);*******************************!\}*****PROC DISKINV=$E453();************************************BYTE FUNC resdisk(BYTE drv, cmd CARD buf, !]}sec)TYPE DCB=[BYTE sbi, dnum, com, stat CARD addr, to, cnt, secnum]DCB POINTER diskdisk=$300disk.dnum=drvdis!^}k.com=cmddisk.addr=bufdisk.secnum=secDISKINV() RETURN(disk.stat) ;*******************************!_}*****BYTE FUNC GetSec(BYTE drv CARD buf, sec)BYTE statstat=resdisk(drv, 'R, buf, sec)RETURN(stat);*****!`}*******************************PROC shift(CARD buffer)PokeC($CB,buffer)[24 160 0 8 40 177 203 106 145 203 8 200 19!a}2 12 208 244 40]RETURN;************************************PROC overlay(CARD to, from, length)BYTE POINTER pointto, po!b}intfromCARD countFOR count=0 TO length-1DOpointto=count+to pointfrom=count+frompointto^=pointto^ OR pointfrom^ODRETURN!c};************************************PROC vdelay()BYTE jiffy, clock=20jiffy=clock ;This loop ensuresDO !d} ;that 1 vbl interuptUNTIL jiffy#clock;will occur. All OD ;hardware registersRETURN ;will be upda!e}ted.;************************************BYTE FUNC uppercase(BYTE chr)IF chr>='a AND chr<='z THEN RETURN(chr-$20)FIRE!f}TURN(chr);************************************PROC nobreak() ;disable break keyPoke(16,64) Poke(53774,64)RETURN;********!g}****************************PROC ercheck(BYTE ernum)IF ernum#1 ;error check routineTHEN ;if ernum<>1 then reportr!q}b%DOS SYSb*)DUP SYSb SAUTORUN SYSb_HELP DOCbjoSHOPTOOLOBJbPRSHPDIRDOCbPRSHPDIRBASb^PSMAGIC DOCb>SPSMAGIC ACTbSTEVE PSFbTVSET PSFbBIKE PSFbLUVBIRDSPSFbMICKEY PSFbSMURF PSFbCHIP PSFbTAKE2 PSFbATARI400PSFbCOW PSFbPHONE PSFbCOOKIE PSFbGARFLD PSFbUNICORN PSFbATARI800PSFbCIRCLE PSFbACE PSFbJACK PSFbWITCH PSFbRAM PSFbSCOPE PSFbFLOODS PSFb MASKHEADPSFbSAIL PSFamtop=lotop ;error to userGraphics(0) nobreak()vdelay()Position(8,11) Print("ERROR #")PrintBE(ernum)Position(8,13) Print!r}("Press any key")ernum=1GetD(7)FIRETURN;************************************PROC init()hitop=ramtopGraphics(24) nobre!s}ak()screen=smemlotop=Peek(561)-1 dlhi=PeekC(560)Error=ercheckfilename="D1: "RETURN;*************************!t}***********BYTE FUNC menu()BYTE selectionramtop=lotop ;put menu under screenGraphics(0) nobreak()Position(9,8) PrintE("!u}oad Print Shop File")Position(9,10) PrintE("ave File(Atari DOS)") DOPosition(9,12) Print("Make Selection:")selection=Get!v}D(7) selection==&127selection=uppercase(selection)Put(selection)UNTIL selection='L OR selection='SODRETURN(selection);*!w}***********************************PROC showscreen(BYTE option)BYTE mode, jiffy, clock=20;clear screen if option=0ramtop=!x}hitop ;set ramtop for gr.8IF option=clear THEN Graphics(24) nobreak() picflag=0 ;erase pictureELSEPokeC(560,dlhi)FIvd!y}elay()RETURN;************************************CARD FUNC psdir()BYTE x, stat BYTE ARRAY dirbuf(129)CARD sectorr!z}amtop=lotopGraphics(0) nobreak() PrintE(" for next file, to load") PutE() Poke(85,6) PrintE("Filename !{} File Type") PutE() FOR sector=362 TO 392 DO ;read stat=GetSec(1,dirbuf+1,sector);directory IF st!|}at#1 THEN ercheck(stat) EXIT FI fname=dirbuf FOR x=1 TO 4 DO IF fname(1)=0 THEN RETURN(0) FI fname!}}(0)=15 file=fname+1 Poke(85,6) Print(fname) ;print filenames Print(" ") IF file.bytes<641 THEN PrintE("Graph!~}ic") ELSE PrintE("Screen Magic") FI IF GetD(7)=155 THEN Poke(filename(1),'D) Poke(filename(3),':) !} filename(0)=15 MoveBlock(filename+4,fname+1,8) RETURN(file.startsec) FI fname==+32 OD ODRETURN(0);*!}***********************************BYTE FUNC getcoord()BYTE optionramtop=lotopGraphics(0) nobreak()xpos=0 ypos=0Positio!}n(8,5) Print("This is a graphic file.")DOPosition(6,7) Print("Enter X coordinate(0-232): ~~~~~~")xpos=InputC()UNTIL !}xpos<233ODDOPosition(6,9) Print("Enter Y coordinate(0-140): ~~~~~~")ypos=InputC()UNTIL ypos<141OD IF picflag=1 T!}HEN DO Position(6,11) Print("lear or xisting Screen?: ~~~~") option=GetD(7) option==&127 option=uppercase(option) U!}NTIL option='C OR option='E OD Put(option) IF option='E THEN DO Position(6,13) Print("Overlay(Y/N)?:") over=GetD(7!}) over==&127 over=uppercase(over) UNTIL over='Y OR over='N OD Put(over) FI ELSE option='C over='N FI IF option!}='C THEN option=clear ELSE option=intact FIRETURN(option);************************************BYTE FUNC psload(CA!}RD sector) ;return error #BYTE statCARD offset, seccntoffset=0showscreen(clear)FOR seccnt=1 TO 61DOstat=GetSec(1,scree!}n+offset,sector) IF stat#1 THEN EXIT FIoffset==+126sector=PeekC(screen+offset);sector linkIF sector=0 OR sector>720THEN!} EXIT FIODercheck(stat)picflag=1RETURN(stat);************************************BYTE FUNC gfxload(CARD sector, option)!} ;return error #BYTE stat, wait, bak=710, point=709, i, bitsBYTE ARRAY gfxbuf(640), shiftbuf(12)CARD offset, seccnto!}ffset=0showscreen(option) bak=8 point=0vdelay()FOR seccnt=1 TO 5DO stat=GetSec(1,gfxbuf+offset,sector) IF stat#1 THEN !}EXIT FI offset==+126 sector=PeekC(gfxbuf+offset);sector link IF sector=0 OR sector>720 THEN EXIT FIODercheck(stat)!}picflag=1bits=xpos&7 xpos== RSH 3 FOR offset=0 TO 51 DO IF bits#0 THEN shiftbuf(11)=0 MoveBlock(shiftbuf,gfxbuf+offs!}et*11,11) FOR i=1 TO bits DO shift(shiftbuf) OD IF over='Y THEN overlay(screen+offset*40+xpos+40*ypos,!}shiftbuf,12) ELSE MoveBlock(screen+offset*40+xpos+40*ypos,shiftbuf,12) FI ELSE IF over='Y THEN overlay(!}screen+offset*40+xpos+40*ypos,gfxbuf+offset*11,11) ELSE MoveBlock(screen+offset*40+xpos+40*ypos,gfxbuf+offset*11,11)!} FI FI ODGetD(7) ;wait for keypressRETURN(stat);************************************PROC saveit()BYTE statramtop=!}lotopGraphics(0) nobreak()IF picflag THEN Position(15,8) Print("Save Screen") Position(8,10) Print("Insert disk with Ata!}ri DOS") Position(8,12) Print("Enter filename or .") Position(8,14) Print(filename) Position(8,14) Print("") Input!}S(filename) showscreen(intact) Close(2) ;just in case Open(2,filename,8,0) stat=BPut(2,screen,7680) IF stat#136 THEN er!}check(stat) FI Close(2) ELSE Put(253) Position(8,10) Print("No Picture in Memory!") Position(11,12) Print("Press!} any key") GetD(7)FIRETURN;************************************PROC main()BYTE choice, statCARD start, optioninit()!}DO choice=menu() IF choice='L THEN start=psdir() ;get first sector IF start#0 THEN IF file.bytes<641 !}THEN option=getcoord() gfxload(start,option);load graphic ELSE psload(start);load picture FI FI EL!}SEIF choice='S THEN saveit() FI ODRETURNyyyyyyyload graphic ELSE psload(start);load picture FI FI EL 7|~?%}@@@?@q@@@@`` %}6 > . x

@ 5} 0>>5} @@>@8>4IUUPUB*A(!!A " !HA!B!J!$D  I  !$D!9} AHAB$D"@BA !!TDAD  @UHA H$! UUUIA BBPH!$9} #𐄄 $0'D"x GB@`(A$0?B!@ $@ D @@  H@@ AH@9}@@~BP`Ȃ RDHA G!@D`$x>G U9}B0| ?@>D`$x>G U8I9@=}` yX`2 p` `Xy=}là,` 80NB @<; ࿻Ȁpsw=}{NsEs@s@Iq)a  =}=====================================================}===================================================================<???A}???A}2\J{JpJ\@``@<A}pA}====================================================A}===================================================================@E}P,XO*1ÅUPE}@@ mf AmͶmxx@@@E}@Ǐ E}DII}A?@%OgI}AT y_?? '<?&g|g||@O|~I}? Kp  @Ϙ `    C0cfI}?/???   C0cfHI@?@0ǀM} 80?X G ;X  j80    M}   ƀ'7?M}Ĝ D|fx@ ?  ? @>?|M}? @>?|LI<0Q} 030'0 >w/3XQ}G8a< 0 8pp`0`a`0P p Q} GE@@ pp@8`n|p@x' ǀ0pb @Q}#qɀ`1 y0 0pq0|HKn|p@x' ǀ0pb @PIlU}~pŶJwp $(Ok> P@x@c@0U}:0  BxAA1@@o X !  8 0 x@U}g(<&p`@0#꼪؁પꫀꪪP:jXU}[uZ?j@0#꼪؁પꫀꪪP:jXTI@ @HMPs\<Y}y@  P$ `$ `Y}T0UU pPTq8pꂀl8=U@ o9X@l Y}80mP! B j  N}q9Y}f 1<#0FN====================================================Y}===============1<#0FN====================================================X]}]} @@@? +mm I$1 m@ I$I!@]}@? @]}\I|x8|a}x8  $6H@  @@Ha}H $ $ $ $HH@a}@  @L2 $8 x8>x>a}8 x8>x>`IL #8a`?e}08`p`??0 ~ ~e}\1>9>}p~~`> ?>?>||e}!@ t(?W "Oe}C?tW "OdI?|KzI$I`O'O$K0I'i}=y% $%I$$L=<$I>OI$~0I/KI$dI$'$I_4m}$ĒI$YOI$~0I/KI$dI$'$I_4lIBBBC@@@ P@PC P!B!Bq}!B!B!B!Bs8p q}<p!"  # UUU  UUU?8DBDBr}BB8B8BBBBBBBB@kr}4BBBBBBBBBBBB@kpI*UUUUUUUUT! 8q ! >F >@v} ?q ""UUW8 b a `8 89ap v}@0 1 8  0a U?>Ex}~@KIv}tI   8 z}~z }ȁ ȃ`DAxkpr| W^UUUUU]UUUUUUUUUU]UUUUUUUUUU\UUUUU*Uz }UUUUUUUU8 UUUUT\UUUU8UUUUP\UUUU8UUUU@\UUUU:*UUUUU]UUUUUUUUUUUUz }UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:*UUUUU]UUUUUUUUUUUUxI99999999999BBBBBBBBBBB$$$$$$$$$$$!!!!!!!!!!!NNNNNNNNNNN~ }~}~}NNNNNNNNNNN!!!!!!!!!!!~}$$$$$$$$$$$BBBBBBBBBBB99999999999NNNNNNNNNNN!!!!!!!!!!!|IDDDDDDDDDDDDDDDDDD|DDDED@ D`D@A1F UUUUQGꪪD~UU}UUDDD|Dy?yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD}DDDDDDDDXDDDDDDDDD\DDDDDUUUUU]UUUUUUUUUU]UUUUUUUUUU\UUUUU*U}UUUUUUUU8 UUUUT\UUUU8UUUUP\UUUU8UUUU@\UUUU:*UUUUU]UUUUUUUUUUUU}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:*UUUUU]UUUUUUUUUUUUI