You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(70) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(38) |
Feb
(4) |
Mar
(11) |
Apr
(49) |
May
(81) |
Jun
(65) |
Jul
(36) |
Aug
(57) |
Sep
(63) |
Oct
(57) |
Nov
(49) |
Dec
(41) |
2006 |
Jan
(75) |
Feb
(80) |
Mar
(10) |
Apr
(13) |
May
(100) |
Jun
(100) |
Jul
(77) |
Aug
(87) |
Sep
(80) |
Oct
(124) |
Nov
(39) |
Dec
(41) |
2007 |
Jan
(20) |
Feb
(32) |
Mar
(32) |
Apr
(43) |
May
(146) |
Jun
(40) |
Jul
(49) |
Aug
(33) |
Sep
(25) |
Oct
(19) |
Nov
(11) |
Dec
(8) |
2008 |
Jan
(4) |
Feb
(11) |
Mar
(31) |
Apr
(40) |
May
(34) |
Jun
(24) |
Jul
(39) |
Aug
(104) |
Sep
(27) |
Oct
(35) |
Nov
(34) |
Dec
(97) |
2009 |
Jan
(75) |
Feb
(29) |
Mar
(45) |
Apr
(76) |
May
(121) |
Jun
(103) |
Jul
(67) |
Aug
(28) |
Sep
(22) |
Oct
(39) |
Nov
(9) |
Dec
(15) |
2010 |
Jan
(7) |
Feb
(39) |
Mar
(40) |
Apr
(57) |
May
(67) |
Jun
(69) |
Jul
(49) |
Aug
(68) |
Sep
(22) |
Oct
(7) |
Nov
(2) |
Dec
(10) |
2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(4) |
May
(6) |
Jun
(10) |
Jul
(16) |
Aug
(23) |
Sep
(9) |
Oct
|
Nov
(28) |
Dec
(3) |
2012 |
Jan
(11) |
Feb
(10) |
Mar
(1) |
Apr
|
May
(4) |
Jun
(3) |
Jul
(3) |
Aug
(4) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
2013 |
Jan
|
Feb
(7) |
Mar
(30) |
Apr
(4) |
May
(4) |
Jun
(8) |
Jul
(10) |
Aug
(4) |
Sep
|
Oct
(2) |
Nov
(24) |
Dec
(13) |
2014 |
Jan
(7) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(9) |
Jun
|
Jul
(3) |
Aug
(9) |
Sep
|
Oct
(2) |
Nov
|
Dec
(3) |
2015 |
Jan
(4) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(5) |
Sep
(1) |
Oct
(4) |
Nov
(7) |
Dec
(39) |
2016 |
Jan
(17) |
Feb
(2) |
Mar
(2) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(2) |
2017 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(2) |
2018 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jos v.d.V. <jo...@us...> - 2014-12-10 12:27:16
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14845 Modified Files: 486ASM.F 586ASMCM.f ASMMAC.F Log Message: Jos extending for SIMD Index: ASMMAC.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/ASMMAC.F,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ASMMAC.F 21 Dec 2004 00:19:07 -0000 1.1 --- ASMMAC.F 10 Dec 2014 12:27:11 -0000 1.2 *************** *** 109,111 **** macro: st(6), st(6) , ;m macro: st(7), st(7) , ;m ! --- 109,118 ---- macro: st(6), st(6) , ;m macro: st(7), st(7) , ;m ! macro: xmm0, xmm0 , ;m ! macro: xmm1, xmm1 , ;m ! macro: xmm2, xmm2 , ;m ! macro: xmm3, xmm3 , ;m ! macro: xmm4, xmm4 , ;m ! macro: xmm5, xmm5 , ;m ! macro: xmm6, xmm6 , ;m ! macro: xmm7, xmm7 , ;m Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** 586ASMCM.f 18 Nov 2011 14:19:06 -0000 1.3 --- 586ASMCM.f 10 Dec 2014 12:27:11 -0000 1.4 *************** *** 3,10 **** \ Also floating-point extensions for P6 or better gah only forth also assembler also asm-hidden definitions also assembler ! in-hidden ( cmovcc instructions ) : cmovcc-compile ( compile CMOVcc instructions ) --- 3,12 ---- \ Also floating-point extensions for P6 or better gah + only forth also assembler also asm-hidden definitions also assembler ! in-hidden in-system ! ( cmovcc instructions ) : cmovcc-compile ( compile CMOVcc instructions ) *************** *** 13,17 **** --- 15,45 ---- compile-fields ; + : xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) + $0F code-c, (xmm-compile) ; + + : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) + $66 code-c, xmm-compile ; + + : pre-xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) + $F3 code-c, xmm-compile ; + + : pre-dxmm-compil1 ( param -- | x \ param -- | x \ x \ param -- ) + $F2 code-c, $0F code-c, mmxreg generic-entry2 mmx-dir? + if 1 or + endif + xmm/mmx-prefix data-@ 2 = + if xmm-dir? + if 1 or + endif + endif + ?noimmed code-c, compile-fields + ; + + : pre-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) + $F2 code-c, xmm-compile ; + in-asm + dup-warning-off + 0x47 ' cmovcc-compile opcode cmova 0x43 ' cmovcc-compile opcode cmovae *************** *** 60,64 **** --- 88,201 ---- 0xc0df ' fmisc-compile opcode ffreep + dup-warning-on + + \ xmm instructions + $10 ' xmm-compile opcode movups + $10 ' dxmm-compile opcode movupd + $10 ' pre-xmm-compile opcode movss + dup-warning-off + $10 ' pre-dxmm-compil1 opcode movsd + dup-warning-on + $14 ' xmm-compile opcode unpcklps + $14 ' dxmm-compile opcode unpcklpd + $15 ' xmm-compile opcode unpckhps + $15 ' dxmm-compile opcode unpckhpd + + $28 ' xmm-compile opcode movaps + $28 ' dxmm-compile opcode movapd + $2A ' xmm-compile opcode cvtpi2ps + $2A ' dxmm-compile opcode cvtpi2pd + $2A ' pre-xmm-compile opcode cvtsi2ss + $2A ' pre-dxmm-compile opcode cvtsi2sd + $2C ' xmm-compile opcode cvttps2pi + $2C ' dxmm-compile opcode cvttpd2pi + $2C ' pre-xmm-compile opcode cvttss2si + $2C ' pre-dxmm-compile opcode cvttsd2si + + $2D ' xmm-compile opcode cvtps2pi + $2D ' dxmm-compile opcode cvtpd2pi + $2D ' pre-xmm-compile opcode cvtss2si + $2D ' pre-dxmm-compile opcode cvtsd2si + + $E6 ' pre-xmm-compile opcode cvtdq2pd + $E6 ' pre-dxmm-compile opcode cvtpd2dq + + $2E ' xmm-compile opcode ucomiss + $2E ' dxmm-compile opcode ucomisd + + $2F ' xmm-compile opcode comiss + $2F ' dxmm-compile opcode comisd + + $C2 ' xmm-compile opcode cmpps + $C2 ' dxmm-compile opcode cmppd + $C2 ' pre-xmm-compile opcode cmpss + $C2 ' pre-dxmm-compile opcode xcmpsd + + $C6 ' xmm-compile opcode shufps + $C6 ' dxmm-compile opcode shufpd + + $50 ' xmm-compile opcode movmskps + $50 ' dxmm-compile opcode movmskpd + + $51 ' xmm-compile opcode sqrtps + $51 ' dxmm-compile opcode sqrtpd + $51 ' pre-xmm-compile opcode sqrtss + $51 ' pre-dxmm-compile opcode sqrtsd + + $52 ' xmm-compile opcode rsqrtps + $52 ' dxmm-compile opcode rsqrtpd + $52 ' pre-xmm-compile opcode rsqrtss + $52 ' pre-dxmm-compile opcode rsqrtsd + + $53 ' xmm-compile opcode rcpps + $53 ' dxmm-compile opcode rcppd + $53 ' pre-xmm-compile opcode rcpss + $53 ' pre-dxmm-compile opcode rcpds + + $54 ' xmm-compile opcode andps + $54 ' dxmm-compile opcode andpd + $55 ' xmm-compile opcode andnps + $55 ' dxmm-compile opcode andnpd + $56 ' xmm-compile opcode orps + $56 ' dxmm-compile opcode orpd + $57 ' xmm-compile opcode xorps + $57 ' dxmm-compile opcode xorpd + + $58 ' xmm-compile opcode addps + $58 ' dxmm-compile opcode addpd + $58 ' pre-xmm-compile opcode addss + $58 ' pre-dxmm-compile opcode addsd + + $59 ' xmm-compile opcode mulps + $59 ' dxmm-compile opcode mulpd + $59 ' pre-xmm-compile opcode mulss + $59 ' pre-dxmm-compile opcode mulsd + + $5B ' dxmm-compile opcode cvttpd2dq + + $5C ' xmm-compile opcode subps + $5C ' dxmm-compile opcode subpd + $5C ' pre-xmm-compile opcode subss + $5C ' pre-dxmm-compile opcode subsd + + $5D ' xmm-compile opcode minps + $5D ' dxmm-compile opcode minpd + $5D ' pre-xmm-compile opcode minss + $5D ' pre-dxmm-compile opcode minsd + + $5E ' xmm-compile opcode divps + $5E ' dxmm-compile opcode divpd + $5E ' pre-xmm-compile opcode divss + $5E ' pre-dxmm-compile opcode divsd + + $5F ' xmm-compile opcode maxps + $5F ' dxmm-compile opcode maxpd + $5F ' pre-xmm-compile opcode maxss + $5F ' pre-dxmm-compile opcode maxsd + + in-previous only forth definitions + + \s Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** 486ASM.F 19 Apr 2011 20:30:03 -0000 1.10 --- 486ASM.F 10 Dec 2014 12:27:11 -0000 1.11 *************** *** 24,29 **** --- 24,32 ---- \ added CMOVcc, aliased Jcc LOOPcc SETcc \ simplified cell/ 8* 8/ 16*+ 16/mod + \ Jos: December 10th, 2014 Prepared for the use of MMX and XMM registers. + \ See also 586asmcm.f ( declare the vocabularies needed ) + only forth definitions ( vocabulary assembler ) also assembler definitions vocabulary asm-hidden also asm-hidden definitions also assembler *************** *** 343,346 **** --- 346,354 ---- 9 constant treg ( a test register ) 0a constant freg ( a floating point register ) + \ $0B constant offs ( offset; relative or absolute address ) \ reserved, not in use + \ $0C constant moffs ( memory offset; relative or absolute address ) \ reserved not in use + $0D constant mmxreg ( an MMX or 3D-Now! register ) + $0E constant xmmreg ( an XMM register ) + ( encode and decode register representations ) *************** *** 391,394 **** --- 399,419 ---- 32bit unknown register 6 asm-op esi 32bit unknown register 7 asm-op edi + + 32bit unknown mmxreg 0 asm-op mm0 + 32bit unknown mmxreg 1 asm-op mm1 + 32bit unknown mmxreg 2 asm-op mm2 + 32bit unknown mmxreg 3 asm-op mm3 + 32bit unknown mmxreg 4 asm-op mm4 + 32bit unknown mmxreg 5 asm-op mm5 + 32bit unknown mmxreg 6 asm-op mm6 + 32bit unknown mmxreg 7 asm-op mm7 + 32bit unknown xmmreg 0 asm-op xmm0 + 32bit unknown xmmreg 1 asm-op xmm1 + 32bit unknown xmmreg 2 asm-op xmm2 + 32bit unknown xmmreg 3 asm-op xmm3 + 32bit unknown xmmreg 4 asm-op xmm4 + 32bit unknown xmmreg 5 asm-op xmm5 + 32bit unknown xmmreg 6 asm-op xmm6 + 32bit unknown xmmreg 7 asm-op xmm7 unknown 16bit indirect 0 asm-op [bx+si] unknown 16bit indirect 1 asm-op [bx+di] *************** *** 501,504 **** --- 526,530 ---- variable s-i-b ( the working area for the s-i-b byte ) variable addmode ( addressing mode flags ) + variable xmm/mmx-prefix \ xmm (2) or mmx (1) or neither (0) regs used ) : reset-vars ( store 0 into all instruction coding variables ) *************** *** 507,511 **** 0 sp-save data-! 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! ; : reset-for-next-instr ( store a 0 into intermediate coding variables ) --- 533,537 ---- 0 sp-save data-! 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! 0 xmm/mmx-prefix data-! ; : reset-for-next-instr ( store a 0 into intermediate coding variables ) *************** *** 515,530 **** ( set/reset mode bits ) ! 1 constant immed-bit ( flag an immediate operand ) ! 2 constant direct-bit ( flag the direction ) ! 4 constant mod-r/m-bit ( flag that we've started the mod-r/m ) ! 8 constant s-i-b-bit ( flag the beginning of s-i-b creation ) ! 10 constant full-off-bit ( flag a full offset ) ! 20 constant based-bit ( flag that we've seen a base ) ! 40 constant offset-bit ( flag an offset ) ! 80 constant short-bit ( flag short ) ! 100 constant near-bit ( flag near ) ! 200 constant far-bit ( flag far ) ! 400 constant do-1op-bit ( flag we've been through do-1op once ) ! 800 constant maybe-offset-bit ( flag that maybe we've got an offset ) immed-bit direct-bit or --- 541,559 ---- ( set/reset mode bits ) ! 1 constant immed-bit ( flag an immediate operand ) ! 2 constant direct-bit ( flag the direction ) ! 4 constant mod-r/m-bit ( flag that we've started the mod-r/m ) ! 8 constant s-i-b-bit ( flag the beginning of s-i-b creation ) ! 10 constant full-off-bit ( flag a full offset ) ! 20 constant based-bit ( flag that we've seen a base ) ! 40 constant offset-bit ( flag an offset ) ! 80 constant short-bit ( flag short ) ! 100 constant near-bit ( flag near ) ! 200 constant far-bit ( flag far ) ! 400 constant do-1op-bit ( flag we've been through do-1op once ) ! 800 constant maybe-offset-bit ( flag that maybe we've got an offset ) ! 1000 constant mmx-dir-bit ( flag the direction in case of MMX register(s) ! 2000 constant xmm-dir-bit ( flag the direction in case of XMM register(s) ! immed-bit direct-bit or *************** *** 539,542 **** --- 568,573 ---- do-1op-bit or maybe-offset-bit or + mmx-dir-bit or + xmm-dir-bit or constant mode-mask ( all mode bits set ) *************** *** 574,577 **** --- 605,627 ---- ( -- ) direct-bit 0mode-bit! ; + : mmxreg,r/m ( addressing mode is mmx-register, register/memory ) + ( -- ) + mmx-dir-bit 1mode-bit! ; + : r/m,mmxreg ( addressing mode is register/memory, mmx-register ) + ( -- ) + mmx-dir-bit 0mode-bit! ; + : xmmreg,r/m ( addressing mode is xmm-register, register/memory ) + ( -- ) + xmm-dir-bit 1mode-bit! ; + : r/m,xmmreg ( addressing mode is register/memory, xmm-register ) + ( -- ) + xmm-dir-bit 0mode-bit! ; + : mmx-dir? ( is the destination an mmx-register? ) + ( -- flag ) + mmx-dir-bit mode-bit@ ; + : xmm-dir? ( is the destination an xmm-register? ) + ( -- flag ) + xmm-dir-bit mode-bit@ ; + : direction? ( is the destination a register? ) ( -- flag ) *************** *** 984,988 **** ( -- flag ) maxtype data-@ dup register > swap freg < and ; ! : special-register? ( is this a special register? ) ( -- flag ) rtype data-@ dup register > swap freg < and ; --- 1034,1038 ---- ( -- flag ) maxtype data-@ dup register > swap freg < and ; ! : special-register? ( is this a special register? MMX/XMM registers are NOT special ) ( -- flag ) rtype data-@ dup register > swap freg < and ; *************** *** 1012,1019 **** special-register? rtype data-@ sreg <> and if 8* ! else ( either a general or segment register ) c0+ then has-mod-r/m r/m,reg then mod-r/m data-! ; : do-immed ( do an immediate addressing mode operand ) ( x \ 0 -- ) --- 1062,1087 ---- special-register? rtype data-@ sreg <> and if 8* ! else ( either a general MMX/XMM, or segment register ) c0+ then has-mod-r/m r/m,reg then mod-r/m data-! ; + : do-mmxreg ( do any register addressing mode translation ) + ( reg \ type -- ) + do-1op-exed? if + r/m,mmxreg + else + mmxreg,r/m + then + do-reg + 1 xmm/mmx-prefix data-@ or xmm/mmx-prefix data-! ; + : do-xmmreg ( do any register addressing mode translation ) + ( reg \ type -- ) + do-1op-exed? if + r/m,xmmreg + else + xmmreg,r/m + then + do-reg + 2 xmm/mmx-prefix data-@ or xmm/mmx-prefix data-! ; : do-immed ( do an immediate addressing mode operand ) ( x \ 0 -- ) *************** *** 1071,1075 **** rtype data-@ ?dup if based over = index rot = or 0= ?badcombine then based rtype! do-based ! endof ( must be a register type ) do-reg dup ( so endcase has ) ( something to discard ) endcase ; : save-offset ( save the offset, if it's present ) --- 1139,1147 ---- rtype data-@ ?dup if based over = index rot = or 0= ?badcombine then based rtype! do-based ! endof mmxreg of \ added for mmx regs ! register do-mmxreg ! endof xmmreg of \ added for xmm regs ! register do-xmmreg ! endof ( must be a register type ) do-reg dup ( so endcase has ) ( something to discard ) endcase ; : save-offset ( save the offset, if it's present ) *************** *** 1715,1718 **** --- 1787,1803 ---- endcase ; + : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) + mmxreg generic-entry2 mmx-dir? + if $10 or + endif + xmm/mmx-prefix data-@ 2 = + if xmm-dir? + if $11 or + endif + endif + ?noimmed code-c, compile-fields + ; + + ( the instructions ) in-asm *************** *** 2056,2059 **** --- 2141,2145 ---- 06 ' group1-compile opcode xor + ( create code definitions ) in-hidden *************** *** 2152,2153 **** --- 2238,2240 ---- only forth definitions base ! + \s |
From: Iscla M. <isc...@or...> - 2014-10-03 07:19:14
|
To everyone able to help me. I am developping an application about bridge card game. I would like to use CardGames.dll to ease my pain but I could not find any information about this dll. Does anybody can help me ? Thanks in advance Michel ISCLA |
From: Rod O. <rod...@us...> - 2014-08-17 15:32:07
|
Update of /cvsroot/win32forth/win32forth/src/console In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17739 Modified Files: CommandWindow.f Log Message: Rod: Improved On_DblClick \ insert double-clicked word in commandline, click within half a character either side of the word Index: CommandWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/console/CommandWindow.f,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** CommandWindow.f 27 Jul 2014 10:17:18 -0000 1.33 --- CommandWindow.f 17 Aug 2014 15:32:05 -0000 1.34 *************** *** 839,851 **** ;M ! : On_DblClick ( h m w -- h m w ) \ insert double-clicked word in commandline KeysOn not ?shift or ?exit SelStartCol SelStartRow OnCommandLine ?exit ! SelStartCol SelStartRow RowAddress + ! dup SelStartCol 32 -scan 32 skip drop \ search backwards for space over dup TextZero swap - 13 scan drop \ search forwards for cr ! rot dup TextZero swap - 32 scan drop min \ search forwards for space ! over - pad place 32 pad count + ! \ add a space ! pad 1+ InsertTextOnCommandLine: self ; :M DeleteCommand: ( -- ) --- 839,856 ---- ;M ! : On_DblClick ( h m w -- h m w ) \ insert double-clicked word in commandline, click within half a character either side of the word KeysOn not ?shift or ?exit SelStartCol SelStartRow OnCommandLine ?exit ! SelStartCol SelStartRow RowAddress + \ ( -- address of character clicked ) ! dup 1- SelStartCol 32 -scan drop 1+ \ search backwards for space or beginning of line ( -- address of first char of word ) over dup TextZero swap - 13 scan drop \ search forwards for cr ! rot dup TextZero swap - 32 scan drop min \ search forwards for space ( -- address of last char of word +1 ) ! over - \ ( -- a n ) ! ?dup \ don't insert a space only ! IF ! pad place 32 pad count + ! \ replace possible cr with a space and add a null ! pad 1+ InsertTextOnCommandLine: self ! ELSE drop ! THEN ; :M DeleteCommand: ( -- ) |
From: Jos v.d.V. <jo...@us...> - 2014-08-15 13:49:06
|
Update of /cvsroot/win32forth/win32forth/Help/html In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28851 Added Files: class-MultiTaskingClass.htm Log Message: The dexfile --- NEW FILE: class-MultiTaskingClass.htm --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta name="GENERATOR" content="DexH v03" /> <title> MultiTaskingClass.f</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>MultiTaskingClass -- For clustered tasks in objects. </h1><h2>Abstract </h2><p>CPU's with multiple cores can execute a program faster than cpu's with a single core. <br /> This is done by breaking up a program in smaller pieces and than execute all pieces simultaneously. <br /> In multiTaskingClass.f this idea is supported as follows: <br /> Breaking up is possible at the definition level or at the program level by the 2 classes <b>iTask</b> and <b>wTask</b>. <br /> Then the pieces are submitted and simultaneously executed in a number of tasks. <br /> Tasks are coverted to jobs and clustered in an object for easy access. </p><p>Objects defined with <b>iTask</b> can be used as soon as ONE definition should be executed in a parallel way and the definition uses a do...loop. <br /> The method <i>Parallel:</i> divides, distributes and submits for execution the specified cfa over a number of jobs. <br /> A started job can pickup its range for the do...loop part by using the method <i>GetRange:</i>. <br /> It is possible to change the number of simultaneous jobs before they run. </p><p>Objects defined with <b>wTask</b> can be used to execute concurrently one or more different definitions. <br /> Use the method <i>Submit:</i> for executing a definition in a job. <br /> When a new job is submitted and the maximum number of jobs has been reached the following will happen at the next job: <br /> 1) The system will wait till all the jobs in one que of one thread are complete. <br /> 2) Then it will allow the submitting more jobs. <br /> </p><p>Tasks of both classes will get their parameters at the start on the stack as soon as the method <i>ToStack:</i> is used just before the job is submitted. <br /> MultiTaskingClass.f uses the <b>preemptive</b> multitasking system of windows. No need to use pause. <br /> </p><p><b>Typical passing of parameters to a Job:</b> <br /> LockJobEntry[: myTasks 10 20 30 <b>3</b> ToStack: myTasks ['] TestTask ]Submit: myTasks <br /> <b>Explanation:</b><br /> LockJobEntry[: Locks the entrypoint to protect it against overwriting.<br /> ToStack: Passes the <b>3</b> stack items to the stack of the job.<br /> ]Submit: Submits the task and unlocks the entrypoint just before it returns. </p><h2>Glossary </h2><p><b><code>code cells+@ ( a1 n1 -- n ) \ </code></b><br>Multiply n1 by the cell size and add the result to address a1 then fetch the value from that address. </p><p><b><code>code cells+! ( n a1 n1 -- ) </code></b><br>Multiply n1 by the cell size and add the result to address a1 then store the value n to that address. </p><p><b><code>: GetValueSpMainThread ( - UpMainThread ) </code></b><br>Get sp0 of the main thread. Even when a secondary thread is running. </p><p><b><code>: SetValueSpMainThread ( - ) </code></b><br>Sets the sp0 value of the main thread. This is done at the start of Forth or at the start of a turnkey </p><p><b><code>: MainThread? ( - flag ) </code></b><br>Detects if a definition is running in the main thread.<br /> MainThread? returns true when a definition runs in the main thread. </p><p><b><code>: GetThreadIndex ( - IDindex ) </code></b><br>Each thread gets an index. GetThreadIndex returns that index. GetThreadIndex in a job can be used to target a value in an array for one thread. </p><p><b><code>: #Hardware-threads ( - #Hardware-threads ) </code></b><br> Returns the number of hardware threads found in the CPU. </p><p><b><code>: SetPriority ( Prio - ) </code></b><br>Changes the priority of the thread. </p><p><b><code>: below ( -- ) </code></b><br>Lowers the priority of the thread in order to keep the main thread responsive to the mouse etc. </p><p><b><code>: #do \ Compiletime: ( <name> -- ) Runtime: ( limit start - ) </code></b><br>To construct: do i cfa loop <br /> EG: <br /> : test 10 0 #do . ; <br /> Will be compiled as: <br /> : TEST 10 0 DO I . LOOP ; <br /> </p><b>Parameters for 1 job entry in a jobblock:</b> <table><tr><th>Name: </th> <th>Use: </th> </tr> <tr><td>-- </td> <td>-- <b>Note:</b> Parameters starting wih a '>' use the &JobEntry address to get to their adress. </td> </tr> <tr><td>&JobEntry </td> <td>-- The start adress of one job entry. </td> </tr> <tr><td>>JobCFA </td> <td>-- Contains the CFA to be executed by a job. </td> </tr> <tr><td>>JobStkDepth </td> <td>-- The number of stack items for a job. </td> </tr> <tr><td>>JobStkLast </td> <td>-- A stack for a job to be executed. </td> </tr> <tr><td>>StartTic </td> <td>-- A double containing the StartTic when a job was started. </td> </tr> <tr><td>>EndTic </td> <td>-- A double containing the >EndTic when a job became complete. </td> </tr> <tr><td>>CfaDone </td> <td>-- Contains the previous Cfa of a job entry. </td> </tr> <tr><td>>StartTime </td> <td>-- A structrure containing the StartTime when a job was started. </td> </tr> <tr><td>>EndTime </td> <td>-- A structrure containing the EndTime when a job became complete. </td> </tr> <tr><td>>Schedule </td> <td>-- Reserved to hold a Schedule. </td> </tr> <tr><td>>range </td> <td>-- 2 cells to hold the start- end-index for a do...loop. used by the class iTasks. </td> </tr> <tr><td>/StkParams </td> <td>-- The maximum number of parameters to pass to a job. Default is 8. </td> </tr> <tr><td>/JobEntry </td> <td>-- The size of 1 Job entry. </td> </tr> <tr><td>MinimumSizeJobBlock </td> <td>-- Minimum size of one job entry. </td> </tr> <tr><td>#JobParms </td> <td>-- Number of parameters in one job entry. </td> </tr> <tr><td>/TimeParams </td> <td>-- Partial size of job entry to be used to erase statistics. </td> </tr> </table><p><b><code>: .Timestamp ( &entry - ) </code></b><br>Displays the time when a job was started. </p><p><b><code>: ms@TB ( time-buf -- ms ) </code></b><br>Returns the content of a timebuffer into milli-seconds on the stack. </p><p><b><code>: .ElapsedJob ( start-time-buf end-time-buf -- ) </code></b><br>Displays the time that has been elapsed betweeen 2 time buffers </p><p><b><code>0x7FFFFFFF constant MaxCountSemaphore </code></b><br>The maximum count of a Semaphore </p><h2>Semaphore class </h2><p><b><code>:Class Semaphore <Super Object </code></b><br>A semaphore act as a lock that allows multiple threads to wait in line for the resource to be free. The state of a semaphore is set to <b>signaled</b> when its count is greater than zero, and nonsignaled when its count is zero. If the current state of the semaphore is signaled, the wait function DECREASES the count by one and waits till the semphomere gets <b>signaled</b>. </p><p><b><code>:M CreateSemaphore: ( lpName lMaximumCount lInitialCount lpSemaphoreAttributes -- ) </code></b><br>Creates a semaphore.<br /> Parameters:<br /> lpSemaphoreAttributes: Pointer to security attributes can be NULL.<br /> lInitialCount: Specifies an initial count for the semaphore object. This value must be greater than or equal to zero and less than.<br /> lMaximumCount: Maximum count <br /> lpName: Pointer to a null-terminated string specifying the name of the semaphore object. Can be NULL. </p><p><b><code>:M ReleaseSemaphore: ( lpPreviousCount lReleaseCount -- PreviousCount ) </code></b><br>Increases the count of the specified semaphore. Parameters:<br /> lReleaseCount: Specifies the amount by which the semaphore object's current count is to be INCREASED. The value must be greater than zero. If the specified amount would cause the semaphore's count to exceed the maximum count that was specified when the semaphore was created, the count is not changed and the function returns FALSE.<br /> lpPreviousCount: Pointer to receive the previous count for the semaphore. Can be NULL if the previous count is not required </p><p><b><code>:M Increase: { \ lpPreviousCount -- } ( -- PreviousCount ) </code></b><br>Releases the semaphore by one. </p><p><b><code>:M DecreaseWait: ( ms -- ) </code></b><br>DECREASES the count of the semaphore by one. </p><p><b><code>: SignalObjectAndWait ( bAlertable dwMilliseconds hObjectToWaitOn hObjectToSignal -- res ) </code></b><br>Allows the caller to atomically signal an object and wait on another object. </p><p><b><code>: OpenSemaphore ( dwDesiredAccess bInheritHandle lpName -- hdnl ) </code></b><br>Returns a handle of an existing named semaphore object. </p><p><b><code>:M CloseSemaphore: </code></b><br>Closes the semaphore. </p><h2>ExclExecute class </h2><p><b><code>:Class ExclExecute <Super Object </code></b><br>To be used to execute a definition in a serial way by using LockExecute: </p><p><b><code>int Executing? </code></b><br>Is true when executing </p><p><b><code>Semaphore SemaphoreEntryPoint </code></b><br>A Semaphore used to lock or unlock an entry point. That will protect definitions that are not able to be executed simultanously It will also protect data against overwriting by another thread while a previous thread still needs that data. </p><p><b><code>:M LockExecute: ( cfa - ) </code></b><br>Locks, executes and unlocks the specified cfa. When more than 1 job try to use LockExecute: at nearly the same time of the same object the second job will be executed after the previous job is ready. </p><p><b><code>:M Ready?: ( -- Flag ) </code></b><br>Returns true when LockExecute: is ready. </p><h2>TaskPrimitives class </h2><p><b><code>:Class TaskPrimitives <Super ExclExecute </code></b><br>Contains the <b>general</b> definitions for a task object. In task.f a task in Forth is passed to a thread and when it is complete the task will be destroyed. That takes more than 1.000.000 cycles for each time a task starts. Now a task in Forth will be passed to a job. The Job will be placed in a que of a thread and then be executed. Threads will not be destroyed anymore, they simply wait till an ohter job has been submitted. All Job entries are located in an array starting at &JobBlock. When all job entries are in use and not complete and the next job is submitted, then the system waits till one thread is ready. All parameters for the used threads are located in an array starting at &ThreadBlocks </p><b>Internal parameters defined in the class TaskPrimitives:</b> <table><tr><th>Name: </th> <th>Use: </th> </tr> <tr><td>#threads </td> <td>-- The maximum number of threads in use in the object. </td> </tr> <tr><td>/Threadblock </td> <td>-- The size of one Thread-block. </td> </tr> <tr><td>&ThreadBlocks </td> <td>-- The starting address of a threadblock array when it has been allocated. </td> </tr> <tr><td>OnlyOneThread </td> <td>-- A flag used to force to use 1 thread only for testing </td> </tr> <tr><td>LastUsedThreadId </td> <td>-- Used to a next free thread. </td> </tr> <tr><td>FoundJobId </td> <td>-- Keeps the last found free jobID. </td> </tr> <tr><td>LastUsedJobId </td> <td>-- Used to find a next free jobID. </td> </tr> <tr><td>&JobBlock </td> <td>-- Start address of the JobBlock when it has been allocated. </td> </tr> <tr><td>#Jobs </td> <td>-- Number of entries in the JobBlock. </td> </tr> <tr><td>'CallBack </td> <td>-- callback function for QueueUserAPC (PAPCFUNC). </td> </tr> <tr><td>FastJobs </td> <td>-- If true the elapsed times are diplayed in cycles. </td> </tr> <tr><td>QueFull </td> <td>-- Increments when the que is full. Then the system waits at the next job till one thread is ready unless one job gets complete. </td> </tr> </table><p><b><code>: ResetJob-ThreadID ( - ) </code></b><br>Set LastUsedJobId and LastUsedThreadId to -1 to reset various ID's </p><p><b><code>:M GetQueFull: ( -- n ) </code></b><br>Returns the number of times that all job entries are used. </p><p><b><code>:M ResetQueFull: ( -- ) </code></b><br>Set the count of QueFull to 0. </p><p><b><code>:M .QueFull: ( -- ) </code></b><br>Displays the count of QueFull. </p><p><b><code>: JobEntryID> ( JobEntryAdr - Index ) </code></b><br>Returns the index of a JobEntry given its address. </p><p><b><code>1 CALLBACK: ExecuteJob { \ #bytes } ( JobEntry -- res ) \ Also defines &ExecuteJob </code></b><br>Callback fuction for all jobs that are submitted and need no analyzing. </p><p><b><code>1 CALLBACK: ExecuteAnalizeJob { \ #bytes } ( JobEntry -- res ) \ Also defines &ExecuteAnalizeJob </code></b><br>Callback fuction for all jobs that are submitted and need to be analyzed. </p><p><b><code>:M Set#Jobs: ( n -- ) </code></b><br>Specify the maximum number of jobs. Set it before starting the object when needed. </p><p><b><code>:M Get#Jobs: ( -- n ) </code></b><br>Get the maximum number of jobs. </p><p><b><code>:M GetLockedJobID: ( -- n ) </code></b><br>Retuns the JobID that is locked </p><p><b><code>:M >JobEntry: ( index - adr ) </code></b><br>Returns the address of a jobentry given its index. </p><p><b><code>:M .Jobblock: ( -- ) </code></b><br>Produces a primitive dump of a jobblock. </p><p><b><code>: GetThreadBlock ( IDindex - ThreadBlock ) </code></b><br>Returns the address of the threadblock array for its index. </p><p><b><code>: tcb>cfa ( tcb - tcb>cfa ) </code></b><br>Returns the address of the CFA to be executed from the threadblock. </p><p><b><code>: ThreadIndex ( - #threads 0 ) </code></b><br>Returns 0 and the maximum number of simultaneously threads in use by the object. </p><p><b><code>:M GetThreadcount: ( -- #threads ) </code></b><br>Returns the maximum number of simultaneously threads in use. </p><p><b><code>:M SetThreadcount: ( #threads -- ) </code></b><br>Sets the maximum number of simultaneously threads in use. </p><p><b><code>:M Max#threads: ( -- #threads ) </code></b><br>Returns the number of hardware threads. <br /> It returns 2 for older cpu's. </p><p><b><code>: CreateRunThread ( IDindex -- ) </code></b><br>Creates and runs the thread for windows given the ID and use the parameters of a filled entry in the threadblock. </p><p><b><code>:M SuspendThread: ( IDindex -- ) </code></b><br>Suspend a thread with the specified ID. </p><p><b><code>:M ResumeThread: ( IDindex -- ) </code></b><br>Resumes the thread with the specified ID. </p><p><b><code>:M SuspendThreads: ( -- ) </code></b><br>Suspend all threads in use by the object. </p><p><b><code>:M ResumeThreads: ( -- ) </code></b><br>Resume all threads in use in the object by the object. </p><p><b><code>:M TerminateThread: ( IDindex -- ) </code></b><br>To terminate a thread with the specified ID. <br /> This will also terminate all running jobs of the thread. </p><p><b><code>:M TerminateThreads: ( IDindex -- ) </code></b><br>Terminates all threads in use in the object by the object. This will also terminate all running jobs in the object. </p><p><b><code>:M ReleaseArrays: ( -- ) </code></b><br>Release the allocated arrays. </p><p><b><code>: MallocJobBlock ( -- ) </code></b><br>Allocate the needed arrays. </p><p><b><code>:M CloseSemaphores: ( -- ) </code></b><br>Close the semaphores on use by the object. </p><p><b><code>: *Canceled* ( ?? - ) </code></b><br>Resets the stack. *Canceled* is used for reporting. </p><p><b><code>: CancelwaitingJob ( index - ) </code></b><br>Cancel the entry of a job. When a job is running it will continue. </p><p><b><code>:M CancelWaitingJobs: ( -- ) </code></b><br>Cancel waiting and pending jobs of the object. Running Jobs will continue This might give confusing results a job analysis. </p><p><b><code>:M TerminateAllJobs: ( -- ) </code></b><br>Closes all semaphores and terminate all jobs and threads of one object. All waiting jobs will be gone. Use Start: to restart mulitasking again. </p><p><b><code>:M UseOneThreadOnly: ( -- ) </code></b><br>Overwrite the number of simultaneously threads in use by the object. Use it before submitting a job. </p><p><b><code>:M UseALLThreads: ( -- ) </code></b><br>To overwrite UseOneThreadOnly:. This is default. </p><p><b><code>:M GetThreadBlockSize: ( - Size ) </code></b><br>Returns the threadblock size. </p><p><b><code>:M #ActiveThreads: { \ lpExitCode } ( - #ActiveThreads ) </code></b><br>Returns the number active threads in the object. </p><p><b><code>:M SetThreadBlockSize: ( NewSize - ) </code></b><br>Sets a new size for the thread block. </p><p><b><code>:M #IncompleteJobs1Thread: ( index -- #jobs ) </code></b><br>Returns the number of incomplete jobs of one 1 thread given its ID. </p><p><b><code>:M #JobsSubmitted: ( -- #TotalSubmittedjobs ) </code></b><br>Returns the total number of submitted jobs in the object. </p><p><b><code>:M #IncompleteJobs: ( -- #Totaljobs ) </code></b><br>Returns the total number of incomplete jobs in the object. </p><p><b><code>:M Ready?: ( -- flag ) </code></b><br>Returns true when all jobs are ready. </p><p><b><code>:M GetFreeJobId: ( -- Index|-1 ) </code></b><br>Return an index for a free JobEntry or -1 when it fails. The result is also stored in FoundJobId. </p><p><b><code>: AlertableState ( - ) </code></b><br>Puts a thread in a alertable state. So it can receive and handle submitted jobs (APC's). </p><p><b><code>:M FindThread: { \ cand least } ( -- i ) </code></b><br>Finds a thread to be used for a job. <br /> This is done by looking for a waiting thread. <br /> When there is no thread waiting the thread with the least jobs is returned. Some threads are not as often used as others, since it is faster to find a waiting thread. </p><p><b><code>: 5.r ( n - ) </code></b><br>Display n right justified using 5 positions followed by a space. </p><h2>Analyzer tool </h2><p><b>----- Display definitions to be used when the analyzer is ON. -----</b><br /> (See Analyze:) </p><p><b><code>: .JobStatus ( &JobEntry - ) </code></b><br>Displays the jobstatus of a job given its &JobEntry address. </p><p><b><code>: .DifCycles ( startL startH endL endH - ) </code></b><br>Calculates and displays the difference between a start time and end time in cycles. </p><p><b><code>: AverageElapsed \ : ( -- F:AverageInCycles ) </code></b><br>Calculates the average time In cycles of all jobs in an object. </p><p><b><code>: .AverageTime ( F: AverageTime ActTime - ) </code></b><br>Calculates and displays the relative difference between the average time and actual time of a job. </p><p><b><code>:M .JobAnalysis: ( -- ) </code></b><br>Displays a Job analysis of an object that include elapsed times status and the name of the executed CFA. Note: Job entries can be recycled! </p><p><b><code>:M .ThreadBlock: ( - ) </code></b><br>Displays the number of submitted jobs and the number of completed jobs for each thread of an object. </p><p><b><code>:M TimeSeconds: ( -- ) </code></b><br>Displays the time in seconds in .JobAnalysis:. </p><p><b><code>:M TimeCycles: ( -- ) </code></b><br>Displays the time in cycles in .JobAnalysis:. </p><p><b><code>:M AnalyzerOff: ( -- ) </code></b><br>Puts the analyzer for .JobAnalysis: off. This is default. This will be a bit faster. </p><p><b><code>:M EraseStats: ( -- ) </code></b><br>Erase statistics fome the thread block and Job block of an object. </p><p><b>----- End of display definitions for the analyzer -----</b> </p><p><b><code>: ExecuteInThread ( -- ) </code></b><br>Will run first in any thread. </p><p><b><code>:M PrepairThread: ( cfa IDindex -- ) </code></b><br>Prepairs a threadblock with various parameters. </p><p><b><code>:M StartQueue: ( cfa IDindex -- ) </code></b><br>Submits the specified cfa in a new thread and returns. </p><p><b><code>:M StartQueues: </code></b><br>Start all queues and threads in an object. All started threads will get in an alertable state and will be ready to receive APC's that use an entry a JobBlock of an object. </p><p><b><code>:M MallocThreadArrays: ( -- ) </code></b><br>Allocates and initializes the ThreadBlock and JobBlock. </p><p><b><code>:M Start: ( -- ) </code></b><br>Used to initialize the object. Must be used before jobs can be submitted </p><p><b><code>:M WaitForFreeJobEntry: ( - addr ) </code></b><br>Waits for a free job entry. When found it will return the addres of the found entry. </p><p><b><code>:M LockJobEntry[: ( - ) </code></b><br>Locks a job entry so it can receive parameters. </p><p><b><code>:M ToStack: ( ni...n0 n -- ) </code></b><br>To pass n (maximal 8) parameters to the stack of a job. </p><p><b><code>:M WaitForAll: ( - ) </code></b><br>Wait till LockExecute and all Jobs in the object are complete. The definition AlertableState will increase the semaphore when ready. </p><p><b><code>: CheckTasbObject ( - ) </code></b><br>To check if a TasbObject has been started. </p><p><b><code>:M Analyze: </code></b><br>Starts the analyzer for .JobAnalysis: </p><p><b><code>:M StopAnalyzing: </code></b><br>Stops the analyzer. </p><p><b><code>:M ClassInit: ( -- ) </code></b><br>Initializes the object. Happens automaticly when Forth or a turnkey starts. </p><h2>wTasks class </h2><p><b><code>:Class wTasks <Super TaskPrimitives </code></b><br>To run a number of tasks concurrently that can not be indexed. <br /> Each task is converted to a job. A job can already be complete while the submit action has not yet returned. </p><p><b><code>:M ]Submit: ( cfa -- ) </code></b><br>Submits the specified cfa to a locked JobEntry and return after that job is submitted. </p><p><b><code>:M Submit: ( cfa -- ) </code></b><br>Locks and Submits the specified cfa to a new job and return after that job is submitted. To be used when a job needs no parameters. </p><p><b><code>:M ]Single: ( cfa -- ) </code></b><br>Executes the definition of the specified cfa in the main task. Made for debugging while running in the MainThread. </p><p><b><code>:M Single: ( cfa -- ) </code></b><br>Locks and execute the specified cfa and return after that job is submitted. To be used when a CFA needs no parameters. </p><h2>sTask class </h2><p><b><code>:Class sTask <Super wTasks </code></b><br>To run a number of tasks sequentional. <br /> Each task is converted to a job. All jobs are placed in ONE que for ONE thread. </p><h2>iTasks class </h2><p><b><code>:Class iTasks <Super TaskPrimitives </code></b><br>To run ONE definition parallel that contains a do...loop. <br /> The task is distributed over several jobs and then handeld in one go. <br /> Each job can get the index for the do...loop by using GetRange:. <br /> GetThreadIndex can be used to target a value in an array. </p><p><b><code> 2 cells bytes TotalRange </code></b><br>2 cells containing the total of all ranges in the object. | </p><p><b><code>:M GetRange: ( -- High Low ) </code></b><br>Returns the range to be used before a do...loop of the running job. </p><p><b><code>:M Putrange: ( High Low IDindex -- ) </code></b><br>Saves the range of a job. </p><p><b><code>: .range ( IDindex - ) </code></b><br>Show the assigned range of a job using the entry index of the job. </p><p><b><code>:M .Ranges: </code></b><br>Show the ranges of the jobs used by the object. Note: Job entries can be overwritten when they are complete. </p><p><b><code>:M SubmitRange: { High low cfa -- } </code></b><br>Submits the specified cfa in a new job and return after that job is submitted. Range and parameters from ToStack: are also passed to the job. </p><p><b><code>:M SubmitRanges: { cfa High low _#threads -- } \ 3 </code></b><br>Distributes and submits all the ranges to various jobs. </p><p><b><code>:M SetParallelItems: ( cfa limit IndexLow #threads - ) \ 2 </code></b><br>Initilizes the ranges and submits them. </p><p><b><code>:M ]Parallel: \ { limit IndexLow cfa -- } \ 1 </code></b><br>Submits the specified cfa in a number of jobs. <br /> Use LockJobEntry[: to lock the entrypoint. The number of jobs depend on the number of hardware threads and the specified range in limit and IndexLow. <br /> Parallel: returns when all the jobs in the object are complete. <br /> Each job can get its range by using GetRange:.<br /> Each range can be passed to a do..loop or #do <br /> The debugger can not be used in a job. <br /> See Single: for debugging. </p><p><b><code>:M Parallel: ( limit IndexLow cfa -- ) \ 1 </code></b><br>Nearly the same as ]Parallel:. Parallel: also uses a lock to prevent nesting while still busy. To be used when no other parameters are passed other than limit IndexLow cfa </p><p><b><code>:M Single: ( limit IndexLow cfa -- ) </code></b><br>Executes the definition of the specified cfa in the main thread. The executed definition can get its range by using GetRange:. Made for debugging while running in the MainThread. </p>\s </body></html> |
From: Jos v.d.V. <jo...@us...> - 2014-08-15 13:29:55
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27519/src/lib Modified Files: MultiTaskingClass.f Log Message: Dexeing MultitaskingClass Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** MultiTaskingClass.f 12 May 2014 11:31:25 -0000 1.7 --- MultiTaskingClass.f 15 Aug 2014 13:29:52 -0000 1.8 *************** *** 28,37 **** \ *P Tasks of both classes will get their parameters at the start on the stack \ ** as soon as the method \iToStack:\d is used just before the job is submitted. \n ! \ ** MultiTaskingClass.f uses preemptive multitasking system of windows. No need to use pause. \n \ *P \bTypical passing of parameters to a Job:\d \n ! \ ** LockJobEntry[: myTasks 10 20 30 3 ToStack: myTasks ['] TestTask ]Submit: myTasks \n ! \ ** LockJobEntry[: Locks the entrypoint to protects against overwriting.\n ! \ ** ToStack: Passes 3 stack items to the stack of the job.\n \ ** ]Submit: Submits the task and unlocks the entrypoint just before it returns. --- 28,38 ---- \ *P Tasks of both classes will get their parameters at the start on the stack \ ** as soon as the method \iToStack:\d is used just before the job is submitted. \n ! \ ** MultiTaskingClass.f uses the \bpreemptive\d multitasking system of windows. No need to use pause. \n \ *P \bTypical passing of parameters to a Job:\d \n ! \ ** LockJobEntry[: myTasks 10 20 30 \b3\d ToStack: myTasks ['] TestTask ]Submit: myTasks \n ! \ ** \bExplanation:\d\n ! \ ** LockJobEntry[: Locks the entrypoint to protect it against overwriting.\n ! \ ** ToStack: Passes the \b3\d stack items to the stack of the job.\n \ ** ]Submit: Submits the task and unlocks the entrypoint just before it returns. *************** *** 257,261 **** 0x7FFFFFFF constant MaxCountSemaphore \ *G The maximum count of a Semaphore ! :Class Semaphore <Super Object \ *G A semaphore act as a lock that allows multiple threads to wait in line for the resource to be free. --- 258,262 ---- 0x7FFFFFFF constant MaxCountSemaphore \ *G The maximum count of a Semaphore ! \ *S Semaphore class :Class Semaphore <Super Object \ *G A semaphore act as a lock that allows multiple threads to wait in line for the resource to be free. *************** *** 323,327 **** ! :Class ExclExecute <Super Object \ *G To be used to execute a definition in a serial way by using LockExecute: --- 324,328 ---- ! \ *S ExclExecute class :Class ExclExecute <Super Object \ *G To be used to execute a definition in a serial way by using LockExecute: *************** *** 361,367 **** ! :Class TaskPrimitives <Super ExclExecute ! \ *G Contains the general definitions for a task object. \ ** In task.f a task in Forth is passed to a thread and when it is complete the task will be destroyed. \ ** That takes more than 1.000.000 cycles for each time a task starts. --- 362,368 ---- ! \ *S TaskPrimitives class :Class TaskPrimitives <Super ExclExecute ! \ *G Contains the \bgeneral\d definitions for a task object. \ ** In task.f a task in Forth is passed to a thread and when it is complete the task will be destroyed. \ ** That takes more than 1.000.000 cycles for each time a task starts. *************** *** 724,728 **** 5 .r space ; ! \ *P \b----- Display definitions used when the analyzer is ON. -----\d\n \ ** (See Analyze:) : .JobStatus ( &JobEntry - ) --- 725,730 ---- 5 .r space ; ! \ *S Analyzer tool ! \ *P \b----- Display definitions to be used when the analyzer is ON. -----\d\n \ ** (See Analyze:) : .JobStatus ( &JobEntry - ) *************** *** 964,968 **** :M ClassInit: ( -- ) ! \ *G Initializes the object. Happens automaticly when Forth or a turnkey is starts. Max#threads: Self to #threads ClassInit: super --- 966,970 ---- :M ClassInit: ( -- ) ! \ *G Initializes the object. Happens automaticly when Forth or a turnkey starts. Max#threads: Self to #threads ClassInit: super *************** *** 980,984 **** ! :Class wTasks <Super TaskPrimitives \ *G To run a number of tasks concurrently that can not be indexed. \n --- 982,986 ---- ! \ *S wTasks class :Class wTasks <Super TaskPrimitives \ *G To run a number of tasks concurrently that can not be indexed. \n *************** *** 1037,1041 **** ! :Class sTask <Super wTasks \ *G To run a number of tasks sequentional. \n --- 1039,1043 ---- ! \ *S sTask class :Class sTask <Super wTasks \ *G To run a number of tasks sequentional. \n *************** *** 1055,1059 **** ! :Class iTasks <Super TaskPrimitives \ *G To run ONE definition parallel that contains a do...loop. \n --- 1057,1061 ---- ! \ *S iTasks class :Class iTasks <Super TaskPrimitives \ *G To run ONE definition parallel that contains a do...loop. \n |
From: Jos v.d.V. <jo...@us...> - 2014-08-15 13:29:54
|
Update of /cvsroot/win32forth/win32forth/Help/html In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27519/Help/html Modified Files: w32f-classes.htm Log Message: Dexeing MultitaskingClass Index: w32f-classes.htm =================================================================== RCS file: /cvsroot/win32forth/win32forth/Help/html/w32f-classes.htm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** w32f-classes.htm 18 Nov 2011 14:17:01 -0000 1.3 --- w32f-classes.htm 15 Aug 2014 13:29:52 -0000 1.4 *************** *** 150,153 **** --- 150,154 ---- <ul> <li><a href="class-File.htm#File">File</a> Class for file I/O.</li> + <li><a href="class-MultiTaskingClass.htm">MultiTaskingClass</a> For clustered tasks in objects.</li> <li><a href="class-File.htm#ReadFile">ReadFile</a> Class for loading/saving a complete file from/to memory.</li> <li><a href="class-SQLite.htm">SQLite</a> Database Class for SQLite</li> |
From: Jos v.d.V. <jo...@us...> - 2014-08-13 11:15:02
|
Update of /cvsroot/win32forth/win32forth/Help In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8074 Modified Files: HelpScope.f Log Message: Jos Added MultiTaskingClass.f Index: HelpScope.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Help/HelpScope.f,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** HelpScope.f 15 Nov 2013 17:43:50 -0000 1.11 --- HelpScope.f 13 Aug 2014 11:14:59 -0000 1.12 *************** *** 201,204 **** --- 201,205 ---- SrcScope: src\menu.f SrcScope: src\lib\BROWSEFLD.F \ SHBrowseForFolder() support + SrcScope: src\lib\MultiTaskingClass.f \ For parallel processing SrcScope: src\console\forthdlg.f \ console dialogs |
From: George H. <geo...@us...> - 2014-08-06 12:50:26
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9524 Modified Files: Primutil.f Log Message: Oops correct this time. Index: Primutil.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Primutil.f,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** Primutil.f 6 Aug 2014 12:30:30 -0000 1.71 --- Primutil.f 6 Aug 2014 12:50:24 -0000 1.72 *************** *** 394,401 **** : (UT/) ( utlo utmid uthi n -- d1 n ) dup>r um/mod -rot r> um/mod ! -rot ; : UT/ ( utlo utmid uthi n -- d1 ) ! (ut/) nip swap ; : M*/ ( d1 n1 +n2 -- d2 ) --- 394,401 ---- : (UT/) ( utlo utmid uthi n -- d1 n ) dup>r um/mod -rot r> um/mod ! -rot 0<> negate ; : UT/ ( utlo utmid uthi n -- d1 ) ! (ut/) drop ; : M*/ ( d1 n1 +n2 -- d2 ) |
From: George H. <geo...@us...> - 2014-08-06 12:30:32
|
Update of /cvsroot/win32forth/win32forth/src/Compat In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8339/Compat Modified Files: Release.f Log Message: Fixed M*/ to give floored result plus minor mods. Index: Release.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Compat/Release.f,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Release.f 25 Jul 2008 03:51:15 -0000 1.2 --- Release.f 6 Aug 2014 12:30:30 -0000 1.3 *************** *** 18,23 **** removed, we are allowed to make some changes in some files. - - Declare new win32forth applications IDs in w32fMsgList.f - - ... ? --- 18,21 ---- |
From: Jos v.d.V. <jo...@us...> - 2014-08-03 14:46:09
|
Update of /cvsroot/win32forth/win32forth/src/tools In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12260 Added Files: DpAnsfCheck.f Log Message: Jos To check if a source only uses DPANS definitions --- NEW FILE: DpAnsfCheck.f --- Anew -DpAnsfCheck.f \ To check if a source only uses DPANS'94 definitions. \ Just load this file and then load the source to check. \ When it is not DPANS then it will display: \ Error(-13): FOO is undefined in file ...... \ See http://win32forth.sourceforge.net/doc/dpans/dpans1.htm#1. \ for the DEPRECATED definitions \ The block extension words are excluded. DPR-WARNING-OFF vocabulary dpans also dpans definitions \in-system-ok : dpansOnly ( - ) dpans only dpans definitions ; synonym - - ( .6.1.0160 minus CORE ) synonym -TRAILING -TRAILING ( 17.6.1.0170 dash-trailing STRING ) synonym , , ( .6.1.0150 comma CORE ) synonym ; ; ( .6.1.0460 semicolon CORE ) synonym ;CODE ;CODE ( 15.6.2.0470 semicolon-code TOOLS EXT ) synonym : : ( .6.1.0450 colon CORE ) synonym :NONAME :NONAME ( .6.2.0455 colon-no-name CORE EXT ) synonym ! ! ( .6.1.0010 store CORE ) synonym ? ? ( 15.6.1.0600 question TOOLS ) synonym ?DO ?DO ( .6.2.0620 question-do CORE EXT ) synonym ?DUP ?DUP ( .6.1.0630 question-dupe CORE ) synonym . . ( .6.1.0180 dot CORE ) synonym ." ." ( .6.1.0190 dot-quote CORE ) synonym .( .( ( .6.2.0200 dot-paren CORE EXT ) synonym .R .R ( .6.2.0210 dot-r CORE EXT ) synonym .S .S ( 15.6.1.0220 dot-s TOOLS ) synonym ' ' ( .6.1.0070 tick CORE ) synonym ( ( ( .6.1.0080 paren CORE ) \ synonym ( ( ( 11.6.1.0080 paren FILE ) synonym (LOCAL) (LOCAL) ( 13.6.1.0086 paren-local-paren LOCAL ) synonym [ [ ( .6.1.2500 left-bracket CORE ) synonym ['] ['] ( .6.1.2510 bracket-tick CORE ) synonym [CHAR] [CHAR] ( .6.1.2520 bracket-char CORE ) synonym [COMPILE] [COMPILE] ( .6.2.2530 bracket-compile CORE EXT ) synonym [ELSE] [ELSE] ( 15.6.2.2531 bracket-else TOOLS EXT ) synonym [IF] [IF] ( 15.6.2.2532 bracket-if TOOLS EXT ) synonym [THEN] [THEN] ( 15.6.2.2533 bracket-then TOOLS EXT ) synonym ] ] ( .6.1.2540 right-bracket CORE ) synonym @ @ ( .6.1.0650 fetch CORE ) synonym * * ( .6.1.0090 star CORE ) synonym */ */ ( .6.1.0100 star-slash CORE ) synonym */MOD */MOD ( .6.1.0110 star-slash-mod CORE ) synonym / / ( .6.1.0230 slash CORE ) synonym /MOD /MOD ( .6.1.0240 slash-mod CORE ) synonym /STRING /STRING ( 17.6.1.0245 slash-string STRING ) synonym \ \ ( .6.2.2535 backslash CORE EXT ) \ synonym \ \ ( 7.6.2.2535 backslash BLOCK EXT ) synonym # # ( .6.1.0030 number-sign CORE ) synonym #> #> ( .6.1.0040 number-sign-greater CORE ) synonym #S #S ( .6.1.0050 number-sign-s CORE ) synonym #TIB #TIB ( .6.2.0060 number-t-i-b CORE EXT ) DEPRECATED synonym + + ( .6.1.0120 plus CORE ) synonym +! +! ( .6.1.0130 plus-store CORE ) synonym +LOOP +LOOP ( .6.1.0140 plus-loop CORE ) synonym < < ( .6.1.0480 less-than CORE ) synonym <# <# ( .6.1.0490 less-number-sign CORE ) synonym <> <> ( .6.2.0500 not-equals CORE EXT ) synonym = = ( .6.1.0530 equals CORE ) synonym > > ( .6.1.0540 greater-than CORE ) synonym >BODY >BODY ( .6.1.0550 to-body CORE ) synonym >FLOAT >FLOAT ( 12.6.1.0558 to-float FLOATING ) synonym >IN >IN ( .6.1.0560 to-in CORE ) synonym >NUMBER >NUMBER ( .6.1.0570 to-number CORE ) synonym >R >R ( .6.1.0580 to-r CORE ) synonym 0< 0< ( .6.1.0250 zero-less CORE ) synonym 0<> 0<> ( .6.2.0260 zero-not-equals CORE EXT ) synonym 0= 0= ( .6.1.0270 zero-equals CORE ) synonym 0> 0> ( .6.2.0280 zero-greater CORE EXT ) synonym 1- 1- ( .6.1.0300 one-minus CORE ) synonym 1+ 1+ ( .6.1.0290 one-plus CORE ) synonym 2! 2! ( .6.1.0310 two-store CORE ) synonym 2@ 2@ ( .6.1.0350 two-fetch CORE ) synonym 2* 2* ( .6.1.0320 two-star CORE ) synonym 2/ 2/ ( .6.1.0330 two-slash CORE ) synonym 2>R 2>R ( .6.2.0340 two-to-r CORE EXT ) synonym 2CONSTANT 2CONSTANT ( 8.6.1.0360 two-constant DOUBLE ) synonym 2DROP 2DROP ( .6.1.0370 two-drop CORE ) synonym 2DUP 2DUP ( .6.1.0380 two-dupe CORE ) synonym 2LITERAL 2LITERAL ( 8.6.1.0390 two-literal DOUBLE ) synonym 2OVER 2OVER ( .6.1.0400 two-over CORE ) synonym 2R@ 2R@ ( .6.2.0415 two-r-fetch CORE EXT ) synonym 2R> 2R> ( .6.2.0410 two-r-from CORE EXT ) synonym 2ROT 2ROT ( 8.6.2.0420 two-rote DOUBLE EXT ) synonym 2SWAP 2SWAP ( .6.1.0430 two-swap CORE ) synonym 2VARIABLE 2VARIABLE ( 8.6.1.0440 two-variable DOUBLE ) synonym ABORT ABORT ( .6.1.0670 CORE ) \ synonym ABORT ABORT ( 9.6.2.0670 EXCEPTION EXT ) synonym ABORT" ABORT" ( .6.1.0680 abort-quote CORE ) \ synonym ABORT" ABORT" ( 9.6.2.0680 abort-quote EXCEPTION EXT ) synonym ABS ABS ( .6.1.0690 abs CORE ) synonym ACCEPT ACCEPT ( .6.1.0695 CORE ) synonym AGAIN AGAIN ( .6.2.0700 CORE EXT ) synonym AHEAD AHEAD ( 15.6.2.0702 TOOLS EXT ) synonym ALIGN ALIGN ( .6.1.0705 CORE ) synonym ALIGNED ALIGNED ( .6.1.0706 CORE ) synonym ALLOCATE ALLOCATE ( 14.6.1.0707 MEMORY ) synonym ALLOT ALLOT ( .6.1.0710 CORE ) synonym ALSO ALSO ( 16.6.2.0715 SEARCH EXT ) synonym AND AND ( .6.1.0720 CORE ) synonym ASSEMBLER ASSEMBLER ( 15.6.2.0740 TOOLS EXT ) synonym AT-XY AT-XY ( 10.6.1.0742 at-x-y FACILITY ) synonym BASE BASE ( .6.1.0750 CORE ) synonym BEGIN BEGIN ( .6.1.0760 CORE ) synonym BIN BIN ( 11.6.1.0765 FILE ) synonym BL BL ( .6.1.0770 b-l CORE ) synonym BLANK BLANK ( 17.6.1.0780 STRING ) \ synonym BLK BLK ( 7.6.1.0790 b-l-k BLOCK ) \ synonym BLOCK BLOCK ( 7.6.1.0800 BLOCK ) \ synonym BUFFER BUFFER ( 7.6.1.0820 BLOCK ) synonym BYE BYE ( 15.6.2.0830 TOOLS EXT ) synonym C, C, ( .6.1.0860 c-comma CORE ) synonym C! C! ( .6.1.0850 c-store CORE ) synonym C" C" ( .6.2.0855 c-quote CORE EXT ) synonym C@ C@ ( .6.1.0870 c-fetch CORE ) synonym CASE CASE ( .6.2.0873 CORE EXT ) synonym CATCH CATCH ( 9.6.1.0875 EXCEPTION ) synonym CELL+ CELL+ ( .6.1.0880 cell-plus CORE ) synonym CELLS CELLS ( .6.1.0890 CORE ) synonym CHAR CHAR ( .6.1.0895 char CORE ) synonym CHAR+ CHAR+ ( .6.1.0897 char-plus CORE ) synonym CHARS CHARS ( .6.1.0898 chars CORE ) synonym CLOSE-FILE CLOSE-FILE ( 11.6.1.0900 FILE ) synonym CMOVE CMOVE ( 17.6.1.0910 c-move STRING ) synonym CMOVE> CMOVE> ( 17.6.1.0920 c-move-up STRING ) synonym CODE CODE ( 15.6.2.0930 TOOLS EXT ) synonym COMPARE COMPARE ( 17.6.1.0935 STRING ) synonym COMPILE, COMPILE, ( .6.2.0945 compile-comma CORE EXT ) synonym CONSTANT CONSTANT ( .6.1.0950 CORE ) synonym CONVERT CONVERT ( .6.2.0970 CORE EXT ) DEPRECATED synonym COUNT COUNT ( .6.1.0980 CORE ) synonym CR CR ( .6.1.0990 c-r CORE ) synonym CREATE CREATE ( .6.1.1000 CORE ) synonym CREATE-FILE CREATE-FILE ( 11.6.1.1010 FILE ) synonym CS-PICK CS-PICK ( 15.6.2.1015 c-s-pick TOOLS EXT ) synonym CS-ROLL CS-ROLL ( 15.6.2.1020 c-s-roll TOOLS EXT ) synonym D- D- ( 8.6.1.1050 d-minus DOUBLE ) synonym D. D. ( 8.6.1.1060 d-dot DOUBLE ) synonym D.R D.R ( 8.6.1.1070 d-dot-r DOUBLE ) synonym D+ D+ ( 8.6.1.1040 d-plus DOUBLE ) synonym D< D< ( 8.6.1.1110 d-less-than DOUBLE ) synonym D= D= ( 8.6.1.1120 d-equals DOUBLE ) synonym D>F D>F ( 12.6.1.1130 d-to-f FLOATING ) synonym D>S D>S ( 8.6.1.1140 d-to-s DOUBLE ) synonym D0< D0< ( 8.6.1.1075 d-zero-less DOUBLE ) synonym D0= D0= ( 8.6.1.1080 d-zero-equals DOUBLE ) synonym D2* D2* ( 8.6.1.1090 d-two-star DOUBLE ) synonym D2/ D2/ ( 8.6.1.1100 d-two-slash DOUBLE ) synonym DABS DABS ( 8.6.1.1160 d-abs DOUBLE ) synonym DECIMAL DECIMAL ( .6.1.1170 CORE ) synonym DEFINITIONS DEFINITIONS ( 16.6.1.1180 SEARCH ) synonym DELETE-FILE DELETE-FILE ( 11.6.1.1190 FILE ) synonym DEPTH DEPTH ( .6.1.1200 CORE ) synonym DF! DF! ( 12.6.2.1203 d-f-store FLOATING EXT ) synonym DF@ DF@ ( 12.6.2.1204 d-f-fetch FLOATING EXT ) synonym DFALIGN DFALIGN ( 12.6.2.1205 d-f-align FLOATING EXT ) synonym DFALIGNED DFALIGNED ( 12.6.2.1207 d-f-aligned FLOATING EXT ) synonym DFLOAT+ DFLOAT+ ( 12.6.2.1208 d-float-plus FLOATING EXT ) synonym DFLOATS DFLOATS ( 12.6.2.1209 d-floats FLOATING EXT ) synonym DMAX DMAX ( 8.6.1.1210 d-max DOUBLE ) synonym DMIN DMIN ( 8.6.1.1220 d-min DOUBLE ) synonym DNEGATE DNEGATE ( 8.6.1.1230 d-negate DOUBLE ) synonym DO DO ( .6.1.1240 CORE ) synonym DOES> DOES> ( .6.1.1250 does CORE ) synonym DROP DROP ( .6.1.1260 CORE ) synonym DU< DU< ( 8.6.2.1270 d-u-less DOUBLE EXT ) synonym DUMP DUMP ( 15.6.1.1280 TOOLS ) synonym DUP DUP ( .6.1.1290 dupe CORE ) synonym EDITOR EDITOR ( 15.6.2.1300 TOOLS EXT ) synonym EKEY EKEY ( 10.6.2.1305 e-key FACILITY EXT ) synonym EKEY? EKEY? ( 10.6.2.1307 e-key-question FACILITY EXT ) synonym EKEY>CHAR EKEY>CHAR ( 10.6.2.1306 e-key-to-char FACILITY EXT ) synonym ELSE ELSE ( .6.1.1310 CORE ) synonym EMIT EMIT ( .6.1.1320 CORE ) synonym EMIT? EMIT? ( 10.6.2.1325 emit-question FACILITY EXT ) \ synonym EMPTY-BUFFERS EMPTY-BUFFERS ( 7.6.2.1330 BLOCK EXT ) synonym ENDCASE ENDCASE ( .6.2.1342 end-case CORE EXT ) synonym ENDOF ENDOF ( .6.2.1343 end-of CORE EXT ) synonym ENVIRONMENT? ENVIRONMENT? ( .6.1.1345 environment-query CORE ) synonym ERASE ERASE ( .6.2.1350 CORE EXT ) synonym EVALUATE EVALUATE ( .6.1.1360 CORE ) \ synonym EVALUATE EVALUATE ( 7.6.1.1360 BLOCK ) synonym EXECUTE EXECUTE ( .6.1.1370 CORE ) synonym EXIT EXIT ( .6.1.1380 CORE ) synonym EXPECT EXPECT ( .6.2.1390 CORE EXT ) DEPRECATED synonym F- F- ( 12.6.1.1425 f-minus FLOATING ) synonym F! F! ( 12.6.1.1400 f-store FLOATING ) synonym F. F. ( 12.6.2.1427 f-dot FLOATING EXT ) synonym F@ F@ ( 12.6.1.1472 f-fetch FLOATING ) synonym F* F* ( 12.6.1.1410 f-star FLOATING ) synonym F** F** ( 12.6.2.1415 f-star-star FLOATING EXT ) synonym F/ F/ ( 12.6.1.1430 f-slash FLOATING ) synonym F+ F+ ( 12.6.1.1420 f-plus FLOATING ) synonym F< F< ( 12.6.1.1460 f-less-than FLOATING ) synonym F>D F>D ( 12.6.1.1470 f-to-d FLOATING ) synonym F~ F~ ( 12.6.2.1640 f-proximate FLOATING EXT ) synonym F0< F0< ( 12.6.1.1440 f-zero-less-than FLOATING ) synonym F0= F0= ( 12.6.1.1450 f-zero-equals FLOATING ) synonym FABS FABS ( 12.6.2.1474 f-abs FLOATING EXT ) synonym FACOS FACOS ( 12.6.2.1476 f-a-cos FLOATING EXT ) synonym FACOSH FACOSH ( 12.6.2.1477 f-a-cosh FLOATING EXT ) synonym FALIGN FALIGN ( 12.6.1.1479 f-align FLOATING ) synonym FALIGNED FALIGNED ( 12.6.1.1483 f-aligned FLOATING ) synonym FALOG FALOG ( 12.6.2.1484 f-a-log FLOATING EXT ) synonym FALSE FALSE ( .6.2.1485 CORE EXT ) synonym FASIN FASIN ( 12.6.2.1486 f-a-sine FLOATING EXT ) synonym FASINH FASINH ( 12.6.2.1487 f-a-cinch FLOATING EXT ) synonym FATAN FATAN ( 12.6.2.1488 f-a-tan FLOATING EXT ) synonym FATAN2 FATAN2 ( 12.6.2.1489 f-a-tan-two FLOATING EXT ) synonym FATANH FATANH ( 12.6.2.1491 f-a-tan-h FLOATING EXT ) synonym FCONSTANT FCONSTANT ( 12.6.1.1492 f-constant FLOATING ) synonym FCOS FCOS ( 12.6.2.1493 f-cos FLOATING EXT ) synonym FCOSH FCOSH ( 12.6.2.1494 f-cosh FLOATING EXT ) synonym FDEPTH FDEPTH ( 12.6.1.1497 f-depth FLOATING ) synonym FDROP FDROP ( 12.6.1.1500 f-drop FLOATING ) synonym FDUP FDUP ( 12.6.1.1510 f-dupe FLOATING ) synonym FE. FE. ( 12.6.2.1513 f-e-dot FLOATING EXT ) synonym FEXP FEXP ( 12.6.2.1515 f-e-x-p FLOATING EXT ) synonym FEXPM1 FEXPM1 ( 12.6.2.1516 f-e-x-p-m-one FLOATING EXT ) synonym FILE-POSITION FILE-POSITION ( 11.6.1.1520 FILE ) synonym FILE-SIZE FILE-SIZE ( 11.6.1.1522 FILE ) synonym FILE-STATUS FILE-STATUS ( 11.6.2.1524 FILE EXT ) synonym FILL FILL ( .6.1.1540 CORE ) synonym FIND FIND ( .6.1.1550 CORE ) \ synonym FIND FIND ( 16.6.1.1550 SEARCH ) synonym FLITERAL FLITERAL ( 12.6.1.1552 f-literal FLOATING ) synonym FLN FLN ( 12.6.2.1553 f-l-n FLOATING EXT ) synonym FLNP1 FLNP1 ( 12.6.2.1554 f-l-n-p-one FLOATING EXT ) synonym FLOAT+ FLOAT+ ( 12.6.1.1555 float-plus FLOATING ) synonym FLOATS FLOATS ( 12.6.1.1556 FLOATING ) synonym FLOG FLOG ( 12.6.2.1557 f-log FLOATING EXT ) synonym FLOOR FLOOR ( 12.6.1.1558 FLOATING ) \ synonym FLUSH FLUSH ( 7.6.1.1559 BLOCK ) synonym FLUSH-FILE FLUSH-FILE ( 11.6.2.1560 FILE EXT ) synonym FM/MOD FM/MOD ( .6.1.1561 f-m-slash-mod CORE ) synonym FMAX FMAX ( 12.6.1.1562 f-max FLOATING ) synonym FMIN FMIN ( 12.6.1.1565 f-min FLOATING ) synonym FNEGATE FNEGATE ( 12.6.1.1567 f-negate FLOATING ) synonym FORGET FORGET ( 15.6.2.1580 TOOLS EXT ) DEPRECATED synonym FORTH FORTH ( 16.6.2.1590 SEARCH EXT ) synonym FORTH-WORDLIST FORTH-WORDLIST ( 16.6.1.1595 SEARCH ) synonym FOVER FOVER ( 12.6.1.1600 f-over FLOATING ) synonym FREE FREE ( 14.6.1.1605 MEMORY ) synonym FROT FROT ( 12.6.1.1610 f-rote FLOATING ) synonym FROUND FROUND ( 12.6.1.1612 f-round FLOATING ) synonym FS. FS. ( 12.6.2.1613 f-s-dot FLOATING EXT ) synonym FSIN FSIN ( 12.6.2.1614 f-sine FLOATING EXT ) synonym FSINCOS FSINCOS ( 12.6.2.1616 f-sine-cos FLOATING EXT ) synonym FSINH FSINH ( 12.6.2.1617 f-cinch FLOATING EXT ) synonym FSQRT FSQRT ( 12.6.2.1618 f-square-root FLOATING EXT ) synonym FSWAP FSWAP ( 12.6.1.1620 f-swap FLOATING ) synonym FTAN FTAN ( 12.6.2.1625 f-tan FLOATING EXT ) synonym FTANH FTANH ( 12.6.2.1626 f-tan-h FLOATING EXT ) synonym FVARIABLE FVARIABLE ( 12.6.1.1630 f-variable FLOATING ) synonym GET-CURRENT GET-CURRENT ( 16.6.1.1643 SEARCH ) synonym GET-ORDER GET-ORDER ( 16.6.1.1647 SEARCH ) synonym HERE HERE ( .6.1.1650 CORE ) synonym HEX HEX ( .6.2.1660 CORE EXT ) synonym HOLD HOLD ( .6.1.1670 CORE ) synonym I I ( .6.1.1680 CORE ) synonym IF IF ( .6.1.1700 CORE ) synonym IMMEDIATE IMMEDIATE ( .6.1.1710 CORE ) synonym INCLUDE-FILE INCLUDE-FILE ( 11.6.1.1717 FILE ) synonym INCLUDED INCLUDED ( 11.6.1.1718 FILE ) synonym INVERT INVERT ( .6.1.1720 CORE ) synonym J J ( .6.1.1730 CORE ) synonym KEY KEY ( .6.1.1750 CORE ) synonym KEY? KEY? ( 10.6.1.1755 key-question FACILITY ) synonym LEAVE LEAVE ( .6.1.1760 CORE ) \ synonym LIST LIST ( 7.6.2.1770 BLOCK EXT ) synonym LITERAL LITERAL ( .6.1.1780 CORE ) \ synonym LOAD LOAD ( 7.6.1.1790 BLOCK ) synonym LOCALS| LOCALS| ( 13.6.2.1795 locals-bar LOCAL EXT ) synonym LOOP LOOP ( .6.1.1800 CORE ) synonym LSHIFT LSHIFT ( .6.1.1805 l-shift CORE ) synonym M* M* ( .6.1.1810 m-star CORE ) synonym M*/ M*/ ( 8.6.1.1820 m-star-slash DOUBLE ) synonym M+ M+ ( 8.6.1.1830 m-plus DOUBLE ) synonym MARKER MARKER ( .6.2.1850 CORE EXT ) synonym MAX MAX ( .6.1.1870 CORE ) synonym MIN MIN ( .6.1.1880 CORE ) synonym MOD MOD ( .6.1.1890 CORE ) synonym MOVE MOVE ( .6.1.1900 CORE ) synonym MS MS ( 10.6.2.1905 FACILITY EXT ) synonym NEGATE NEGATE ( .6.1.1910 CORE ) synonym NIP NIP ( .6.2.1930 CORE EXT ) synonym OF OF ( .6.2.1950 CORE EXT ) synonym ONLY ONLY ( 16.6.2.1965 SEARCH EXT ) synonym OPEN-FILE OPEN-FILE ( 11.6.1.1970 FILE ) synonym OR OR ( .6.1.1980 CORE ) synonym ORDER ORDER ( 16.6.2.1985 SEARCH EXT ) synonym OVER OVER ( .6.1.1990 CORE ) synonym PAD PAD ( .6.2.2000 CORE EXT ) synonym PAGE PAGE ( 10.6.1.2005 FACILITY ) synonym PARSE PARSE ( .6.2.2008 CORE EXT ) synonym PICK PICK ( .6.2.2030 CORE EXT ) synonym POSTPONE POSTPONE ( .6.1.2033 CORE ) synonym PRECISION PRECISION ( 12.6.2.2035 FLOATING EXT ) synonym PREVIOUS PREVIOUS ( 16.6.2.2037 SEARCH EXT ) synonym QUERY QUERY ( .6.2.2040 CORE EXT ) DEPRECATED synonym QUIT QUIT ( .6.1.2050 CORE ) synonym R@ R@ ( .6.1.2070 r-fetch CORE ) synonym R/O R/O ( 11.6.1.2054 r-o FILE ) synonym R/W R/W ( 11.6.1.2056 r-w FILE ) synonym R> R> ( .6.1.2060 r-from CORE ) synonym READ-FILE READ-FILE ( 11.6.1.2080 FILE ) synonym READ-LINE READ-LINE ( 11.6.1.2090 FILE ) synonym RECURSE RECURSE ( .6.1.2120 CORE ) synonym REFILL REFILL ( .6.2.2125 CORE EXT ) \ synonym REFILL REFILL ( 7.6.2.2125 BLOCK EXT ) \ synonym REFILL REFILL ( 11.6.2.2125 FILE EXT ) synonym RENAME-FILE RENAME-FILE ( 11.6.2.2130 FILE EXT ) synonym REPEAT REPEAT ( .6.1.2140 CORE ) synonym REPOSITION-FILE REPOSITION-FILE ( 11.6.1.2142 FILE ) synonym REPRESENT REPRESENT ( 12.6.1.2143 FLOATING ) synonym RESIZE RESIZE ( 14.6.1.2145 MEMORY ) synonym RESIZE-FILE RESIZE-FILE ( 11.6.1.2147 FILE ) synonym RESTORE-INPUT RESTORE-INPUT ( .6.2.2148 CORE EXT ) synonym ROLL ROLL ( .6.2.2150 CORE EXT ) synonym ROT ROT ( .6.1.2160 rote CORE ) synonym RSHIFT RSHIFT ( .6.1.2162 r-shift CORE ) synonym S" S" ( .6.1.2165 s-quote CORE ) \ synonym S" S" ( 11.6.1.2165 s-quote FILE ) synonym S>D S>D ( .6.1.2170 s-to-d CORE ) \ synonym SAVE-BUFFERS SAVE-BUFFERS ( 7.6.1.2180 BLOCK ) synonym SAVE-INPUT SAVE-INPUT ( .6.2.2182 CORE EXT ) \ synonym SCR SCR ( 7.6.2.2190 s-c-r BLOCK EXT ) synonym SEARCH SEARCH ( 17.6.1.2191 STRING ) synonym SEARCH-WORDLIST SEARCH-WORDLIST ( 16.6.1.2192 SEARCH ) synonym SEE SEE ( 15.6.1.2194 TOOLS ) synonym SET-CURRENT SET-CURRENT ( 16.6.1.2195 SEARCH ) synonym SET-ORDER SET-ORDER ( 16.6.1.2197 SEARCH ) synonym SET-PRECISION SET-PRECISION ( 12.6.2.2200 FLOATING EXT ) synonym SF! SF! ( 12.6.2.2202 s-f-store FLOATING EXT ) synonym SF@ SF@ ( 12.6.2.2203 s-f-fetch FLOATING EXT ) synonym SFALIGN SFALIGN ( 12.6.2.2204 s-f-align FLOATING EXT ) synonym SFALIGNED SFALIGNED ( 12.6.2.2206 s-f-aligned FLOATING EXT ) synonym SFLOAT+ SFLOAT+ ( 12.6.2.2207 s-float-plus FLOATING EXT ) synonym SFLOATS SFLOATS ( 12.6.2.2208 s-floats FLOATING EXT ) synonym SIGN SIGN ( .6.1.2210 CORE ) synonym SLITERAL SLITERAL ( 17.6.1.2212 STRING ) synonym SM/REM SM/REM ( .6.1.2214 s-m-slash-rem CORE ) synonym SOURCE SOURCE ( .6.1.2216 CORE ) synonym SOURCE-ID SOURCE-ID ( .6.2.2218 source-i-d CORE EXT ) \ synonym SOURCE-ID SOURCE-ID ( 11.6.1.2218 source-i-d FILE ) synonym SPACE SPACE ( .6.1.2220 CORE ) synonym SPACES SPACES ( .6.1.2230 CORE ) synonym SPAN SPAN ( .6.2.2240 CORE EXT ) DEPRECATED synonym STATE STATE ( .6.1.2250 CORE ) \ synonym STATE STATE ( 15.6.2.2250 TOOLS EXT ) synonym SWAP SWAP ( .6.1.2260 CORE ) synonym THEN THEN ( .6.1.2270 CORE ) synonym THROW THROW ( 9.6.1.2275 EXCEPTION ) \ synonym THRU THRU ( 7.6.2.2280 BLOCK EXT ) synonym TIB TIB ( .6.2.2290 t-i-b CORE EXT ) DEPRECATED synonym TIME&DATE TIME&DATE ( 10.6.2.2292 time-and-date FACILITY EXT ) synonym TO TO ( .6.2.2295 CORE EXT ) \ synonym TO TO ( 13.6.1.2295 LOCAL ) synonym TRUE TRUE ( .6.2.2298 CORE EXT ) synonym TUCK TUCK ( .6.2.2300 CORE EXT ) synonym TYPE TYPE ( .6.1.2310 CORE ) synonym U. U. ( .6.1.2320 u-dot CORE ) synonym U.R U.R ( .6.2.2330 u-dot-r CORE EXT ) synonym U< U< ( .6.1.2340 u-less-than CORE ) synonym U> U> ( .6.2.2350 u-greater-than CORE EXT ) synonym UM* UM* ( .6.1.2360 u-m-star CORE ) synonym UM/MOD UM/MOD ( .6.1.2370 u-m-slash-mod CORE ) synonym UNLOOP UNLOOP ( .6.1.2380 CORE ) synonym UNTIL UNTIL ( .6.1.2390 CORE ) synonym UNUSED UNUSED ( .6.2.2395 CORE EXT ) \ synonym UPDATE UPDATE ( 7.6.1.2400 BLOCK ) synonym VALUE VALUE ( .6.2.2405 CORE EXT ) synonym VARIABLE VARIABLE ( .6.1.2410 CORE ) synonym W/O W/O ( 11.6.1.2425 w-o FILE ) synonym WHILE WHILE ( .6.1.2430 CORE ) synonym WITHIN WITHIN ( .6.2.2440 CORE EXT ) synonym WORD WORD ( .6.1.2450 CORE ) synonym WORDLIST WORDLIST ( 16.6.1.2460 SEARCH ) synonym WORDS WORDS ( 15.6.1.2465 TOOLS ) synonym WRITE-FILE WRITE-FILE ( 11.6.1.2480 FILE ) synonym WRITE-LINE WRITE-LINE ( 11.6.1.2485 FILE ) synonym XOR XOR ( .6.1.2490 x-or CORE ) also Forth definitions synonym dpansOnly dpansOnly DPR-WARNING-ON dpansOnly \ To switch to dpans cr cr .( --- DpAnsfCheck active for DPANS'94 --- ) order \ only forth also definitions \ To switch to normal Forth \ \s |
From: George H. <geo...@us...> - 2014-07-28 12:37:57
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv693 Modified Files: FLOAT.F SEE.F Log Message: Added FCONSTANT to see as well plus tidy up Index: SEE.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/SEE.F,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** SEE.F 28 Jul 2014 11:46:02 -0000 1.17 --- SEE.F 28 Jul 2014 12:37:55 -0000 1.18 *************** *** 221,224 **** --- 221,227 ---- dup >body ? ." CONSTANT " .name ; + \+ fconstant : .FCONSTANT ( cfa -- ) + \+ fconstant dup >body f@ fe. ." FCONSTANT " .name ; + : .OFFSET ( cfa -- ) dup >body ? ." OFFSET " .name ; *************** *** 236,243 **** : .2VALUE ( cfa -- ) ! dup cell+ @ 2@ d. ." 2VALUE " .name ; \+ fvalue : .FVALUE ( cfa -- ) ! dup cell+ @ f@ g. ." FVALUE " .name ; : .CLASS ( cfa -- ) --- 239,246 ---- : .2VALUE ( cfa -- ) ! dup cell+ @ 2@ (d.) type ." . 2VALUE " .name ; \+ fvalue : .FVALUE ( cfa -- ) ! dup cell+ @ f@ fe. ." FVALUE " .name ; : .CLASS ( cfa -- ) *************** *** 290,308 **** : .definition-class ( cfa cfa -- ) @ case ! docol of .: endof ! docon of .constant endof ! dooff of .offset endof ! dovar of .variable endof ! douser of .user endof ! dodefer of .defer endof ! dovalue of .value endof ! do2value of .2value endof ! \+ fvalue dofvalue of .fvalue endof ! doClass of .class endof ! do|Class of .class endof ! dovoc of .vocabulary endof ! doObj of .object endof ! doPointer of .pointer endof ! doImport of .import endof swap .other endcase ; --- 293,312 ---- : .definition-class ( cfa cfa -- ) @ case ! docol of .: endof ! docon of .constant endof ! \+ fconstant dofcon of .fconstant endof ! dooff of .offset endof ! dovar of .variable endof ! douser of .user endof ! dodefer of .defer endof ! dovalue of .value endof ! do2value of .2value endof ! \+ dofvalue dofvalue of .fvalue endof ! doClass of .class endof ! do|Class of .class endof ! dovoc of .vocabulary endof ! doObj of .object endof ! doPointer of .pointer endof ! doImport of .import endof swap .other endcase ; Index: FLOAT.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/FLOAT.F,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** FLOAT.F 28 Jul 2014 11:46:02 -0000 1.64 --- FLOAT.F 28 Jul 2014 12:37:55 -0000 1.65 *************** *** 465,474 **** \ *G Define a floating point value initialised from the FP stack. header dofvalue , here 0 , dofvalue! , dofvalue+! , here swap ! f, ; - \ ;code - \ mov ecx, 4 [eax] - \ fld fsize 0 [ecx] - \ FPU> - \ float; - synonym fto to \ W32F Floating extra --- 465,468 ---- *************** *** 482,486 **** \ *P Add r into -<fvalue>-. - : FCONSTANT ( "name" -- ; fs: r -- ) \ ANSI Floating \ *G \b Interpretation: ( "name" ; fs: r -- ) \d \n --- 476,479 ---- *************** *** 490,498 **** \ ** \b Run-time: ( fs: -- r ) \d \n \ ** Place r on the floating-point stack. ! ! create f, ! ;code ! fld fsize 4 [eax] ! FPU> float; --- 483,489 ---- \ ** \b Run-time: ( fs: -- r ) \d \n \ ** Place r on the floating-point stack. ! create f, ;code ! fld fsize 4 [eax] ! FPU> float; |
From: George H. <geo...@us...> - 2014-07-28 11:46:04
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28853 Modified Files: FLOAT.F SEE.F Log Message: Revised to handle fvalue and 2value Index: SEE.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/SEE.F,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** SEE.F 13 May 2014 13:25:31 -0000 1.16 --- SEE.F 28 Jul 2014 11:46:02 -0000 1.17 *************** *** 235,240 **** dup cell+ ? ." VALUE " .name ; ! : .FVALUE ( cfa -- ) ! dup execute fe. ." FVALUE " .name ; : .CLASS ( cfa -- ) --- 235,243 ---- dup cell+ ? ." VALUE " .name ; ! : .2VALUE ( cfa -- ) ! dup cell+ @ 2@ d. ." 2VALUE " .name ; ! ! \+ fvalue : .FVALUE ( cfa -- ) ! dup cell+ @ f@ g. ." FVALUE " .name ; : .CLASS ( cfa -- ) *************** *** 285,291 **** \ Classify a word based on its CFA 09SEP83HHL - 0e fvalue dofvalue - - : .definition-class ( cfa cfa -- ) @ case --- 288,291 ---- *************** *** 297,301 **** dodefer of .defer endof dovalue of .value endof ! ['] dofvalue @ of .fvalue endof doClass of .class endof do|Class of .class endof --- 297,302 ---- dodefer of .defer endof dovalue of .value endof ! do2value of .2value endof ! \+ fvalue dofvalue of .fvalue endof doClass of .class endof do|Class of .class endof Index: FLOAT.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/FLOAT.F,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** FLOAT.F 6 Nov 2013 21:56:29 -0000 1.63 --- FLOAT.F 28 Jul 2014 11:46:02 -0000 1.64 *************** *** 428,431 **** --- 428,437 ---- internal + cfa-code dofvalue ( fs: -- r ) + mov ecx, 4 [eax] + fld fsize 0 [ecx] + FPU> + float; + cfa-code dofvalue! ( fs: r -- ) push ebx *************** *** 458,467 **** : FVALUE ( compiling "name" -- ; fs: r -- ; run-time FS: -- r ) \ W32F Floating ext \ *G Define a floating point value initialised from the FP stack. ! create here 0 , dofvalue! , dofvalue+! , here swap ! f, ! ;code ! mov ecx, 4 [eax] ! fld fsize 0 [ecx] ! FPU> ! float; --- 464,473 ---- : FVALUE ( compiling "name" -- ; fs: r -- ; run-time FS: -- r ) \ W32F Floating ext \ *G Define a floating point value initialised from the FP stack. ! header dofvalue , here 0 , dofvalue! , dofvalue+! , here swap ! f, ; ! \ ;code ! \ mov ecx, 4 [eax] ! \ fld fsize 0 [ecx] ! \ FPU> ! \ float; |
From: Rod O. <rod...@us...> - 2014-07-27 10:17:20
|
Update of /cvsroot/win32forth/win32forth/src/console In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29077 Modified Files: CommandWindow.f Log Message: Rod: Improved the function of the arrow keys and home and end keys. In particular Ctrl Left/Right to move to the next word and Ctrl Shift Left/Right to select up to the next word Index: CommandWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/console/CommandWindow.f,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** CommandWindow.f 28 Jun 2013 12:41:24 -0000 1.32 --- CommandWindow.f 27 Jul 2014 10:17:18 -0000 1.33 *************** *** 114,117 **** --- 114,120 ---- int SelEndCol int SelEndRow + int SelEndColNew + int SelEndRowNew + int increasing int SelStartX int SelStartY *************** *** 404,408 **** CaretHeight CaretWidth 0 hWnd call CreateCaret drop CaretPos.top CaretPos.left call SetCaretPos drop ! Editing IF ShowCaret: self THEN true to cursor-on? ;M --- 407,411 ---- CaretHeight CaretWidth 0 hWnd call CreateCaret drop CaretPos.top CaretPos.left call SetCaretPos drop ! ShowCaret: self true to cursor-on? ;M *************** *** 431,437 **** ; ! : SetCaretPosition ( -- ) \ needs dc, also sets an update rectangle to end of line ! \ X Y ColRow>xy ScrollAdjust ! SelEndX SelEndY ScrollAdjust \ as long as SetSelectionStart is done first dup VertLine + width swap SetRect: CaretPos cursor-on? IF CaretPos.top CaretPos.left call SetCaretPos drop THEN --- 434,439 ---- ; ! : SetCaretPosition ( X Y -- ) \ needs dc, also sets an update rectangle to end of line ! over to X ColRow>xy ScrollAdjust dup VertLine + width swap SetRect: CaretPos cursor-on? IF CaretPos.top CaretPos.left call SetCaretPos drop THEN *************** *** 446,450 **** : SCP ( -- ) \ SetCommandPosition X Y SetSelectionStart ! SetCaretPosition ; --- 448,452 ---- : SCP ( -- ) \ SetCommandPosition X Y SetSelectionStart ! X Y SetCaretPosition ; *************** *** 663,667 **** GetColRow 2dup SetSelectionStart over swap OnCommandLine ! IF to X SetCaretPosition true ELSE drop false THEN to Editing --- 665,669 ---- GetColRow 2dup SetSelectionStart over swap OnCommandLine ! IF Y SetCaretPosition true ELSE drop false THEN to Editing *************** *** 799,803 **** IF SPCS X r@ - 2r> + InsertText: self ELSE 2r> 2drop THEN UpdateScrollRange: self ! scp XYAddress to XYA ;M --- 801,805 ---- IF SPCS X r@ - 2r> + InsertText: self ELSE 2r> 2drop THEN UpdateScrollRange: self ! SCP XYAddress to XYA ;M *************** *** 908,912 **** Y UpdateLine: self CommandStart Y RowAddress + to CommandLine ! scp ELSE StartAfterCommandLine --- 910,914 ---- Y UpdateLine: self CommandStart Y RowAddress + to CommandLine ! SCP ELSE StartAfterCommandLine *************** *** 982,1015 **** ;M - :M CaretLeft: ( -- ) - X CommandStart > - IF - -1 +to X - HideCaret: self - Deselect: self - false CaretPos InvalidateRect: self \ or to end of command line or one char - SCP - true to editing - ShowCaret: self - AutoHScroll: self - ELSE beep - THEN - ;M - - :M CaretRight: ( -- ) - X CommandEnd < - IF - 1 +to X - HideCaret: self - Deselect: self - false CaretPos InvalidateRect: self \ or to end of command line or one char - SCP - true to editing - ShowCaret: self - AutoHScroll: self - ELSE beep - THEN - ;M - int ClipboardHandle int ClipboardAddress --- 984,987 ---- *************** *** 1085,1167 **** ;M ! :M ShiftHome: ( -- ) Editing ! IF CommandStart ELSE StartAfterCommandLine SameRowAsCommandLine and ! IF CommandEnd ELSE 0 THEN THEN ! SelStartRow Select: self ;M ! :M ShiftEnd: ( -- ) Editing ! IF CommandEnd ELSE StartBeforeCommandLine SameRowAsCommandLine and ! IF CommandStart ELSE SelStartRow RowLength THEN THEN ! SelStartRow Select: self ;M ! :M CtrlShiftHome: ( -- ) Editing ! IF CommandStart Y ELSE StartAfterCommandLine IF CommandEnd Y ELSE 0 0 THEN THEN Select: self ;M ! :M CtrlShiftEnd: ( -- ) Editing ! IF CommandEnd Y ELSE StartBeforeCommandLine IF CommandStart Y ELSE LastColRow: self THEN THEN Select: self ;M ! :M ShiftUp: ( -- ) Editing ! IF CommandStart Y ELSE ! SelStartCol SelEndRow 1- 0max RowLength min SelEndRow 1- dup 0< IF 2drop 0 0 THEN StartAfterCommandLine SelEndRow 1- 0max Y = and IF swap CommandEnd max swap THEN THEN Select: self ;M ! ! :M ShiftDown: ( -- ) Editing ! IF CommandEnd Y ELSE ! SelStartCol SelEndRow 1+ RowLength min SelEndRow 1+ 2dup LastColRow: self d> IF 2drop LastColRow: self THEN StartBeforeCommandLine SelEndRow 1+ lines 1- min Y = and IF swap CommandStart min swap THEN ! StartBeforeCommandLine SameRowAsCommandLine and IF CommandStart Y THEN THEN Select: self ;M ! :M ShiftLeft: ( -- ) Editing ! IF SelEndCol CommandStart <= IF beep exitm THEN SelEndCol 1- SelEndRow ELSE ! SelEndCol SelEndRow d0= IF exitm THEN \ SelEndCol ! SelEndCol SelEndRow CommandEnd Y d= IF exitm THEN SelEndCol IF SelEndCol 1- SelEndRow ELSE SelEndRow 1- dup RowLength swap ! THEN THEN ! Select: self ;M ! :M ShiftRight: ( -- ) Editing ! IF SelEndCol CommandEnd >= IF beep exitm THEN SelEndCol 1+ SelEndRow ELSE ! SelEndCol SelEndRow CommandStart Y d= IF exitm THEN SelEndCol SelEndRow RowLength < IF SelEndCol 1+ SelEndRow ! ELSE lines 1- SelEndRow = IF exitm THEN 0 SelEndRow 1+ ! THEN THEN ! Select: self ;M :M SelectAll: ( -- ) \ up till the command line --- 1057,1258 ---- ;M ! : MoveCaret ( x -- ) ! to X ! HideCaret: self ! SCP ! true to editing ! ShowCaret: self ! AutoHScroll: self ! ; ! ! : MoveCaretAndDeselect ( x -- ) ! Deselect: self ! false CaretPos InvalidateRect: self \ or to end of command line or one char ! MoveCaret ! ; ! ! : ?MoveCaretAndDeselect ( x f -- ) IF MoveCaretAndDeselect ELSE beep drop THEN ; ! ! :M CaretLeft: ( -- ) X 1- X CommandStart > ?MoveCaretAndDeselect ;M \ move caret one character to left, deselects any text ! ! :M CaretRight: ( -- ) X 1+ X CommandEnd < ?MoveCaretAndDeselect ;M \ move caret one character to right, deselects any text ! ! :M Home: ( -- ) CommandStart X CommandStart > ?MoveCaretAndDeselect ;M \ move caret to beginning of line, deselects any text ! ! :M End: ( -- ) CommandEnd X CommandEnd < ?MoveCaretAndDeselect ;M \ move caret to end of line, deselects any text ! ! \ :M CtrlHome: ( -- ) ;M \ ( not defined, will scroll parent window horzontally ) ! ! \ :M CtrlEnd: ( -- ) ;M \ ( not defined, will scroll parent window horzontally ) ! ! : BeepEditEnd ( -- f ) SelEndCol SelEndRow CommandEnd Y d= ; \ editing at end of command line ! : BeepEditStart ( -- f ) SelEndCol SelEndRow CommandStart Y d= ; \ editing at start of command line ! ! : BeepEndCommandLine ( -- f ) SelEndCol SelEndRow CommandEnd Y d= increasing not and ; \ reached end of command line ! : BeepStartCommandLine ( -- f ) SelEndCol SelEndRow CommandStart Y d= increasing and ; \ reached start of command line ! ! : BeepLineUp ( -- f ) SelEndCol 0= increasing and ; \ start of any line, increasing ! : BeepLineDown ( -- f ) SelEndCol 0= increasing not and ; \ start of any line, decreasing ! ! : BeepStartText ( -- f ) SelEndCol SelEndRow d0= ; \ reached start of text ! : BeepEndText ( -- f ) SelEndCol SelEndRow RowLength = SelEndRow LastRow = and ; \ reached end of text ! ! :M ShiftHome: ( -- ) \ decrease the selection to beginning of line Editing ! IF BeepEditStart IF beep exitm THEN CommandStart Y 2dup SetCaretPosition ELSE + BeepEndCommandLine BeepLineDown or IF beep exitm THEN StartAfterCommandLine SameRowAsCommandLine and ! IF CommandEnd Y ELSE 0 SelStartRow THEN ! false to increasing THEN ! Select: self ;M ! :M ShiftEnd: ( -- ) \ increase the selection to end of line Editing ! IF BeepEditEnd IF beep exitm THEN CommandEnd Y 2dup SetCaretPosition ELSE + BeepStartCommandLine BeepLineUp BeepEndText or or IF beep exitm THEN StartBeforeCommandLine SameRowAsCommandLine and ! IF CommandStart Y ! ELSE SelStartRow LastRow = IF LastColRow: self ELSE 0 SelStartRow 1+ THEN ! THEN ! true to increasing THEN ! Select: self ;M ! :M CtrlShiftHome: ( -- ) \ decrease the selection to beginning of text Editing ! IF BeepEditStart IF beep exitm THEN CommandStart Y 2dup SetCaretPosition ELSE + BeepEndCommandLine BeepStartText or IF beep exitm THEN StartAfterCommandLine IF CommandEnd Y ELSE 0 0 THEN + false to increasing THEN Select: self ;M ! :M CtrlShiftEnd: ( -- ) \ increase the selection to end of text Editing ! IF BeepEditEnd IF beep exitm THEN CommandEnd Y 2dup SetCaretPosition ELSE + BeepStartCommandLine BeepEndText or IF beep exitm THEN StartBeforeCommandLine IF CommandStart Y ELSE LastColRow: self THEN + true to increasing THEN Select: self ;M ! :M ShiftUp: ( -- ) \ decrease the selection by one line Editing ! IF BeepEditStart IF beep exitm THEN CommandStart Y 2dup SetCaretPosition ELSE ! BeepEndCommandLine BeepStartText or IF beep exitm THEN ! SelStartCol SelEndRow 1- 0max RowLength min SelEndRow 1- ! dup 0< IF 2drop 0 0 THEN StartAfterCommandLine SelEndRow 1- 0max Y = and IF swap CommandEnd max swap THEN + StartAfterCommandLine SelEndRow Y = and IF 2drop CommandEnd Y THEN + false to increasing THEN Select: self ;M ! ! :M ShiftDown: ( -- ) \ increase the selection by one line Editing ! IF BeepEditEnd IF beep exitm THEN CommandEnd Y 2dup SetCaretPosition ELSE ! BeepStartCommandLine BeepEndText or IF beep exitm THEN ! SelStartCol SelEndRow 1+ RowLength min SelEndRow 1+ ! 2dup LastColRow: self d> IF 2drop LastColRow: self THEN StartBeforeCommandLine SelEndRow 1+ lines 1- min Y = and IF swap CommandStart min swap THEN ! StartBeforeCommandLine SelEndRow Y = and IF 2drop CommandStart Y THEN ! true to increasing THEN Select: self ;M ! :M CtrlRight: ( -- ) \ move the caret to the beginning of the next word ! XYAddress dup CommandEnd X - 32 scan 32 skip drop swap - ! X + X CommandEnd < ?MoveCaretAndDeselect ! ;M ! ! :M CtrlLeft: ( -- ) \ move the caret to the beginning of the previous word ! XYAddress 1- dup X CommandStart - 32 -skip 32 -scan drop - ! X swap - X CommandStart > ?MoveCaretAndDeselect ! ;M ! ! :M CtrlShiftLeft: ( -- ) \ decrease the selection to the beginning of the previous word Editing ! IF ! BeepEditStart IF beep exitm THEN ! Y RowAddress SelEndCol + 1- dup SelEndCol CommandStart - 32 -skip 32 -scan drop swap - ! SelEndCol + to SelEndColNew SelEndRow to SelEndRowNew ! SelEndColNew SelEndRowNew SetCaretPosition ELSE ! BeepStartText BeepEndCommandLine or IF beep exitm THEN ! SelEndCol ! IF SelEndCol SelEndRow ! ELSE SelEndRow 1- RowLength SelEndRow 1- ! THEN to SelEndRowNew to SelEndColNew ! SelEndRowNew RowAddress SelEndColNew + 1- dup SelEndColNew 32 -skip 32 -scan drop swap - ! +to SelEndColNew ! ! SelEndRow Y = SelEndColNew CommandStart CommandEnd within and SelEndCol ( 0= not ) and ! SelEndRow Y = SelEndColNew CommandEnd < and SelEndCol CommandEnd > and or ! SelEndRow Y 1+ = SelEndCol 0= and or ! IF CommandEnd SelEndColNew max to SelEndColNew THEN ! false to increasing ! THEN ! SelEndColNew SelEndRowNew Select: self ! ;M ! ! :M CtrlShiftRight: ( -- ) \ increase the selection to the beginning of the next word ! Editing ! IF ! BeepEditEnd IF beep exitm THEN ! Y RowAddress SelEndCol + dup CommandEnd SelEndCol - 32 scan 32 skip drop swap - ! SelEndCol + to SelEndColNew SelEndRow to SelEndRowNew ! SelEndColNew SelEndRowNew SetCaretPosition ! ELSE ! BeepEndText BeepStartCommandLine or IF beep exitm THEN ! SelEndRow RowAddress SelEndCol + dup SelEndRow Rowlength SelEndCol - 32 scan 32 skip drop swap - \ next word ! SelEndCol + to SelEndColNew SelEndRow to SelEndRowNew ! ! SelEndRow Y = ! SelEndCol CommandStart < SelEndColNew CommandStart > and ! SelEndCol CommandEnd > SelEndColNew CommandEnd < and or and ! IF SelEndColNew CommandStart min to SelEndColNew THEN ! ! SelEndColNew SelEndRow RowLength >= SelEndRow LastRow <> and IF 0 to SelEndColNew 1 +to SelEndRowNew THEN ! true to increasing ! THEN ! SelEndColNew SelEndRowNew Select: self ! ;M ! ! :M ShiftLeft: ( -- ) \ decrease the selection by one character ! Editing ! IF BeepEditStart IF beep exitm THEN SelEndCol 1- SelEndRow 2dup SetCaretPosition ! ELSE ! BeepStartText BeepEndCommandLine or IF beep exitm THEN ! SelEndCol IF SelEndCol 1- SelEndRow ELSE SelEndRow 1- dup RowLength swap ! THEN false to increasing THEN ! Select: self ! ;M ! :M ShiftRight: ( -- ) \ increase the selection by one character Editing ! IF BeepEditEnd IF beep exitm THEN SelEndCol 1+ SelEndRow 2dup SetCaretPosition ELSE ! BeepStartCommandLine BeepEndText or IF beep exitm THEN ! SelEndCol SelEndRow RowLength < IF SelEndCol 1+ SelEndRow ! ELSE 0 SelEndRow 1+ ! THEN true to increasing THEN ! Select: self ! ;M :M SelectAll: ( -- ) \ up till the command line *************** *** 1202,1213 **** :M HandleKeyDown: ( n -- ) CASE ! VK_HOME of ?shift IF 0 0 ?control IF CtrlShiftHome: self ELSE ShiftHome: self THEN ELSE SB_TOP WM_HSCROLL THEN endof ! VK_END of ?shift IF 0 0 ?control IF CtrlShiftEnd: self ELSE ShiftEnd: self THEN ELSE SB_BOTTOM WM_HSCROLL THEN endof VK_INSERT of 0 0 endof VK_DELETE of DeleteForward: self 0 0 endof VK_PRIOR of ?shift IF SB_TOP ELSE SB_PAGEUP THEN WM_VSCROLL endof VK_NEXT of ?shift IF SB_BOTTOM ELSE SB_PAGEDOWN THEN WM_VSCROLL endof ! VK_LEFT of ?Shift IF ShiftLeft: self ELSE CaretLeft: self THEN 0 0 endof ! VK_RIGHT of ?Shift IF ShiftRight: self ELSE CaretRight: self THEN 0 0 endof VK_UP of ?Shift IF ShiftUp: self ELSE NextCommand 2dup CommandString compare IF DeleteCommand: self asciiz InsertTextOnCommandLine: self ELSE 2drop beep THEN THEN 0 0 endof VK_DOWN of ?Shift IF ShiftDown: self ELSE PrevCommand dup IF DeleteCommand: self asciiz InsertTextOnCommandLine: self ELSE NextCommand 4drop beep THEN THEN 0 0 endof --- 1293,1304 ---- :M HandleKeyDown: ( n -- ) CASE ! VK_HOME of 0 0 ?shift IF ?control IF CtrlShiftHome: self ELSE ShiftHome: self THEN ELSE ?control IF 2drop SB_TOP WM_HSCROLL ELSE Home: self THEN THEN endof ! VK_END of 0 0 ?shift IF ?control IF CtrlShiftEnd: self ELSE ShiftEnd: self THEN ELSE ?control IF 2drop SB_BOTTOM WM_HSCROLL ELSE End: self THEN THEN endof VK_INSERT of 0 0 endof VK_DELETE of DeleteForward: self 0 0 endof VK_PRIOR of ?shift IF SB_TOP ELSE SB_PAGEUP THEN WM_VSCROLL endof VK_NEXT of ?shift IF SB_BOTTOM ELSE SB_PAGEDOWN THEN WM_VSCROLL endof ! VK_LEFT of ?Shift IF ?control IF CtrlShiftLeft: self ELSE ShiftLeft: self THEN ELSE ?control IF CtrlLeft: self ELSE CaretLeft: self THEN THEN 0 0 endof ! VK_RIGHT of ?Shift IF ?control IF CtrlShiftRight: self ELSE ShiftRight: self THEN ELSE ?control IF CtrlRight: self ELSE CaretRight: self THEN THEN 0 0 endof VK_UP of ?Shift IF ShiftUp: self ELSE NextCommand 2dup CommandString compare IF DeleteCommand: self asciiz InsertTextOnCommandLine: self ELSE 2drop beep THEN THEN 0 0 endof VK_DOWN of ?Shift IF ShiftDown: self ELSE PrevCommand dup IF DeleteCommand: self asciiz InsertTextOnCommandLine: self ELSE NextCommand 4drop beep THEN THEN 0 0 endof |
From: Jos v.d.V. <jo...@us...> - 2014-05-13 13:25:33
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv6664 Modified Files: SEE.F Log Message: Jos: Adapted the .definition-class for fvalue. A simular trick does not work for fvariable Index: SEE.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/SEE.F,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** SEE.F 13 May 2014 10:35:23 -0000 1.15 --- SEE.F 13 May 2014 13:25:31 -0000 1.16 *************** *** 235,238 **** --- 235,241 ---- dup cell+ ? ." VALUE " .name ; + : .FVALUE ( cfa -- ) + dup execute fe. ." FVALUE " .name ; + : .CLASS ( cfa -- ) ." :CLASS " .name ; *************** *** 282,285 **** --- 285,291 ---- \ Classify a word based on its CFA 09SEP83HHL + 0e fvalue dofvalue + + : .definition-class ( cfa cfa -- ) @ case *************** *** 291,294 **** --- 297,301 ---- dodefer of .defer endof dovalue of .value endof + ['] dofvalue @ of .fvalue endof doClass of .class endof do|Class of .class endof |
From: George H. <geo...@us...> - 2014-05-13 10:35:25
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28126 Modified Files: SEE.F Log Message: added handling of fvalue to see plus clean up before bye in newconsole Index: SEE.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/SEE.F,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** SEE.F 20 Nov 2013 12:28:36 -0000 1.14 --- SEE.F 13 May 2014 10:35:23 -0000 1.15 *************** *** 60,81 **** over code-origin code-here within or IF DUP>R @ ! CASE DOVALUE OF R@ .NAME ENDOF ! DOVALUE! OF R@ ." TO " 2 CELLS - .NAME ENDOF ! DOVALUE+! OF R@ ." +TO " 3 CELLS - .NAME ENDOF ! DOLOCAL OF R@ .NAME ENDOF ! DOLOCAL! OF R@ ." TO " 2 CELLS - .NAME ENDOF ! DOLOCAL+! OF R@ ." +TO " 3 CELLS - .NAME ENDOF ! DO2VALUE! OF R@ ." 2TO " 2 CELLS - .NAME ENDOF ! DO2VALUE+! OF R@ ." 2+TO " 3 CELLS - .NAME ENDOF ! (IV@) OF R@ ." I:" .NAME ENDOF ! (IV!) OF R@ ." TO-I: " 2 CELLS - .NAME ENDOF ! (IV+!) OF R@ ." +TO-I: " 3 CELLS - .NAME ENDOF ! \ (IV[]@) OF R@ ." I[]:" .NAME ENDOF ! \ (IV[]!) OF R@ ." TO-I[]: " 2 CELLS - .NAME ENDOF ! \ (IV[]+!) OF R@ ." +TO-I[]: " 3 CELLS - .NAME ENDOF ! DOCALL OF R@ ." CALL " .proc-name ENDOF \ arm ! \+ .M0NAME M0CFA OF R@ ." M0:" .M0NAME ENDOF ! \+ .M1NAME M1CFA OF R@ ." M1:" .M1NAME ENDOF ! DOOBJ OF R@ ." O:" .NAME ENDOF \ bug fix suggested by "be...@in..." R@ 2 cells appInst + U> --- 60,80 ---- over code-origin code-here within or IF DUP>R @ ! CASE DOVALUE OF R@ .NAME ENDOF ! DOVALUE! OF R@ ." TO " 2 CELLS - .NAME ENDOF ! DOVALUE+! OF R@ ." +TO " 3 CELLS - .NAME ENDOF ! \+ DOFVALUE! DOFVALUE! OF R@ ." FTO " 2 CELLS - .NAME ENDOF ! \+ DOFVALUE+! DOFVALUE+! OF R@ ." F+TO " 3 CELLS - .NAME ENDOF ! DOLOCAL OF R@ .NAME ENDOF ! DOLOCAL! OF R@ ." TO " 2 CELLS - .NAME ENDOF ! DOLOCAL+! OF R@ ." +TO " 3 CELLS - .NAME ENDOF ! DO2VALUE! OF R@ ." 2TO " 2 CELLS - .NAME ENDOF ! DO2VALUE+! OF R@ ." 2+TO " 3 CELLS - .NAME ENDOF ! (IV@) OF R@ ." I:" .NAME ENDOF ! (IV!) OF R@ ." TO-I: " 2 CELLS - .NAME ENDOF ! (IV+!) OF R@ ." +TO-I: " 3 CELLS - .NAME ENDOF ! DOCALL OF R@ ." CALL " .proc-name ENDOF \ arm ! \+ .M0NAME M0CFA OF R@ ." M0:" .M0NAME ENDOF ! \+ .M1NAME M1CFA OF R@ ." M1:" .M1NAME ENDOF ! DOOBJ OF R@ ." O:" .NAME ENDOF \ bug fix suggested by "be...@in..." R@ 2 cells appInst + U> |
From: Jos v.d.V. <jo...@us...> - 2014-05-12 11:31:28
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv2073 Modified Files: MultiTaskingClass.f Log Message: Jos: Switching the speed-test to floats after a remark from Bruno Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** MultiTaskingClass.f 9 May 2014 21:46:43 -0000 1.6 --- MultiTaskingClass.f 12 May 2014 11:31:25 -0000 1.7 *************** *** 1322,1326 **** \ (( 27-4-2014 New results - ExecuteTest started for 500.000E3 in #loops in TestTask... Elapsed time: 00:00:02.494 --- 1322,1325 ---- *************** *** 1387,1406 **** 0e fvalue ft0 ! : value-ft0 ms@ 0e fto ft0 begin 200e ft0 f+ fto ft0 ms@ over 400 + > ! until drop ; TIMER-RESET ! value-ft0 ft0 f>s 3 * .s value #counts \ To get a runtime for about 8 - 20 seconds ! wTasks myTasks ! : my-task ( - ) \ Increments a value at PAD ! Below 0 pad ! #counts 0 ! do 1 pad +! ! loop ; --- 1386,1405 ---- 0e fvalue ft0 ! : value-ft0 ( f: - #counts ) ms@ 0e fto ft0 begin 200e ft0 f+ fto ft0 ms@ over 400 + > ! until drop ft0 ; TIMER-RESET ! value-ft0 cr f.s fvalue #counts \ To get a runtime for about 8 - 20 seconds wTasks myTasks ! : my-task ( - ) \ Increments a floating point value at PAD ! Below 0e0 pad f! ! begin pad f@ #counts f< ! while 1e pad f+! ! repeat ; *************** *** 1410,1414 **** cr ." All tasks ended." MS@ START-TIME - space .ELAPSED space ! cr ." Total counts: " #counts s>f GetThreadcount: myTasks s>f f* fdup e. s>f 1000e f/ cr ." counts / second: " f/ fdup FE. first-result f0= --- 1409,1413 ---- cr ." All tasks ended." MS@ START-TIME - space .ELAPSED space ! cr ." Total counts: " #counts GetThreadcount: myTasks s>f f* fdup e. s>f 1000e f/ cr ." counts / second: " f/ fdup FE. first-result f0= *************** *** 1456,1460 **** .elapsed-results abort \s )) ! (( On my iCore7: ImpactThreads: Finding the overall speed for --- 1455,1459 ---- .elapsed-results abort \s )) ! (( May 12th, 2014, On my iCore7: ImpactThreads: Finding the overall speed for *************** *** 1463,1489 **** Main task is waiting for 1 task ! All tasks ended. Elapsed time: 00:00:07.158 ! Total counts: 1.50083E9 ! counts / second: 209.672E6 Main task is waiting for 4 tasks ! All tasks ended. Elapsed time: 00:00:08.988 ! Total counts: 6.00334E9 ! counts / second: 667.928E6 3.18558E0 Times faster Main task is waiting for 7 tasks ! All tasks ended. Elapsed time: 00:00:12.677 ! Total counts: 1.05058E10 ! counts / second: 828.733E6 3.95251E0 Times faster Main task is waiting for 8 tasks ! All tasks ended. Elapsed time: 00:00:14.406 ! Total counts: 1.20067E10 ! counts / second: 833.450E6 3.97501E0 Times faster Main task is waiting for 12 tasks ! All tasks ended. Elapsed time: 00:00:21.912 ! Total counts: 1.80100E10 ! counts / second: 821.925E6 3.92004E0 Times faster End of demo. )) --- 1462,1488 ---- Main task is waiting for 1 task ! All tasks ended. Elapsed time: 00:00:07.872 ! Total counts: 5.01246E8 ! counts / second: 63.6745E6 Main task is waiting for 4 tasks ! All tasks ended. Elapsed time: 00:00:10.282 ! Total counts: 2.00498E9 ! counts / second: 194.999E6 3.06244E0 Times faster Main task is waiting for 7 tasks ! All tasks ended. Elapsed time: 00:00:13.665 ! Total counts: 3.50872E9 ! counts / second: 256.786E6 4.03279E0 Times faster Main task is waiting for 8 tasks ! All tasks ended. Elapsed time: 00:00:15.501 ! Total counts: 4.00997E9 ! counts / second: 258.708E6 4.06297E0 Times faster Main task is waiting for 12 tasks ! All tasks ended. Elapsed time: 00:00:23.590 ! Total counts: 6.01495E9 ! counts / second: 254.990E6 4.00458E0 Times faster End of demo. )) |
From: Jos v.d.V. <jo...@us...> - 2014-05-09 21:46:45
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1438 Modified Files: MultiTaskingClass.f Log Message: Jos: 0 proc GetCurrentThread and 2 proc SetThreadPriority are not needed. Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** MultiTaskingClass.f 9 May 2014 12:52:34 -0000 1.5 --- MultiTaskingClass.f 9 May 2014 21:46:43 -0000 1.6 *************** *** 103,109 **** next c; - 0 proc GetCurrentThread - 2 proc SetThreadPriority - 256 value stacksize --- 103,106 ---- |
From: Jos v.d.V. <jo...@us...> - 2014-05-09 12:52:37
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv24604 Modified Files: MultiTaskingClass.f Log Message: Jos: improving documentation Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MultiTaskingClass.f 2 May 2014 11:09:37 -0000 1.4 --- MultiTaskingClass.f 9 May 2014 12:52:34 -0000 1.5 *************** *** 199,206 **** \ *| >JobStkLast | -- A stack for a job to be executed.| \ *| >StartTic | -- A double containing the StartTic when a job was started.| ! \ *| >EndTic | -- A double containing the >EndTic when a job was complete.| \ *| >CfaDone | -- Contains the previous Cfa of a job entry.| \ *| >StartTime | -- A structrure containing the StartTime when a job was started.| ! \ *| >EndTime | -- A structrure containing the EndTime when a job was complete.| \ *| >Schedule | -- Reserved to hold a Schedule.| \ *| >range | -- 2 cells to hold the start- end-index for a do...loop. used by the class iTasks.| --- 199,206 ---- \ *| >JobStkLast | -- A stack for a job to be executed.| \ *| >StartTic | -- A double containing the StartTic when a job was started.| ! \ *| >EndTic | -- A double containing the >EndTic when a job became complete.| \ *| >CfaDone | -- Contains the previous Cfa of a job entry.| \ *| >StartTime | -- A structrure containing the StartTime when a job was started.| ! \ *| >EndTime | -- A structrure containing the EndTime when a job became complete.| \ *| >Schedule | -- Reserved to hold a Schedule.| \ *| >range | -- 2 cells to hold the start- end-index for a do...loop. used by the class iTasks.| *************** *** 469,473 **** :M Set#Jobs: ( n -- ) ! \ *G Specify the maximum number of jobs. Set it before starting the object when needed to #Jobs ;M --- 469,473 ---- :M Set#Jobs: ( n -- ) ! \ *G Specify the maximum number of jobs. Set it before starting the object when needed. to #Jobs ;M *************** *** 1072,1076 **** :M GetRange: ( -- High Low ) ! \ *G Returns the range to be used in a do...loop of the running job. MainThread? if TotalRange 2@ --- 1072,1076 ---- :M GetRange: ( -- High Low ) ! \ *G Returns the range to be used before a do...loop of the running job. MainThread? if TotalRange 2@ *************** *** 1091,1095 **** :M .Ranges: \ *G Show the ranges of the jobs used by the object. ! \ ** Note: Job entries can be overwritten. cr cr ." Ranges:" cr ." Entry # low high" --- 1091,1095 ---- :M .Ranges: \ *G Show the ranges of the jobs used by the object. ! \ ** Note: Job entries can be overwritten when they are complete. cr cr ." Ranges:" cr ." Entry # low high" |
From: Jos v.d.V. <jo...@us...> - 2014-05-03 22:29:29
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv24329 Modified Files: BLOCK.F Log Message: Jos: Added Block numbers Index: BLOCK.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/BLOCK.F,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** BLOCK.F 3 May 2014 14:57:27 -0000 1.9 --- BLOCK.F 3 May 2014 22:29:27 -0000 1.10 *************** *** 370,374 **** : List-All ( -- ) \ W32F Block extra \ *G To list all blocks in the current blockfile. ! #blocks 0 do i list loop ; \ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- 370,374 ---- : List-All ( -- ) \ W32F Block extra \ *G To list all blocks in the current blockfile. ! #blocks 0 do cr i dup ." \ Block # " . list loop ; \ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
From: Jos v.d.V. <jo...@us...> - 2014-05-03 14:57:29
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv18240 Modified Files: BLOCK.F Log Message: Jos: Added ListAll Index: BLOCK.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/BLOCK.F,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** BLOCK.F 26 Feb 2012 16:43:59 -0000 1.8 --- BLOCK.F 3 May 2014 14:57:27 -0000 1.9 *************** *** 368,371 **** --- 368,375 ---- blockhandle file-size drop b/buf um/mod nip ; + : List-All ( -- ) \ W32F Block extra + \ *G To list all blocks in the current blockfile. + #blocks 0 do i list loop ; + \ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \ initialization of the block system |
From: Jos v.d.V. <jo...@us...> - 2014-05-02 11:09:39
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8575 Modified Files: MultiTaskingClass.f Log Message: Jos: typ's Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MultiTaskingClass.f 1 May 2014 21:31:19 -0000 1.3 --- MultiTaskingClass.f 2 May 2014 11:09:37 -0000 1.4 *************** *** 197,201 **** \ *| >JobCFA | -- Contains the CFA to be executed by a job.| \ *| >JobStkDepth | -- The number of stack items for a job.| ! \ *| >JobStkLast ??? | -- A stack for a job to be executed.| \ *| >StartTic | -- A double containing the StartTic when a job was started.| \ *| >EndTic | -- A double containing the >EndTic when a job was complete.| --- 197,201 ---- \ *| >JobCFA | -- Contains the CFA to be executed by a job.| \ *| >JobStkDepth | -- The number of stack items for a job.| ! \ *| >JobStkLast | -- A stack for a job to be executed.| \ *| >StartTic | -- A double containing the StartTic when a job was started.| \ *| >EndTic | -- A double containing the >EndTic when a job was complete.| *************** *** 886,890 **** \ *G Start all queues and threads in an object. \ ** All started threads will get in an alertable state and will ! \ ** be ready to receive ACP's that use an entry a JobBlock of an object. #threads 0 do ['] AlertableState i StartQueue: Self --- 886,890 ---- \ *G Start all queues and threads in an object. \ ** All started threads will get in an alertable state and will ! \ ** be ready to receive APC's that use an entry a JobBlock of an object. #threads 0 do ['] AlertableState i StartQueue: Self |
From: Jos v.d.V. <jo...@us...> - 2014-05-01 21:31:22
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv5434 Modified Files: MultiTaskingClass.f Log Message: Jos: Total makeover. See its history for the details. Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** MultiTaskingClass.f 23 Sep 2012 13:45:15 -0000 1.2 --- MultiTaskingClass.f 1 May 2014 21:31:19 -0000 1.3 *************** *** 12,58 **** \ ** Breaking up is possible at the definition level or at the program level by the 2 classes \biTask\d and \bwTask\d. \n \ ** Then the pieces are submitted and simultaneously executed in a number of tasks. \n ! \ ** Tasks are clustered in an object for easy access. \ *P Objects defined with \biTask\d can be used as soon as ONE definition should be executed in a parallel way \ ** and the definition uses a do...loop. \n ! \ ** The method \iParallel:\d divides, distributes and submits for execution the specified cfa over a number of tasks. \n ! \ ** A started task can pickup its range for the do...loop part by using the method \iGetTaskRange:\d \n ! \ ** The initialization of the objects defined with iTask is automatic. \n ! \ ** It is possible to change the number of simultaneous tasks before they run. [...2472 lines suppressed...] : TestLock ! 4 SetThreadcount: ParallelTasks \ Can be more or less than the number of available hardware threads ! 0 Set#Jobs: ParallelTasks \ 0 will set the #Jobs to the required minimum at the start depending on the number of threads + Start: ParallelTasks \ Starting the 2 objects + Start: SeqTask + Analyze: ParallelTasks ! \ Range To run parallel On the targeted object ! 20 0 ['] Parallel-tasks Parallel: ParallelTasks \ Start Parallel-tasks which starts SequentialWord ! cr .JobAnalysis: ParallelTasks ! ; ! ! TestLock ! abort \s )) \s + \ ** \s \ *Z |
From: George H. <geo...@us...> - 2014-04-16 17:57:08
|
Update of /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8381/apps/Win32ForthIDE/Forms Modified Files: ChooseIcon.ff ChooseIcon.ff_code ChooseIcon.frm FORMPROPERTY.ff FORMPROPERTY.frm Log Message: Added code to form designer so code can be added to On_Done method corrected a bug in TrayWindow, added Required and minor mods and corrections Index: ChooseIcon.ff_code =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms/ChooseIcon.ff_code,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsIXEaVw and /tmp/cvs0unRET differ Index: FORMPROPERTY.ff =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms/FORMPROPERTY.ff,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvsL70jKx and /tmp/cvsFMBAvU differ Index: ChooseIcon.ff =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms/ChooseIcon.ff,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsSUckvB and /tmp/cvszOt7hY differ Index: ChooseIcon.frm =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms/ChooseIcon.frm,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ChooseIcon.frm 1 Feb 2010 01:36:25 -0000 1.1 --- ChooseIcon.frm 16 Apr 2014 17:57:05 -0000 1.2 *************** *** 1,9 **** \ CHOOSEICON.FRM ! \- textbox needs excontrols.f FileOpenDialog GetIconFileDlg "Select Icon File" "Icon Files|*.ico|" create iconfile 0 , max-path allot ! false value continue? \ continue compiling? --- 1,9 ---- \ CHOOSEICON.FRM ! \- textbox Require excontrols.f FileOpenDialog GetIconFileDlg "Select Icon File" "Icon Files|*.ico|" create iconfile 0 , max-path allot ! false value continue? \ continue compiling? *************** *** 18,24 **** TextBox txtIconFile PushButton btnChoose - PushButton btnClear PushButton btnContinue PushButton btnCancel --- 18,24 ---- TextBox txtIconFile PushButton btnChoose PushButton btnContinue PushButton btnCancel + PushButton btnClear *************** *** 30,37 **** ; - : On_btnClear ( h m w l -- ) \ what to do when btnClear control has been clicked - s" " SetText: txtIconFile - ; - : On_btnContinue ( h m w l -- ) \ what to do when btnContinue control has been clicked true to continue? --- 30,33 ---- *************** *** 45,55 **** ; : frmDefaultCommand ( h m w l id obj -- ) drop case GetID: btnChoose of On_btnChoose endof - GetID: btnClear of On_btnClear endof IDCONTINUE of On_btnContinue endof IDCANCEL of On_btnCancel endof endcase ; --- 41,55 ---- ; + : On_btnClear ( h m w l -- ) \ what to do when btnClear control has been clicked + s" " SetText: txtIconFile + ; + : frmDefaultCommand ( h m w l id obj -- ) drop case GetID: btnChoose of On_btnChoose endof IDCONTINUE of On_btnContinue endof IDCANCEL of On_btnCancel endof + GetID: btnClear of On_btnClear endof endcase ; *************** *** 65,69 **** :M WindowStyle: ( -- style ) ! WS_POPUPWINDOW WS_DLGFRAME or ;M --- 65,69 ---- :M WindowStyle: ( -- style ) ! WS_POPUPWINDOW WS_DLGFRAME or ;M *************** *** 73,80 **** ;M - :M SetParentWindow: ( hwndparent -- ) \ set owner window - to hWndParent - ;M - :M WindowTitle: ( -- ztitle ) z" Choose Icon" --- 73,76 ---- *************** *** 100,108 **** :M WM_COMMAND ( h m w l -- res ) ! over LOWORD ( ID ) self \ object address on stack ! WMCommand-Func ?dup \ must not be zero ! if execute ! else 2drop \ drop ID and object address ! then 0 ;M :M SetCommand: ( cfa -- ) \ set WMCommand function --- 96,107 ---- :M WM_COMMAND ( h m w l -- res ) ! dup 0= \ id is from a menu if lparam is zero ! if WM_COMMAND wm: super ! else over LOWORD ( ID ) self \ object address on stack ! WMCommand-Func ?dup \ must not be zero ! if execute ! else 2drop \ drop ID and object address ! then ! then 0 ;M :M SetCommand: ( cfa -- ) \ set WMCommand function *************** *** 111,114 **** --- 110,114 ---- :M On_Init: ( -- ) + On_Init: Super s" MS Sans Serif" SetFaceName: WinFont 8 Width: WinFont *************** *** 134,142 **** s" ..." SetText: btnChoose - self Start: btnClear - 320 18 27 16 Move: btnClear - Handle: Winfont SetFont: btnClear - s" C" SetText: btnClear - IDCONTINUE SetID: btnContinue self Start: btnContinue --- 134,137 ---- *************** *** 151,154 **** --- 146,154 ---- s" Cancel" SetText: btnCancel + self Start: btnClear + 320 18 27 16 Move: btnClear + Handle: Winfont SetFont: btnClear + s" C" SetText: btnClear + ParentWindow: self \ if this is a modal form disable parent if 0 ParentWindow: self Call EnableWindow drop then Index: FORMPROPERTY.frm =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Forms/FORMPROPERTY.frm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FORMPROPERTY.frm 15 Nov 2013 18:23:45 -0000 1.3 --- FORMPROPERTY.frm 16 Apr 2014 17:57:05 -0000 1.4 *************** *** 31,34 **** --- 31,35 ---- RadioButton radMdiDialogWindow RadioButton radTrayWindow + CheckBox chkmin *************** *** 36,40 **** ClassInit: super +dialoglist \ allow handling of dialog messages ! 709 to id \ set child id, changeable \ Insert your code here, e.g initialize variables, values etc. ;M --- 37,41 ---- ClassInit: super +dialoglist \ allow handling of dialog messages ! 706 to id \ set child id, changeable \ Insert your code here, e.g initialize variables, values etc. ;M *************** *** 74,77 **** --- 75,79 ---- :M On_Init: ( -- ) + On_Init: Super s" MS Sans Serif" SetFaceName: WinFont 8 Width: WinFont *************** *** 175,179 **** self Start: chkSave ! 25 136 121 14 Move: chkSave Handle: Winfont SetFont: chkSave s" Save screen location" SetText: chkSave --- 177,181 ---- self Start: chkSave ! 24 136 121 17 Move: chkSave Handle: Winfont SetFont: chkSave s" Save screen location" SetText: chkSave *************** *** 204,207 **** --- 206,214 ---- s" Tray Window" SetText: radTrayWindow + self Start: chkmin + 148 136 100 17 Move: chkmin + Handle: Winfont SetFont: chkmin + s" Min Box" SetText: chkmin + ;M |
From: Ориготранс <in...@or...> - 2014-02-24 09:00:34
|
- Срывают сроки доставки? - Необходимо что-то незначительно поменять в пути, а Вам выставляют огромный счет? - Считаете, что ставки завышены? - Сменить перевозчика не хватает духа? Выбор за Вами >> С уважением, Дмитрий Новиков 24.02.2014, 12:00:15 Отписаться от рассылки |
From: Jos v.d.V. <jo...@us...> - 2014-02-04 12:01:50
|
Update of /cvsroot/win32forth/win32forth/apps/Win32ForthIDE In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv13548 Modified Files: Main.f Log Message: Jos Updating the OpbjectPointer in the various tasks. Index: Main.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/apps/Win32ForthIDE/Main.f,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -d -r1.77 -r1.78 *** Main.f 9 Dec 2013 21:34:03 -0000 1.77 --- Main.f 4 Feb 2014 12:01:47 -0000 1.78 *************** *** 403,407 **** 1 proc CloseHandle ! : Below ( -- ) THREAD_PRIORITY_BELOW_NORMAL GetCurrentThread SetThreadPriority drop ; 0 :NoName ( -- ) Below InitVocBrowser: cTabWindow ; Task-Block Constant VocInitTask --- 403,411 ---- 1 proc CloseHandle ! 0 value OpbjectPointer ! ! : Below ( -- ) ! OpbjectPointer op ! ! THREAD_PRIORITY_BELOW_NORMAL GetCurrentThread SetThreadPriority drop ; 0 :NoName ( -- ) Below InitVocBrowser: cTabWindow ; Task-Block Constant VocInitTask *************** *** 409,413 **** --- 413,419 ---- 0 :NoName ( -- ) Below UpDateFiles: TheDirectory ; Task-Block Constant UpdateTask + : InitClassBrowsers ( -- ) + op @ to OpbjectPointer VocInitTask dup run-task 0= abort" Failed to start background Task" task>handle @ call CloseHandle drop |