LnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)0 WAP /// SIG MENU.MAKER PROGRAM (v. 6.2) =".D1"210: Coldstart (320: Warmstart &*X=11000: TEXT SLOW-DOWN LOOP ,X.1 CHANGE DISK SUBROUTINE23œ202:2200<RFa$=" YOU MAY SELECT YOUR DISK BY v !v +READCRT.INVF!t+REQUEST.INV F!+SUTHARDCv)!v)III.MISC.04086Bu' DAVIDSONF!FDISKNAME.DAT"22,DOWNLOAD.INVF!+*MENU.MAKER  }>%SEG.T jŸ/ RAT.DRIVER >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@LVOLUME NAME (/DISKNAME) OR DEVICE NAME (.Dx)"P12);::"80C";a$;:Zb$="CHANGING DISKS"$d=23:=0::"80C";b$;::12).n=12:=20:"MAKE A NEW MENU FOR DISK: ";N$xN$)<2110=N$ :210 I=1L(A$(I),A$))200B$ 78C";"ANY KEY RETURNS TO THE MENU.">G$:::320H: Error Routine 202:U=11:"79C";"BAD PATH ERROR (NO DISK IN DISK DRIVE OR DESIRED FILE NOT FOUND.)"X=11000:X:::210Z a$="{,|,~,}; selects; back 1 lev 1600 &:WW=1:0 :SEG=1;".D1/S EG.F" SEG=1".D1/SEG.G"diskname$=3802  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T READ PASCAL TEXT FILES."04=10:"M$="NOVEMBER":1750M$="DECEMBER":1750826);"-";M$;" ";Ѡ,2));", ";"19";Р,2);" ";/П,2))=>13П,2))-12;џ,6);:1780$П,2))=0"12";џ,6);:ٟ;$П,2))=>12" PM-":" AM-" 1830WW=1530 =26:=211660,1670,1680,1690,1700,1710,1720,1730,1740^M$="JANUARY":1750hM$="FEBRUARY":1750rM$="MARCH":1750|M$="APRIL":1750M$="MAY":1750M$="JUNE":1750M$="JULY":1750M$="AUGUST":1750M$="SEPTEMBER":1750M$="OCTOBER":1750T 0")2070H540R\A$="RUNNING "+B$(I),16,B)f"79C";A$;:=0pB$(I),16,B) z::SEG=1".D1/SEG.T"t=+B$(I),16,B) yCT=CT+1~240:=24:=0:"@ ..... "DATE.TIME.LINE" ....JM=Ҡ,4,2))BTM1630,1640,1650,0=+IBOTM/2-.5):I=IBOTM:I/2=I/2)I=I-1 œ2120B=B$(I),16)," ")-1 B$(I),"BASIC 0")850B$(I),"TEXT 0")890 B$(I),"CAT 0")1140*B$(I),"FONT 0")18504B$(I),"FOTO 0")1930>B$(I),"PASTXB$(I);v:520: 500THPOS=4:I/2=I/2)I=I-1I=IBOTM THPOS=44:I/2<>I/2)I=I+1I2=-1:I=I-2:IBOTM<30THPOS=44I=IBOTM/2)*2:=+IBOTM/2)-1:CA)"PRINT.ALL": OA+P 3HA=(81+UCA)A=(81+LCA):::: OA+Q Quits 3IA=(83+LCA)A=(83+UCA)"PRINT.SHOW": OA+S 2JA=(68+LCA)A=(68+UCA)/Screen.Savers/HELLON=THPOS:B$(I);XA<8A>11540bA-7640,660,690,720l:=THPOS:ٺ1600 =Q:WW=0A=:A=21A=9&oldprefix$=40A=31410: Control C "aborts" program to Basic(:A=13770: Return Selects a file *DA=27:50: Escape to change disks/FA=324000: back out one directory level 3GA=(80+UCA)A=(80+L"BASIC 0":150A$="TEXT 0":150A$="CAT 0":150A$="FONT 0":150A$="FOTO 0":150A$(L),"BLOCKS")510*=27:=19:"FREE MEMORY AVAILABLE: ";=7:=20:"80C";A$(L);$:=5:THPOS=4:I=1:IBOTM=J-1:620Q=:=26:=21:sic; +Q Quits."r12);::"80C";a$;:+w#9,"DISKNAME.DAT":#9;DISKNAME$:#9|d$=DISKNAME$$=23:=0::"80C";d$;::12)201M=3:=14:"This /// SIG Disk is \^ 19";Р,2)", Washington Apple `, Ltd."=4:B$(1)="":B$(2)=""A$=16,B) THEN 240 #1, d$="":=10:"80C";d$ ž#1300I=0"I=I+1:#1;A$(I):290,#1 6L=I-1@j=1:same=0 J:SEG=0 Tœ2030^CT<1CT=1cCT>13000Zha$="{,|,~,}; selects; to new disk; J/2)=4:=+1:ۙ=44B$(J);:J=J+1I:1,180,22:2,280,21:2,2380,23:8A$(1000),B$(1000),C%(511),C$(20),name$(20):=10:=0UCA=128:LCA=UCA+32CT=15 IF PREFIX$= PREFIX$+MID$(B$(I),el; ?Bi{Ci|) |=! "LL{@?>8(O\ F9 >{i 5|i6) 6|8 L5{ hhhh0 hWhXXL `L5 !"GA3/1.01:7SY CONTROL GETFONT GETFONT DOARRAY2QLOADFONT LOADFONTDOARRAY2ARRAY2 Y5ȱg6ȱg@ ɀLDg eegghI8e556l6m`  lmL}\ZYc&h:h; (+65;H:H`,.CONSOLEg<:/.-+*(% CX`hhh5h66HH :~5~HHH|})   |}) @  hhh ghzh{ Qghhh5h66 HHH566 qyhhhpx{HzH`~ca` hhh5h66HH :5HHH) @  hhh g5ȱg6ȱg@ ɀL g eegghI8e556l6m `  hUhVh8 ㅊ eh֭VHUHk`HFB>;:9853/&" NL64Ch5h6h3lh4m 0/L6H5H`g8640'%76,V^dKA;6hWhXhhhQlhRm e Nb YMH YhLSꈭTXHWH`g& ** DOWNFONT **H Downloads selected and prepared (.PRT) font to Panasonic printer! "download.inv","request.inv"#1,".printer".integer%(512):array$="integer%":byte%(8))"Which font do you want to u '";a$;"' IN THE"3#1;"PANASONIC PRINTER'S IBM PROPRINTER MODE."#1;>#1;"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";#1;#1;$***********************************% subroutine to demonstrate font.I *******************************************************************;#1;27)+"I"+4);: prepares for use of download font@#1;"THIS IS AN EXAMPLE OF THE PRINTER FONT*i+1)="00"+integer%(4*ascii+i)),2))i#1;0)+0);w#1;byte%(0))+byte%(1))+byte%(2))+byte%(3))+byte%(4))+byte%(5))+byte%(6))+byte%(7))+0)+0)+0); ascii 1000I ********************************#%&to use? ";a$1(expr$=34)+a$+34):getfont(@expr$,@array$))2#1;27)+"="+84)+1)+20)+65);A3 sets IBM mode, first character = ascii(65), 26 characters dascii=6590 ni=032xbyte%(2*i)="00"+integer%(4*ascii+i)),2))4byte%(2* ** DOWNFONT.IBM **H Downloads selected and prepared (.PRT) font to Panasonic printer! "download.inv","request.inv"#1,".printer".integer%(512):array$="integer%":byte%(8))"Which font do you want FILWRITE FILWRITEGETRFNM RTRFNM ERROR ^ROR DOARRAY OARRAY  ERROR ?BUFPNT NT DEVINFO DEVINFO MOVESTR FILREAD FILREAD BUF :4 GETRFNM BUFPNT OJNT ERROR ROR DOARRAY e=TPARMSERROR uROR BUFPNT BMOVESTR REQNUM UUM BLDSTRN DSTRN BUF pia RETURN RETADR  GETPARMSFREQNUM BUF "CONTROL CONTROL RETURN RETADR GETPARMS TPARMSERROR ROR STATUS STATUS BLDSTRN ,BUF |F GETPARMSca` hhh5h66HH :5HHH) @  hhh g5ȱg6ȱg@ ɀL g eegghI8e556l6m `  hUhVh8 ㅊ eh֭VHUHk`HFBse? ";a$1(expr$=34)+a$+34):getfont(@expr$,@array$)XJY *******************************************************************JZ Pulls data out of printer fontfile in a form useable by the printer*[ in downloading in lines 150 to 170.J\')*+( Jeppson's Character Design Program modified by C.M. Davidson to give option of making a printer font from an Apple /// font. (Subroutine at 4000)  200: initialize newset300: initialize+=2:"78c <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>8  80,>!"*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>> >00000>",.>>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< >> " )((8xxx>>>>>>9 .(+( 8#8# %3(8 ((,+)(%.4$)?((,(103  7  3  5  IS AN EXAMPLE OF THE PRINTER FONT '";A$;"'IN THE"-#1;"PANASONIC PRINTER'S STANDARD MODE.";#1;#1;=#1;"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"#1;#1;+byte%(6))+byte%(7)); ascii 1000; *****************************************************< This subroutine simply demonstrates the selected font.; *****************************************************?#1;"THIS **********************************************= Downloads character to Panasonic printer download font.< ******************************************************m#1;0)+byte%(0))+byte%(1))+byte%(2))+byte%(3))+byte%(4))+byte%(5))********************************H Prepares Panasonic printer to accept downloaded font character for use in "Standard" mode.H ******************************************************************#1;27)+"y"+ascii);< ******** *******************************************************************]dascii=6591 ni=032xbyte%(2*i)="00"+integer%(4*ascii+i)),2))4byte%(2*i+1)="00"+integer%(4*ascii+i)),2))iH **********************************";"Design Character Utility"=6:"Select Option"#&(10);"1. load FONT --> tempset%"=-10);"2. Show character set (0..31 appear as 128..159)"6210);"3. Move characters: tempset% --> charset%"+710);"4. Create / modify a character"/:/123456789:;<=>?@ABify$2700: scan frame and read bitsA2800: convert bits to integer words --> new char definition92900: present defining bytes and show new character3000: store new character/ --------------- Subroutines ------------#+6 ----------"Create/Modify " option(main)---------42200: get ascii number:get specified character2ascii$<>""2300: convert integers --> bits2400: draw frame+ascii$<>""2500: mark bits on frame2600: create/mod-------?fontname$=34)+source$+34): (start) load font from disk œ18209getfont(@fontname$,@array$): perhaps its a fontfile :1835;:#1,source$: if not fontfile then try as basic file&!filread(%1,@array$,%1024,@count%)&#1age file: ";dest$9T#1,dest$:#1:dest$: safer to delete than overwriteYdest$,:#1,dest$^array$="charset%"cfilwrite(%1,@array$,%1024)h#19mmessage$="character set stored in "+34)+dest$+34)r. ---------------------------------4*first$)4*last$)+3:charset%(i)=tempset%(i):i1message$="ASCII ("+first$)+".."+last$))&message$=message$+") --> charset%"? ---------#@=12: (start) disk save optionE3);"-->"J=20:30);0O"specify pathname for stort) "move tempset% --> charset%"}3);"-->"=20:30);7"specify first ASCII number (default = 0):";first$first$=""first$="0"7"Specify last ASCII number (default = 127):";last$last$=""last$="127":" -- working --":;i="1"array$="tempset%":array$="charset%"loadfont(@array$) i=3247 j=07number=i+16*j+1290;number,number);: terminal";"j,ig$array$="systemset%"loadfont(@array$)  3#,2r,5x w -------0x=20: (staret%"1800: load font from disk6 message$="Character set"+fontname$+" --> tempset%"  ------!: (start) "show set" option=6:"Show: tempset% (1)?"" or charset%(2) ?"." (blank screen indicates set empty)" :g$1g$= " tempset%"3);"-->"=20:30);("Specify source pathname: ";Source$source$=""array$="tempsad.inv","request.inv"Tsource$="newset"Ymarker$=139)<^frame.top$="": gap must = 2 spaces %cframe.md1$="| | | | | | | | | |"%hbit.numbr$=" 0 1 2 3 4 5 6 7 "%mframe.md2$=" "%rframe.bot$="set%(511);@char.def%(3),temp.bits%(15),byte.bit%(7,7),hexbyte$(7)B3C FONTfile "basic/standard" and all 3 of4D these invokable modules must be available.1F Change pathname if not on volume "/basic"G/O"readcrt.inv","downloy!"download.inv","request.inv"a%(512):array$="a%"#1,"newset"&filread(%1,@array$,%1024,@count%)#1loadfont(@array$) + ------#,left=25: subroutine initialize 1top=66message$=""0;charset%(511),tempset%(511),system10);"5. Convert charset to printer font"*<10);"6. Disk save new characterset"A10);"7. Quit"F=20:message$dg$: input option number,ig$)1000,1200,1400,2000,4000,1600,500n20 to set up newset font downloading utilit=11: (start) get ascii numberprintfont22183);"-->"=20:30);<"Enter for new; or Specify ASCII number; ";ascii$printfontascii$=asc)ascii$=""-::" --- computing array pattern --";:)index=03: get specified character0char.def%(index)=charset%(4*ascii$)+index) index ------------------------2 (start) convert character definition to bits6wordnum=03: take each 16 bit word of char.def% word%=char.def%(wordnum)9 longint128):2 =20:"Do you want to revise character? (y/n)" g$ g$="n"g$="N"# g$<>"y"g$<>"Y"7);:2975 :ascii$=""ascii$="31" :2010 --------------------( :=10: (start) store new character printfont3045 ascii3'r hexbytes$(i*2)=char.def%(i)),2))w hexbytes$(i*2+1)=char.def%(i)),2)| i# i=07:hexbytes$(i);" ";:i:& :"New character's appearance: ";1 3200: load ("activate") new char as ASCII 0$ "Normal: ";128);" Inverse: "; :) display new character and defining info Y "New character definition:"^ :5);"As 4 integers: "#c i=03:char.def%(i);" ";:i:'h :5);"As 8 hexadecimal bytes: ";Hl change 4 integers to array of 8 hexadecimal bytes (2 char strings) m i=0ation in 2845* bit=015: convert binary to integer# real=real+temp.bits%(bit)*2^bit" bitB' word%=real)): convert to standard 2's complement integer , char.def%(wordnum)=word% 1 wordnum6 S -----------------------;T :=8: (start: (start)convert bits to char.def% integers/ bit=815: high byte first, then low byte. temp.bits%(bit)=byte.bit%(2*wordnum,bit-8) bit  bit=07. temp.bits%(bit)=byte.bit%(2*wordnum+1,bit) bit9 real=0: "real" numbers permit exponentieads screen with invokable module& value%=32this.bit=0:this.bit=1" byte.bit%(row,column)=this.bit column =left+17 readc(@value%)6 value%=32byte.bit%(row,7)=0:byte.bit%(row,7)=1 row -----------------------= wordnum=03:: abort -->main menus g<>132600x  --------------------5 =left-6:=23: (start) scan frame and read bits , :"---- scanning and computing ----";: row=07 =top+2*row column=06 =left+2*column8 readc(@value%): rg=8=-2A g=21=+2F g=11=-2K g=10=+2O wrap sides and skip gapP left+17=leftZ =left+14=left+17_ =left+15=left+12c wrap top and bottomd top+14=top#n g=27 column =left+17" byte.bit%(row,7)=1marker$; row =left:=top ' ----------------------( 5);:g$:6);: (start) create/modify#- g$="x"g$="X"marker$;9);2 g$=" "" ";9); 7 g=g$); moving about on frame< rame =top+2*row column=06 =left+2*column^ printfontbyte.bit1%(row,column)=byte.bit%((6-column),(row-1)):byte.bit1%(row,column)=0. byte.bit1%(row,column)=1marker$;:2525; byte.bit%(row,column)=1printfontmarker$;:2525  index;frame.md1$ 1);frame.md2$ index "7";frame.md1$ 1);frame.bot$$ : restore full screen viewport =left:=top  ------------------- & printfontfirstrow=1:firstrow=01 row=firstrow7: (start) mark bits on fintfont"Character ASCII Number: ";ascb printfont2415,e ";<'X'> places; clears";j =24:" accepts; aborts";: note:terminal";"!o left-2,top-2left+20,top+16t y 1);bit.numbr$~ 1);frame.top$ index=06to row of byte.bit% array.) byte.bit%(2*wordnum,bit-8)=temp.bits%(bit). bit/3 bit=07: bits from low byte to next row.8 byte.bit%(2*wordnum+1,bit)=temp.bits%(bit)= bit B wordnumG _ --------------------` : (start) draw frame/a pr&=word%): use long integers for computation( longint&<0longint&=longint&+65536C bit=015: convert to temporary array of 16 bits ( = 1 or 0 )" temp.bits%(bit)=longint&2) longint&=longint&2 bit>$ bit=815: bits from high byte $=""3035? "New character --> ASCII number ";ascii$);" (yes/no)? "; g$ g$="y"g$="Y"3045# g$<>"n"g$<>"N"7);:3015: "Store as what ASCII number? (RTN for none): ";ascii$0 ascii$=""message$="character discarded":# index=03: store in charset%0 charset%(4*ascii$)+index)=char.def%(index) index= message$="character stored as ASCII number "+ascii$)) Bv ************************************************************w 8x an alternate method of using cContactPhoneNotes     Listingut $ EGHIJDategory 1 Day of Week Start Time Finish Timent Project/EventLocationshed? Accomplished?EFOF<DDR !   ""C/PRODUCTION.TRAKv. C.REAL.ESTATE.DBv. CROLADEX.A.B 9v.~$C+VT.TAKE.LOGZ"`"C-SVC.CONTRACTS_v/w0 C,THINGS.TO.DOv/~; CC-JOURNAL.MODELv~xCINTEREST.CALCv08 C)INVENTORY_v-8 C-MTG.PHONE.LOGy3gC+LABEL.MAKERv-}" C-PEOPLEDEX.R.Z 5|C/STATEMENTS.19XXbv+} C,DOCTORS.INFO\ ~ C(ELEMENTSPd   C(FILE.LOGPl s C,FORMAT.PLATEog|C*FONT.TIMES{v,{ C)IDEA.FILEs{CDSUTHARDvv)'  '.CALENDAR.XX.XXF 셶 C(BUS.MAILNv*g0C/CHARACTERROSTERL  C)CFILE.LOGWv*97 C'COMMLOGZPU p C*CHECK.LIST`s2400: draw frame2500: mark bits on frame$2700: scan frame and read bitsD2800: convert bits to integer words -> rotated character defn.#3000: store rotated character"asc'printfont=0,******:printfont=17"Specify first ASCII number (default = 0) :";fasc$fasc$=""fasc$="0"9"Specify last ASCII number (default = 127) :";lasc$lasc$=""lasc$="127"asc=fasc$)lasc$) 2200$2300: convert integers to bitharacter* control(%ctrlnum,@ctrlist$)".console" D **************************************************************F subroutine to convert a screen font to a Panasonic printer font.E *********************************************************irst byte of ctrlist$@ ascii.num=0: the (only) character will be placed as ASCII 0> ctrlist$=ctrlist$+ascii.num): add ascii.num as 2nd byte( i=07: add the 8 definition bytes- ctrlist$=ctrlist$+"00"+hexbytes$(i))) i "activate" character definition.-y see Standard Device Driver Manual p. 71=z and "REQUEST.DOC" program on Business Basic Disk.{ |  ctrlnum=17: control code #3 count=1: the number of characters being loaded; ctrlist$=count): this will be f !P nCHSNOT YETRECORDSnBtepsJohn Wilkes        MOTorsonal NameContactNamen Date WrittenSubject    DDR   KPQRS DescriptionTyperence NumberPages LocationsNameTape Date ShootingIGGG=DDR)%   NOT YETRECORDSnBtepsJohn Wilkes.89dayNot Yet.91dayNot Yet P nCVSApril 25, 1988TRECORDSnBtepsJohn Wilkes List Reportport%G))))))))))))))))))))))))))))  !!!!!!!!!!!NOT YEDetailed Report&))))))))))))))))))    !P nCVS        BreakdownC  VXNamegory 1Category Sub-category Date Openedscription File TypeDescriptionLocationContents/Description DD/    TYZPerson(s) InvolvedCategoryamen Date WrittenSequenceSubjecty Description InCDRR $     PRINCIPLECORDSll print 1 lines Atmosphere Atmosphere Atmosphere P nCVSPLECORDSll print 1 linesListgnments=)))))))))))))))))))))))))))))  !!!!!!!!!!!!!!!!!!! PRINCI Assignments$))))))))))))))))))))))))))  !!!!!!!!!!!!!!!!P nCVS !U nCHS        ^  DD/   P CVS ..e Changed? ocationnged?Up Dateanged?Roladexut>b'Eb))))))))))))))))))))   !!!!!!!!!!!!!!!!!!!!ADDRESSNECITYERYNEYSTATERYlephoneZIPNTRYlephoneneCOUNTRYlephoneneHome TelephoneneOffice TelephoneSpouseenTYChildrenTYNotesALITY  []^FirmE NAMEE:Title NAMEENAL NAME First NameE Family NameZIPSfxRESSATE/ZIP SpecialityADDRESSNEGIvCDDR !;% # # G  .89.91  !!!!!P nCVS        Outliner()))))))))))))))))))  Itemgory 1AreaNumber    _ab: 1. ELEMENT 2. INT/EXT 3. LOCATION 4. TYPE Type Index! O   !U nCHSN SORT    !!!!!!!!! P nCVSDescription of MoveSound DescriptionInterior/Exterior Script PageINOUT  Element Detailsiono1 $))))))))))))))))))))))) cefghijElement# 1SceneiptionTyperiptionlved DescriptionlvedLocationnvolvedPeople InvolvednShot DescriptionjJJKNKKK2L~LCDDR     Printout4   !P  nCHSLocation Index&    !P nCHS@ SORT: 1. TYPE 2. ELEMENT 3. INT 4. LOCATIONONLOCATIONnpq SEGMENT TITLEYEAR OF PRODUCTIONPROGRAM NUMBERSEGMENT NUMBERINT TIMEOUTDUCERPRODUCERTB!DRR1          kmNamegory 1Category Sub-category Date OpenedscriptionContents/Description  =DDR     Page Index   !P n CHS !P nCHS6 SORT: 1. TYPE 2. ELEMENT 3. PEOPLE People Index(  CATALOG2   !P nCHS          uwDategory 1PageSubject    v DDR   .......................... ......... .......... ........... ............rtDategory 1Idea Description..........<DDR     9191F DDR F  4567891011TypePrintout)B)))))))))))))))))P nCHSListing     !CVS ORDER#Detailed   )))))))))))))))))))))))    !!!!!! P nz|}~PROJECTy 1SCREEN PLACEMENT HSCREEN PLACEMENT VFONT IN IN OUTFONT OUTOUT COPY READST DDRESS OUT) Q ?DD/         xNamegory 1DatePageSummaryNotes23    !P nCVS KARL DUFFCORDSll print 15 linesItem COVERED Brand NameERModel #UMBERRERSerial #UMBERERVendorCT NUMBER ERMSACT NUMBER ONTRACT NUMBERRU{DD/ *    !!!!!!!!!!P nCVS DirectoryABELMS,NqH))))))))))  P CVS...e Changed?Locationnged?Up Dateanged?Listateanged? ADDRESS LABEL3l!Ag)))))))))))))))))))))))  !!!!!!!!!!!!!!!!!!!!!!!AddressNECityeryNEStpntryneLISTINGZipntryneLISTINGCome TelephoneNG Home Phoneephone Office PhonetingSpouseen ListingChildrenCategoryInfoing List?....ing List?FirmeNAL NAMETtlenNAL NAMEL NAMEGiveny NAMEFamilys 1E/ZIPSfxition1UNTRY)PositionOUNTRY)AddressCOUNTRY)]PGGG4HH=DDR % C>,<="  /881/911 ONTRACT NUMBERR XPIRATION DATER ELEPHONE NUMBER OVERAGE FEEni   !  CVSCategory 1 Subcategory  Label)))))))))))))))))) DDR     !!!!!!!!!!!!!!!!!!!!!!! P nCVS HabamergeABEL%Ag)))))))))))))))))))))))  P nCVS Phone NumberL ,u)))))))))))))))))))))))))))  !!!!!!!!!!!!!!!!!!!!!!!!!!!RoladexryABEL ,J .Jg)))))))))))))))))))  !!!!!!!!!!!!!!!!!!!P CVSlGG DDR     .91.91P nCHSSummary Balances &  !Statement Update &  !P nCHS !P nCHSAccount #ia Payment Via Sales TaxPrevious Balance    Totals ' Datentry 01Clientry 02 Reference # DescriptionAmounttProjectegory Tax Category C!ABt DDR       USA91USA00D20INtegory 1OUTID Cue Description Quality TakeIn CueemeOut Cuemeer Final Post Prod      Location 1TalentScriptedScene # #Principle Shooting B-Roll Needed Assembledt BDDR !   FirmeNAL NAMETtlenNAL NAMEL NAMEGiveny NAMEFamilys 1E/ZIPSfxition1UNTRY)PositionOUNTRY)AddressCOUNTRY)]C!ABZBBDD/&(*>,<="    DEC 01 91 01Shot -Landmark**LECT RECORDSgress---------Cem    !P nCHS Good Takes   P nCHSTape Nameer Tape Number Take NumberLengthElement PRINTOUT      !DD/  R",220(204::"79A";""; 2D=1:F=1 <#4;a$ FD=D+1 P#5;a$ZD=60#5;12)dD=60D=1nF=F+1::d$;::Y=1100:Y x13402  CATCH PASCAL TEXT FILES 202 :F*=08:"78C";"SORRY BUT MENU.MAKER CAN'T R".D1/MENU.MAKER",220 d$="" A$="PRINTING "+B$(I),16,B)=01:=0::"80C";A$;:#3,B$(I),16,B)Z=1#3;b$:"78A";b$Z=Z+1:Z=18:1290 1260 #4,B$(I),16,B)#5,".PRINTER"+ž#4#5;12):::".D1/MENU.MAKE30C$="N"C$="n"1160;:=23:=0::"79C";"PRESS ANY KEY TO HALT LISTING": $1020.202 8::Z=1B::=23:=0::"79C";"WOULD YOU LIKE A PRINTED COPY?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"1170*C$="N"C$="n"79C";"PRESS ANY KEY TO HALT LISTING"::202 1020#2,B$(I),16,B)ž#242:::1160Z=1#2;A$:"78A";A$Z=Z+1:Z>1842:::Z=1980*:=23:=0::"79C";"CONTINUE...?":1C$:C$<>"Y"C$<>"y"C$<>"N"C$<>"n"10 MENU.MAKER TEXT MODULESEG=0"MENU.MAKER"890&*X=11000: TEXT SLOW-DOWN LOOP ,X.1,180,22:2,280,21:2,2380,23:z:A$="LISTING "+B$(I),16,B)$=01:=0::"80C";A$;::12)>=23:=0::"a$,1)="/"5060:s=s-1 5030=a$240 MENU.MAKER 6.2 * Thanks to C.M.Davidson for his help!        Contacty 1 TelephoneLocationCityRentDate Available DescriptionEAD PASCAL TEXT FILES."04=10:"78C";"ANY KEY RETURNS TO THE MENU."!>G$:::".D1/MENU.MAKER",320RoladexryABEL,Jg .Jg))))))))))))))))))  !!!!!!!!!!!!!!!!!!P CVS !!!!!!!!!!P nCVS DirectoryABELQ?Q,NqH))))))))))  P CVS...e Changed?Locationnged?Up Dateanged?Listateanged? ADDRESS LABEL3b!Ag)))))))))))))))))))))  !!!!!!!!!!!!!!!!!!!!!AddressNECityeryNEStpntryneLISTINGZipntryneLISTINGCome TelephoneNG Home Phoneephone Office PhonetingSpouseen ListingChildrenCategoryInfoing List?....ing List?USA89D20USA89D20  !!!!!!!!!!!!!!!!!!!!!!! P nCVS HabamergeABEL-%A))))))))))))))))))))))) P nCVS Phone NumberL-De)))))))))))))))))))))))))))!!!!!!!!!!!!!!!!!!!!!!!!!!!RoladexryABEL,Jg .Jg))))))))))))))))))  !!!!!!!!!!!!!!!!!!P CVS            Description Action DateContactne TelephoneRePriorityNoteA)BBDDR !@))))))))))))))      Contract #UMBERRExpiration DateR Telephone #UMBER Coverage Fee Item Covered Brand NameERModel #UMBERRERSerial #UMBERERVendorCT NUMBERTermsACT NUMBER-ONTRACT NUMBERR U!DDR      P nCVS Phone NumberL-De)))))))))))))))))))))))))))!!!!!!!!!!!!!!!!!!!!!!!!!!!           Short List Detailed.]}))))))))))))))))))))))))))))!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 CVS June 25, 1988AND BEYONDD)TIME.CALCv1{ C,VIDEO.SCRIPTv0} C*VT.PGM.LOGv0 C+ROLADEX.A.B 1$~$C)BILL.CALC s C           !P nCHSVideoory 01Audioory 01Script/  :DD/) U nCVSJune 25, 1988AND BEYONDnt 1 lines Detailed Listtailed @{)))))))))))))))))))))))))))!!!!!!!!!!!!!!!!!!!!!!!!!!!88F258RECORDSll pri-CDDR      LLLLL     Good Takes   P nCHSTape Nameer Tape Number Take NumberLengthElement PRINTOUT      ! USA91 USA91  !!!!!!!!!!!!!!!!!!!!!!! P nCVS HabamergeABEL-%A))))))))))))))))))))))) P nCHS ape Nameer ape Number ake NumberLengthElement Listingkes    !INtegory 1OUTID Cue Description uality TakeIn CueemeOut Cuemeer    !P nCHS**LECT RECORDSgress---------CemN@$@ $@!: --!:!-!- N@!:d2N@ --!:!-!- N@!:2N@$@2N@$@ N@*2N@$@ N@*N@$@ $@!:N@$@ $@!: --!:!-!- N@!:2N@$@ N@!:2N@$@2N@$@ N@*N@$@ N@*N@$@ $@!: --!:!-!-InOutSegment Sec OnlySeg SecSec SegSec Seg{ !:  --!:!-!- N@!:2N@$@2 DescriptionINOUTSe!g!m!ent time Total Sec Total Sec Total Sec Segment Tenth of Ten Col# One Col#=========================!=!=!=!===!=!=!=!===!=!=!=!=!= CM1NINIP nS Amount Owed $Yearly Interest Rate 5Monthly Interest Rate(@+Interest Charged CA1NKNKP nS DEC 01 87 01Shot -Landmark$@2N@$@ N@*N@$@ $@!: --!:!-!- N@!:d@2N@$@2N@$@  --!:!-!- N@!:2N@$@2N@$@ N@*N@$@ N@*N@$@ $@!:$@ $@!: --!:!-!- N@!:2N@$@2 N@!:2N@$@2N@$@ N@*N@$@ N@*N@$@ $@!: --!:!-!- $@!: --!:!-!- N@!:2N@$@2N@!:2N@$@2N@$@ N@*N@$@ N@*N@$@ $@ !: --!:!-!- N@$@ !: --!:!-!- N@!:2N@$@2N@$@2N@$@2N@$@ N@*N@$@ N@*N@$@ $@ !: --!:!-!- N@!:!: --!:!-!- N@!:2N@$@2N@$@N@$@2N@$@ N@*N@$@ $@ N@*N@$@ $@ !: --!:!-!- N@!:2N@$@ $@!: --!:!-!- N@!:2N@$@2N@$@ N@*N@$@ $@Detailed Report) ) ))) )) )))))))))))    !!TotallatedG+ITaxculatedG*HChargeatedC*FDetailed Listing$     ! P nCHSTaxculatedH*IChargeated(D*G)  ! P nCHSTotallatedH+JatedC*F Screen Calcls    P nCHSTotallatedG+ITaxculatedG*HChargepe T FilledateType T Filledate T Filledate T FilledateInvoiceO     !Rate DefinitionSales Tax Raten Invoice # RatenProject # Raten*ransaction TypeTransaction TypeTermsid DateType T Paid DateType T FilledateType T FilledateType T FilledateType T FilledateTyClientry 1 Client IDDateityneQuanityfinitionUnit Definition DescriptiontionRate Definition]C!ABZB!DDR    LL L LLL LLL  L   P nCVS 88$.045 91$.045the problem of compatibility with the newer systems. } } ______________| |___/\/\/\/\___| 4.7k synch o____________________________________________________o synch { ed. Note: for the modern RGB standards, this circuit seems to be superior to the Apple /// example. It also solves | xRGB8 o______________________/\/\/\/\__________| | | |__/\/\/\/\___/\/\/\/\__| | | 4.7k 1k | | 2.2k | |___/\/\/\/\_________________________________________>___________o g |_/\/\/\/\___| | | 6.8k | | | | 2.2k | /\/\/\___| | 15k | transistor | 2.2k | inputs xRGB4 o___/\/\/\/\___ROLLCT RECORDSn #1-------------2020 SORT: 1. ELEMENT 2. INT/EXT 3. LOCATION 4. TYPE xType Index 0     !U nCHS B-ROLL RECORDSg Studiosinessers  !U nCHS SORT: 1. ELEMENT 2. INT/EXT 3. LOCATION 4. TYPEHOST,T RECORDS----------ptionis B-Roll List  O P nCHS Host Interact(   !CHR$(1): REM Activate the Rat ("passive" mode) 60 REM Get the current X & Y coordinates and the button status 70 INPUT #1; hor, ver, butn: REM any appropriate variable type(s) are ok 80 PRINT hor, ver, butn 90 GOTO 70 100 CLOSE#1 The various Contrn't have a decent keypress-flag operation). 10 REM This short program will print the mouse position and button status 12 REM until a key is pressed. 20 ON KBD GOTO 100 30 HOME 40 OPEN #1,".RAT": REM Open the driver as any other device 50 PRINT #1; ing 4= Released Now - Released at last reading However, the Rat driver doesn't read the keyboard as on the 2 so the status will always be a positive number. On the Apple 2, a negative status value means that a key has been pressed (but AppleSoft doesm 0-1023. The button status returns a value from 1-4 depending upon the current and last read button position (pressed or released): 1= Pressed Now - Pressed at last reading 2= Pressed Now - Released at last reading 3= Released Now - Pressed at last read hex.). Optionally deactivate the Mouse: 40 PRINT #1;CHR$(0): REM mainly useful if you're using interrupts and want to suspend them temporarily. End it by closing the driver: 50 CLOSE #1 The X and Y coordinates will default to a range of froouse card. Read the Mouse position and status values: 30 INPUT #1; horizontal, vertical, status: REM integer, real, or string --> If an attempt is made to INPUT before activating the card, the .Rat driver will laugh at you by generating error #50 (32ard, respectively. Using the Rat Driver: In BASIC, the Rat driver can be used much as it is on the Apple 2 series. The driver is first opened: 10 OPEN #1,".RAT" The Mouse card is activated: 20 PRINT #1;CHR$(1) : REM initialize and activate the Me and correct as I have been able to determine (but who's perfect?). Finally, for the sake of clarity, any references to "Rat" will refer to the driver and it's routines. The terms "Mouse" and "Mouse card" will refer to the actual Mouse and controller could be considered "ratty", but that's another matter. All information regarding the mouse card PIA usage and 6805/6502 communi- cations is based on disassembly of both the AppleMouse card firmware and the mouse controller 6805 firmware. It's as accurat  Computer, Inc., of course). The term "Rat" is used here to differentiate between this driver and any other mouse drivers that you might use (I believe one is available with the DrawOn /// package, but I've never seen it). Actually, much of the code c Apple /// Rat Driver Documentation .Rat Device Driver Version 1.1 - 11/85 - rls Ravings: This driver is designed to provide an interface to the AppleMouse // mouse subsystem (made, owned, copyrighted, patented, etc. by Appleol and Status calls are available with "REQUEST.INV". The following example invokes Status call #14 to display silicon graffiti: 1 REM Reading from the 6805 5 ReadByte=14:drvr$=".RAT" 10 PRINT CHR$(21);CHR$(15);:REM set auto line-feed 15 INVOKE"request.inv":OPEN#1,drvr$ 20 HOME:PRINT"The following message is stored in the AppleMouse 6805:" 25 FOR kt=1815 TO 1916: REM addresses within 6805 ROM 30 x$=CHR$(kt-INT(kt/256)*256)+CHR$(INT(kt/256)) 35 PERFORM status(%ReadByte,@x$)drvr$ 40 eration Mode (1 byte 0-$0F) ERRORS: $31 / 49 dec. (Invalid Rat Parameter). 5: NOT USED 6: CLEAR Mouse card and .Rat driver X & Y position variables to 0. Doesn't affect button/interrupt status. This is normally performed 1= Mouse card WILL generate a timer interrupt Example: Mode $0B (11) = card is active with Timer and Mouse movement interrupts enabled. Note: Timer interrupts are normally every 60th of a second (approx.) PARAMETERS: Opnt WILL generate an interrupt Bit 2: 0= Pressing the Mouse button will NOT generate an interrupt. 1= Pressing the Mouse button WILL generate an interrupt Bit 3: 0= Mouse card will NOT generate a timer interrupt Mouse Operation Mode. Sets Mouse card operation by the following bit values: Bit 0: 0= Mouse card is off 1= Mouse card is active Bit 1: 0= Mouse movement will NOT generate an interrupt 1= Mouse moveme NewLine flag and set NewLine character. See Standard Device Driver Man. for details. PARAMETERS: NewLine Flag (1 byte, 0=FALSE, $80=TRUE) NewLine Character (1 byte) ERRORS: None 3: NOT USED 4: SETeter list (1 byte) Parameter list (currently 46 bytes) ERRORS: # $31 / 49 dec. (Invalid parameter list if length doesn't equal correct size of list) 2: Set NewLine Character. Sets/clearsored to their default startup values. PARAMETERS: None. ERRORS: None 1: Set Control Parameters. Just restores the driver variable/flag list that has been saved previously by Status Call 1. PARAMETERS: Length of paramdescribed below. Note that any call to a non-existing Control or Status option will generate error # $21 (31 decimal). CONTROL: ======== Code #: Description 0: Reset. Deactivates the Mouse card. All Mouse and driver parameters are restReadMouse Status Call 5 ClearMouse Control Call 6 PosMouse Control Call 7 ClampMouse Control Call 8 HomeMouse Control Call 9 InitMouse Device Open is functional equivalent The .Rat driver control and status calls are n example. Control & Status Calls: The following table gives the published AppleMouse // firmware routines with their coresponding .Rat driver device calls: SetMouse: Control Call 4 ServeMouse Interrupt handler - See info on interrupts. ,z%:REM normal input status isn't used 80 PRINT x%,y%,s%:GOTO 50 100 CLOSE#1 For Pascal Users (myself included) I have provided a simple UNIT called, strangely enough, "RatStuff". This is included in a seperate file, along with documentation and ae the Mouse 30 c=13:x$=CHR$(60):PERFORM control(%c,@x$)d$:REM 1 interrupt/second 40 c=4:x$=CHR$(9):PERFORM control(%c,@x$)d$:REM activate timer interrupt 50 c=3:PERFORM status(%c,@x$)d$:REM read Status byte 60 s%=ASC(LEFT$(x$,1)) 70 INPUT#1;x%,y%nts the position and alternate Status (Status call #3) values. Watch close and you'll notice bit 3 (timer interrupt flag) of the status value alternate: 1 ON KBD GOTO 100 5 d$=".RAT" 10 INVOKE"request.inv":OPEN#1,d$ 20 PRINT#1;CHR$(1):REM activat PRINT CHR$(ASC(MID$(x$,3,1))-128*(ASC(MID$(x$,3,1))>127)); 45 NEXT 50 PRINT CHR$(21);CHR$(13);:REM restore normal video This is a variation on the first example which sets the Mouse card to generate a timer interrupt once per second and then pri after Setting operation mode but can be used anytime you wish to clear the position back to 0/0. PARAMETERS: None ERRORS: None 7: POSITION Mouse card X & Y position variables to values passed in control list. Handy for setting the coords to any desired setting. PARAMETERS: X coordinate (2 byte integer - low/high) Y coordinate (2 byte integer - low/high) ERRORS: None 8: CLAMP Mouse card coordinate limits. This just sets ion 0: NOT USED 1: Return Control Parameters. Saves the driver variable/flag list into a caller-supplied variable. RETURNS: Length of parameter list (1 byte) Parameter list (currently 46 bytes) 2: Retuing" around the 6805 at this time. PARAMETERS: 6805 address (2 byte integer low/high) data (1 byte) ERRORS: None STATUS: ======= None of the valid Status options will generate an error. Code #: Descript control option 12). Also, the driver will reset this back to 1 when the .Rat device is opened or reset (control option 0). PARAMETERS: Interrupt period (1 byte) ERRORS: None 14: Write a byte to the 6805. Mostly for "hackue from 0 to 255 (0 effectively equals 256). An example might be to trigger a "Mouse Timer Event" every 2 seconds by setting the timer period to 120 (along with setting up the actual event handler and abling the event with .Rat t Mouse card timer interrupt period. The Mouse timer interrupt (if activated) normally occurs every 60th second (approximate on the ///, at present). The default "period" is 1 (for 1/60th second) but can be altered to any 1 byte val ERRORS: None 11: Set "Mouse Movement Event" parameters. Same as above but triggered by movement of the Mouse. 12: Set "Mouse Timer Event" parameters. Same as (10) and (11) but triggered by Mouse's onboard timer. 13: Sey (1 byte) Event ID (1 byte) Event handler address (3 bytes: low addr. high addr. X-byte) ERRORS: None 10: Set "Mouse Button Event" parameters. The .Rat driver allows the pressing of the Mouse button to trigger a SOS event. Details follow later. PARAMETERS: Standard Event parameter list: Priorithe operation mode or after changing clamping values. This differs from CLEAR in that the actual coordinates are determined by the X & Y CLAMPing minimums (which may any positive or negative integer). PARAMETERS: None " - ") Y maximum (" " " - ") ERRORS: None 9: HOME Mouse card. Sets the Mouse card internal coordinate position values to their minimum values (Normally 0). This call would normally be used after setting t maximum. The default values are restored when the .Rat driver is opened and when reset (control option 0). PARAMETERS: X minimum (2 byte integer - low/high) X maximum (" " " - ") Y minimum (" "e useful for tailoring the Mouse output to the needs of a particular application, say to reduce some range checking or to simplify a position calculation. Note: The default clamping values for X & Y are 0 minimum and 1023 solution": Each digit represents about .5 millimeter of movement of the Mouse, although I get about 95 to the inch on my ///. A dance floor and a long extension cord would allow full use of the Mouse's range. Actually, this is morthe minimum and maximum limits of the position values passed from the Mouse card. Normal default clamping is from 0 to 1023. The minimum value is -32768 and the maximum value is +32767. This has NO affect on the Mouse's "rern current NewLine flag and character. RETURNS: NewLine Flag (1 byte - $80 if NewLine char is used 0 if not used) NewLine Character (1 byte - ASCII value of current NL char) 3: Return and clear the current Mouse status/interrupt byte. It's only function is to poll the "interrupt" flags. In this way, a program can check the status to determine if 1, or more, of the 3 Mouse card interrupts has occurred without us Interrupts, Events, and the .Rat driver: Simply put, I left it up to the discretion of anyone using this driver to decide how, when, and if they wish to use the Mouse card interrupts. If a Mouse card interrupt is enabled, the .Rat driver updates inly return the interrupt flags (bits 1-3) which will be set to 1 only if an interrupt has occurred since the last reading of the B/I status. Reading the B/I with Status call 5 will return ALL the used bits with current data relative to the last reading. d Timer Interrupt has occurred (if enabled) 2: Mouse Button Pressed Interrupt has occurred (if enabled) 1: Mouse Movement Interrupt has occurred (if enabled) 0: Not used Again, reading the B/I with Status call 3 will oe Button is currently pressed 6: Mouse Button was pressed at last reading 5: X or Y coordinates have changed (Mouse moved) since last reading (Status Call 5 or SOSRead) 4: Not used 3: Mouse caread from 6805 is placed in 3rd byte of status list. .Rat driver Status Byte Description: The .Rat driver uses the Button/Interrupt Status Byte format as described in the AppleMouse // User's Manual: Bit 7: Mousinteger format (low/high). On return, the 3rd byte of the status list will contain the value read: PARAMETER: 6805 address to read (2 byte integer - low/high) filler byte (to receive value read) RETURNS: Value rl 14, this is just a tool for the curious to play with. This is the only Status request that requires a parameter to the call. The status list must be 3 bytes with the first 2 bytes containing the address to read in 2 byte Returns Mouse Timer Event parameter table. RETURNS: Same as (10) & (11) 13: Return Mouse Timer Interrupt Period. See Control 13 for details. RETURNS: Interrupt period (1 byte) 14: Read a byte from the 6805. As with Control caller address (3 bytes: low addr. high addr. X-byte) 11: Return Mouse Movement Event parameter table. RETURNS: Same as (10) 12: " " - ") 9: NOT USED 10: Return current Mouse Button Event parameter table. RETURNS: Standard Event parameter list: Priority (1 byte) Event ID (1 byte) Event handping limits. Lets you check what the .Rat driver and Mouse card are currently set at. RETURNS: X minimum (2 byte integer - low/high) X maximum (" " " - ") Y minimum (" " " - ") Y maximum ("est info. RETURNS: X coordinate (2 byte integer - low/high) Y coordinate (2 byte integer - low/high) B/I status (1 byte - bits 1-7 are used) 6: NOT USED 7: NOT USED 8: Return current X & Y clamperation mode. RETURNS: Operation Mode (1 byte) 5: READ and return current Mouse X & Y coordinates and Button/interrupt status. Clears B/I status on completion. This is the place to come for assembly programs to get the lating events and the required event handler. B/I status byte is cleared on completion. RETURNS: MouseCard interrupt status (1 byte, bits 1-3 are used- see Status Byte Description) 4: Return current Mouse card ots' status byte by setting an appropriate flag bit when the interrupt occurs. The status byte can then be polled by a program with Status Call 3 to see if something was triggered since the last Status Call 3 (or Read with Status Call 5). The .Rat driver can also trigger Events with the SOS Event mechanism. This requires that an Event Handler routine be setup to handle the appropriate event. Mouse card interrupts occur at a maximum of 60 times per second and with 3 seperate events enabled, there can tmer to synchronize interrupts to the Apple 2 series VBL cycle. On the Apple ///, these interrupts are NOT synchronized because of a slight timing difference on pin 40 (C1M) which sets the 6805's operating clock speed. 6520 PIA Data Register Usage: REGI and the Apple's buss, serving both data and "handshaking" functions. The PAL acts as anybody's guess (although it does intercede between the Apple's C1M (pin 40) timing signal and the 6805 clock input). NOTE: The Mouse card 6805 uses it's onboard tioded and wired as 8 256 byte banks), a custom PAL (Programmed Array Logic), and a 6520 Peripheral Interface Adaptor (PIA). The PROM contains the Apple 2 series controlling program and sub-routines. The 6520 acts as a communication port between the 6805cle. To communicate with the Apple, the Mouse card 6805 responds to 14 1-byte commands which are used to start/stop the Mouse subsystem, set/change operation parameters, and to pass Mouse info to the Apple. Also on the Mouse card is a 2k PROM/EPROM (cnals from the Mouse into useable information: Relative Mouse position and whether the button is pressed or not. The 6805 can, optionally, generate interrupts which are (on the Apple 2 series) synchronized to the system's Vertical BLanking video timing cyPROM 68705 version, while later versions use mask-programmed 6805s (that's what the jumper and cut traces on the card are for). The basic function of the 6805 is to constantly monitor the Mouse and perform the "dirty work" of interpretting the raw sig series. Although specifications for the series varies, I believe the Mouse card uses the 6805P4 which would mean that onboard this MCU is 112 bytes of RAM, 1100 bytes of ROM, an 8-bit timer, and 20 bi-directional I/Olines. Early Mouse cards used an Ecurrent and valid info to work with. Minor Technical Details: This section gives just a little background for anyone interested in the Mouse card hardware. The Mouse subsystem incorporates it's own microcomputer, a 28-pin version of the Motorola 6805ing to the particular cause of the interrupt. Any option that returns this value to the calling program (Status Calls 3 & 5, DeviceRead) clears the B/I Status Byte. This is to ensure that any program reading the Interrupt flags (bits 1-3) will have only 3) from within the program and checking for bit 2=0. Also, Status Call 5 can be used with the option of also checking bits 7 & 6. Final note on interrupts: When an interrupt occurs, the .Rat driver sets the appropriate bit in the B/I Status Byte relat interrupts to the system. Sadly, the Mouse card can not provide an interrupt when the Mouse Button is released. It would be nice to have a simple "Button released" event but that can be crudely emulated by polling the Interrupt Status byte (Status Callrupts. This means you can't use the .Rat driver to trigger a Timer Event once every 2 seconds and still trigger Movement or Button Events as soon as they occur. In a similar vein, as long as the Button is held down, it will generate a constant stream ofy the way, ALL Mouse card interrupts are tied to the Mouse Timer Interrupt period which normally is every 60th second. If you change this to another value with Control Call 13, you will also affect the frequency of Button Press and/or Mouse Movement interheoretically be up to 180 events triggered every second! To avoid filling up the event "queue", the .Rat driver deactivates an event after triggering. The event handler then should reactivate the next event with the appropriate Control Call (10-12). BSTER A: PA0-PA7= Byte data transfers between Mouse sub-system and Apple REGISTER B: PB0= INPUT (Synch flag generated by 6805. Used to synch Mouse to Apple ][ PB1-PB3 are tied to firmware address lines. They are used to select the desired 256 byte ROM bank (0-7) on the Mouse firmware for Apple 2 operation. PB1= OUTPUT (ROM bank slct bit 0) PB2= OUTPUT (ROM bank slct bit 1) PB3= OUTPUT (ROM bank slct bit 2) PB4-PB7 are handshaking lines for 6502/6805 communications: PB4= OUTPUT (6502 ready to rcve f#27Padkx| ")-36<A]elov{"*14LTX[`fmpux|!)> )`H 0) h )ߙ` )  H  0)h` BEI]akuwy{}  t`Ùo ca o q p r  t`x ] c  @g K t)(` `tH ht  `xh  (`v `v `  `i5j0 Iiu Iimu    ` `]j`g`k`o` j HH`L +8_s ` c(p  t`sÍ\DȱIȱA ȱGs`xÍh0  { (`    {(`Íi0 `Íj`Íg`Ùk c` k m l n  [`[sKbG`xw(`w c(     tw` jȑȥh Ȱ` j%!Щ@ c   t` t0 ( j HH`! (s ``\`h`i`DL8H\0`(d  $,($  ,xL.MOUSE hCopyright Apple Computer, Inc. 1983G vHuH` (,[`# (!Ndd,[$ (EF % ([] {0 `,[] {EF0,>!SHOLES 1!1!2@23#3#4$4$5%5%6^67&7&8*8*9(9(0)0)-_-=+=+\|QWERTYUI OP[{]}`~`~ASDFGHJ K L ;:;:'"'"ZXCVBNM ,<,<.>.>/?/?d0hp00000>" <"<"""<< <"""<"><$""< """"  "" 6***""""""""""<""< :< $"""2,"""""**6"""""< >>8  8>> ""*:<"">""""""""""""">>><2"<""">""" ""  ">"6**"""""&*2""""""""""""*,"" "" ">""""""""""""""**6"""""""> >>> 7  3  5  >>< (&20 *, **>> "2*&" " >>  ">> "8""> """"""< SOS DRVR"CHARSET )((8*,;((*,((+)((9/(p((>3  =9 :9 .(+( 8#8# %3(8 ((,+)(%.4$)?((,(103 lag) PB5= OUTPUT (6502 ready to xmit flag) PB6= INPUT (6805 ready to xmit flag) PB7= INPUT (6805 ready to rcve flag)