# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # emkatic # emkatic/Makefile # emkatic/distinfo # emkatic/pkg-message # emkatic/pkg-plist # emkatic/pkg-descr # emkatic/files # emkatic/files/patch-beeper.pas # emkatic/files/patch-service.lfm # emkatic/files/patch-portaudio.pas # echo c - emkatic mkdir -p emkatic > /dev/null 2>&1 echo x - emkatic/Makefile sed 's/^X//' >emkatic/Makefile << '345b8289ed7687d48b8b98f0416969fe' X# Created by: Andrey Fesenko X# $FreeBSD$ X XPORTNAME= emkatic XPORTVERSION= 0.15 XCATEGORIES= russian emulators XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= ${PORTNAME}/eMKatic%20Source XPKGNAMEPREFIX= ru- XDISTNAME= ${PORTNAME}-${PORTVERSION}-src X XMAINTAINER= andrey@bsdnir.info XCOMMENT= Novosibirsk RPN programmable calculators Elektronika graphics emulator X XLICENSE= GPLv3 X XBUILD_DEPENDS= lazbuild:${PORTSDIR}/editors/lazarus \ X fpcres:${PORTSDIR}/lang/fpc-utils X XUSE_FPC= yes X XPROJECT_FILE= emkatic.lpi XLAZARUS_VER= 1.2.4 XLAZBUILD_CMD= ${LOCALBASE}/bin/lazbuild -d --pcp=${WRKSRC}/tmppcp XLAZARUS_DIR= ${LOCALBASE}/share/lazarus-${LAZARUS_VER} XBUILD_MODE= SrcDist X XOPTIONS_DEFINE= PORTAUDIO XOPTIONS_DEFAULT= PORTAUDIO XPORTAUDIO_DESC= PortAudio library support X X.include X X.if ${PORT_OPTIONS:MPORTAUDIO} XRUN_DEPENDS= portaudio2>0:${PORTSDIR}/audio/portaudio2 XAUDIO= "portaudio2" XPORTAUDIOLIB= portaudio2/libportaudio.so:${PORTSDIR}/audio/portaudio2 X.endif X Xdo-build: X @cd ${WRKSRC} && \ X ${LAZBUILD_CMD} --bm="${BUILD_MODE}" --lazarusdir=${LAZARUS_DIR} ${PROJECT_FILE} X Xdo-install: X @cd ${WRKSRC} && \ X ${INSTALL_PROGRAM} emkatic ${STAGEDIR}${PREFIX}/bin X Xpost-install: X @${CAT} ${PKGMESSAGE} X X.include 345b8289ed7687d48b8b98f0416969fe echo x - emkatic/distinfo sed 's/^X//' >emkatic/distinfo << 'bffb16cf279fe25cd8b5854d089ab460' XSHA256 (emkatic-0.15-src.tar.gz) = 759e28e7f8c3557c46a4ef80f11b8a0a53a9ec3d7f732a542fddf63c22e6fd25 XSIZE (emkatic-0.15-src.tar.gz) = 378440 bffb16cf279fe25cd8b5854d089ab460 echo x - emkatic/pkg-message sed 's/^X//' >emkatic/pkg-message << 'af0346416d07bfea9431264e3f8353bc' XSpeaker sound Support: X====================== X XFor support speaker sound four user needs to be in the operator group and needs read and write permissions to the /dev/speaker device. X XLoad kernel modul: X X# kldload speaker X XAdd a user to a group operator's: X X% pw groupmod operator -m jerry X XUncomment the following lines in the file /etc/devfs.rules (create if it doesn't exist): X X# Allow members of group operator to cat things to the speaker Xown speaker root:operator Xperm speaker 0660 X XThen restart devfs to load the new rules: X X% /etc/rc.d/devfs restart X XSound an eternal program X======================== X XExternal program audio/beep (need load and confugured speaker, see Speaker sound) X XAt the setting of the emulator should specify: X Xbeep -p X Xbeep -p 1 0 X af0346416d07bfea9431264e3f8353bc echo x - emkatic/pkg-plist sed 's/^X//' >emkatic/pkg-plist << 'f5a0a0b0f6e5137d15cff983623b78a4' Xbin/emkatic f5a0a0b0f6e5137d15cff983623b78a4 echo x - emkatic/pkg-descr sed 's/^X//' >emkatic/pkg-descr << '94d1503cc57140e8478401392776d8cc' XAn emulator for the Elektronika MK-152, MK-152M, MK-1152, MK-161 calculators. XElektronika MK this RPN programmable calculator now manufactured in the Russia, Xsuccessor serie RPN calculators which was manufactured in the Soviet Union. X XThe emulator supports theming (skins). XPossible to save and load program, calculate data and user data. X Xsupport only russian language X XWWW: http://sourceforge.net/projects/emkatic/ 94d1503cc57140e8478401392776d8cc echo c - emkatic/files mkdir -p emkatic/files > /dev/null 2>&1 echo x - emkatic/files/patch-beeper.pas sed 's/^X//' >emkatic/files/patch-beeper.pas << '3d12c19e29d687cfd12f44ee517766f1' X--- beeper.pas 2014-10-12 10:54:47.000000000 +0400 X+++ beeper.pas.patch.unix 2014-10-19 01:06:03.409613451 +0400 X@@ -20,7 +20,9 @@ X X unit Beeper; X X-{$mode objfpc}{$H+} {$DEFINE PCM} X+{$mode objfpc}{$H+} X+ X+{$IFOPT R-} {$DEFINE PCM} {$ENDIF} X X interface X X@@ -29,17 +31,19 @@ X {$IFDEF PCM} ctypes, Math, PortAudio, {$ENDIF} Globe; X X type X- TBeepWay = (bwNone,bwExternalUtil,bwUnixKIOCSOUND,bwALSA, X- bwWinIOCTL_BEEP_SET,bwWinBeepInThread,bwWinWaveOut,bwPCM); X+ TBeepWay = (bwNone,bwExternalUtil,bwUnixKIOCSOUND,bwWinIOCTL_BEEP_SET, X+ bwWinBeepInThread,bwPCM); X X var X BeepWay:TBeepWay=bwNone; X II2BeepWay:array[0..integer(high(TBeepWay))] of TBeepWay; X II2BeepPage:array[0..integer(high(TBeepWay))] of integer; X+ II2BeepId:array[0..integer(high(TBeepWay))] of string; X X procedure InitBeeper(Way:TBeepWay); X procedure FinBeeper; X procedure InitBeepWayList; X+function BeepWayIndex(const Id:string):integer; X procedure Sound(Hz:integer); X procedure NoSound(ByTime:boolean=false); X X@@ -68,9 +72,10 @@ X {$ENDIF} X X var X- Beeping:boolean=false; X ExtFreqPar,ExtDurPar:integer; X+ ExtDurUnits:(eduCenti,eduMilli); X ExtBeforeFreq,ExtAfterFreq,ExtBeforeDur,ExtAfterDur:string; X+ Beeping:boolean=false; X {$IFDEF Win32} hBeep:cardinal; OwnBeepDevName:boolean; {$ENDIF} X {$IFDEF PCM} X pcmStream:PPaStream; X@@ -99,27 +104,28 @@ X end; X {$ENDIF} X X-procedure AddWay(Way:TBeepWay; const Title,PageName:string); X+procedure AddWay(Way:TBeepWay; const Id,Title,PageName:string); X var i,w:integer; X begin X- w:=ServiceForm.BeepWayCombo.Items.Add(Title); II2BeepWay[w]:=Way; X+ w:=ServiceForm.BeepWayCombo.Items.Add(Title); X+ II2BeepWay[w]:=Way; II2BeepId[w]:=Id; X with ServiceForm.BeepParPages do for i:=0 to PageCount-1 do X if Page[i].Name=PageName then begin II2BeepPage[w]:=i; break end; X end; X X procedure InitBeepWayList; X begin X- AddWay(bwNone,'Без звука','BeepParNonePage'); X- AddWay(bwExternalUtil,'Внешняя программа','BeepParExtPage'); X+ AddWay(bwNone,'none','Без звука','BeepParNonePage'); X+ AddWay(bwExternalUtil,'util','Внешняя программа','BeepParExtPage'); X {$IFDEF HaveKIOCSOUND} X- AddWay(bwUnixKIOCSOUND,'KIOCSOUND','BeepParKIOCSoundPage'); X+ AddWay(bwUnixKIOCSOUND,'kioc','KIOCSOUND','BeepParKIOCSoundPage'); X {$ENDIF} X {$IFDEF Win32} X- AddWay(bwWinIOCTL_BEEP_SET,'IOCTL_BEEP_SET (Рекомендуется)','BeepParNonePage'); X- AddWay(bwWinBeepInThread,'Функция Beep в отдельном потоке','BeepParNonePage'); X+ AddWay(bwWinIOCTL_BEEP_SET,'ioc','IOCTL_BEEP_SET (Рекомендуется)','BeepParNonePage'); X+ AddWay(bwWinBeepInThread,'beep','Функция Beep в отдельном потоке','BeepParNonePage'); X {$ENDIF} X {$IFDEF PCM} X- AddWay(bwPCM,'PCM-аудио через библиотеку PortAudio','BeepParPCMPage'); X+ AddWay(bwPCM,'pcm','PCM-аудио через библиотеку PortAudio','BeepParPCMPage'); X {$ENDIF} X end; X X@@ -138,12 +144,22 @@ X s:=ExtractWord(i,Text,[#32]); Parameters.Add(s); X j:=pos('',s); X if j>0 then begin X+ if ExtFreqPar>=0 then abort; X ExtFreqPar:=i-2; ExtBeforeFreq:=copy(s,1,j-1); X ExtAfterFreq:=copy(s,j+4,length(s)-j-3); X end; X+ j:=pos('',s); X+ if j>0 then begin X+ if ExtDurPar>=0 then abort; X+ ExtDurUnits:=eduCenti; ExtDurPar:=i-2; X+ ExtBeforeDur:=copy(s,1,j-1); X+ ExtAfterDur:=copy(s,j+4,length(s)-j-3); X+ end; X j:=pos('',s); X if j>0 then begin X- ExtDurPar:=i-2; ExtBeforeDur:=copy(s,1,j-1); X+ if ExtDurPar>=0 then abort; X+ ExtDurUnits:=eduMilli; ExtDurPar:=i-2; X+ ExtBeforeDur:=copy(s,1,j-1); X ExtAfterDur:=copy(s,j+4,length(s)-j-3); X end; X end; X@@ -224,14 +240,28 @@ X end; X {$ENDIF} X X+function BeepWayIndex(const Id:string):integer; X+ var i:integer; X+begin X+ for i:=0 to ServiceForm.BeepWayCombo.Items.Count-1 do X+ if II2BeepId[i]=Id then exit(i); X+ result:=0; X+end; X+ X procedure Sound(Hz:integer); X+ var i:integer; X begin X try case BeepWay of X bwExternalUtil: with MainForm.SoundProcess do begin X if ExtFreqPar>=0 then X Parameters[ExtFreqPar]:=ExtBeforeFreq+IntToStr(Hz)+ExtAfterFreq; X- if ExtDurPar>=0 then X- Parameters[ExtDurPar]:=ExtBeforeDur+IntToStr(R9052*10)+ExtAfterDur; X+ if ExtDurPar>=0 then begin X+ case ExtDurUnits of X+ eduCenti: i:=R9052; X+ eduMilli: i:=R9052*10; X+ end; X+ Parameters[ExtDurPar]:=ExtBeforeDur+IntToStr(i)+ExtAfterDur; X+ end; X if Executable<>'' then Execute; X end; X {$IFDEF HaveKIOCSOUND} 3d12c19e29d687cfd12f44ee517766f1 echo x - emkatic/files/patch-service.lfm sed 's/^X//' >emkatic/files/patch-service.lfm << '2b3f04032fb42a86b5493bf9c2d5c08a' X--- service.lfm 2014-10-15 21:52:41.000000000 +0400 X+++ service.lfm.patch.unix 2014-10-19 11:05:13.828136662 +0400 X@@ -1,7 +1,7 @@ X object ServiceForm: TServiceForm X- Left = 1245 X+ Left = 1310 X Height = 450 X- Top = 142 X+ Top = 175 X Width = 608 X BorderIcons = [biSystemMenu] X BorderStyle = bsDialog X@@ -11,7 +11,7 @@ X Font.Height = -15 X Font.Name = 'Arial' X OnCreate = FormCreate X- LCLVersion = '1.2.4.0' X+ LCLVersion = '1.2.6.0' X object Pages: TPageControl X Left = 0 X Height = 410 X@@ -763,7 +763,7 @@ X Height = 147 X Top = 39 X Width = 584 X- PageIndex = 0 X+ PageIndex = 1 X Align = alBottom X TabOrder = 0 X TabStop = True X@@ -781,13 +781,13 @@ X EditLabel.AnchorSideRight.Side = asrBottom X EditLabel.AnchorSideBottom.Control = SoundCmdEdit X EditLabel.Left = 20 X- EditLabel.Height = 19 X- EditLabel.Top = 4 X+ EditLabel.Height = 18 X+ EditLabel.Top = 5 X EditLabel.Width = 544 X EditLabel.Caption = 'Команда генерации звука *' X EditLabel.ParentColor = False X TabOrder = 0 X- Text = 'beep -f -l ' X+ Text = 'beep -p ' X end X object NoSoundCmdEdit: TLabeledEdit X Left = 20 X@@ -800,20 +800,20 @@ X EditLabel.AnchorSideRight.Side = asrBottom X EditLabel.AnchorSideBottom.Control = NoSoundCmdEdit X EditLabel.Left = 20 X- EditLabel.Height = 19 X- EditLabel.Top = 60 X+ EditLabel.Height = 18 X+ EditLabel.Top = 61 X EditLabel.Width = 544 X EditLabel.Caption = 'Команда выключения звука' X EditLabel.ParentColor = False X TabOrder = 1 X- Text = 'beep -f 1 -l 0' X+ Text = 'beep -p 1 0' X end X object Label14: TLabel X Left = 24 X- Height = 19 X+ Height = 18 X Top = 118 X- Width = 459 X- Caption = '* — частота; — длительность (если необходимо)' X+ Width = 500 X+ Caption = '* — частота; , — длительность (если необходимо)' X ParentColor = False X end X end 2b3f04032fb42a86b5493bf9c2d5c08a echo x - emkatic/files/patch-portaudio.pas sed 's/^X//' >emkatic/files/patch-portaudio.pas << '7a9689179f2e7ee0b1b2423fae3b76a1' X--- portaudio.pas 2014-10-17 01:33:40.796719939 +0000 X+++ portaudio.pas 2014-10-17 01:33:05.003608626 +0000 X@@ -117,7 +117,7 @@ X LibName = 'libportaudio.2.dylib'; X {$LINKLIB libportaudio.2} X {$ELSEIF Defined(UNIX)} X- LibName = 'libportaudio.so'; X+ LibName = 'libportaudio.so.2'; X {$IFEND} 7a9689179f2e7ee0b1b2423fae3b76a1 exit