2017年12月18日 星期一

孤獨的美國霸權


美國惡霸長期在全世界各地顛覆別的國家、濫殺各國平民,網路訊息讓全世界能夠透澈地見到無數美國暴行的事實。
2017年12月18日,埃及在聯合國安理會提議:『全世界拒絕承認美國惡霸總統穿婆為了製造世界動亂而強言耶路撒泠(Jerusalem)為以色列首都。』
耶路撒泠為回教與基督教信徒的共同聖城,美國惡霸總統這樣的惡毒宣告,當然造成了新的世界動亂,要死很多人,行為真是惡毒。
以色列算是一個憑著一本叫做聖經的小說,由西方國家安排,在二戰之後,強佔阿拉伯世界領土所建立的國家,從那時起,阿拉伯世界就永無寧日直到今天。
這次安理會投票的結果,是全世界14個現任理事國都反對美國,只有美國惡霸自己動用否決權,霸道地向全世界展示其丟臉的舉止,真夠孤獨。
這裡留下兩張現任美國駐聯合國大使舉著醜陋的手否決討論議案的歷史照片。




64 bits Forth era

Ching-Tang Tseng
Hamilton, New Zealand
19 Dec 2017
ilikeforth@gmail.com
http://forthfortnight.blogspot.com
----- To be continued
Another 64 bits Forth system is coming from Russia. I have to say thanks to the author as well. For the purpose of encouraging more 64 bits Forth system could be released out into public domain, I did another modified code demonstration for FasmForth64 system exclusively, file named is MORSE.F.  I run FasmForth64 sometimes on 64 bits W7.
Original “MORSE.F” code is coming from one discussion thread “Morse code demonstration for Rosetta code” posted in comp.lang.forth on Wednesday, February 10 2016. Earlier demo code maybe could be found by somebody from APPLE II Forth era.
There are some special features in FasmForth64.
FasmForth64 own the feature of calling ABI from OS W7. To do such a calling, all parameters transfer style is different from 32 bits environment. 64 bits uses CPU registers to transfer data, 32 bits uses stack to do the same thing. This feature is perfect enough even though this demo code is calling back to 32 bits .dll only.
After testing, I found FasmForth64 system is the same as Wina64, save system word “SAVE” does not working yet. Reason is the same as in Wina64.
Both Wina64 and FasmForth64 are supplied all assembly source code to us. In other words, transparency of these systems is 100%.
Attention! For the moment, FasmForth64 accept capital input only. In this demonstration, there are 2 values on the stack when I start FasmForth64, and system shows me error there.
You have to use command console to run FasmForth64.
S” MORSE.F” INCLUDED can load this demo file.
The main purpose of this code to be posted here is let you could hear the real sound output in Morse code.

*********************************************
\ PLAY MORSE CODE IN FASMFORTH64

: DLL_CREATE CREATE  PARSE-NAME FILE-BUFF ASCII-Z DLL_S
  DUP 0= ABORT" API UNAVAILABLE" , ;

: API_0: DLL_CREATE DOES> @ API_0 ;
: API_1: DLL_CREATE DOES> @ API_1 NIP ;
: API_2: DLL_CREATE DOES> @ API_2 NIP NIP ;
: API_3: DLL_CREATE DOES> @ API_3 NIP NIP NIP ;
: API_4: DLL_CREATE DOES> @ API_4 NIP NIP NIP NIP ;
: API_5: DLL_CREATE DOES> @ API_5 NIP NIP NIP NIP NIP ;

S" KERNEL32.DLL" DROP DLL_L CONSTANT KERNEL32DLL

KERNEL32DLL API_2: Beep Beep
: TONE ( DURATION FREQENCY -- )
  Beep DROP ;

\ MORSE DEMONSTATION BEGINS HERE
880 CONSTANT FREQ
 45 CONSTANT ADIT

: NS 4 * ;                                                               \ CONVERT ADIT TO DURATION VALUE, WITHOUT NANO SECOND MEANING

: DIT_DUR     ADIT NS ;
: DAH_DUR     ADIT 3 * NS ;
: WORDGAP     ADIT 5 * NS ;
: OFF_DUR     ADIT 2/ NS ;
: LETTERGAP   DAH_DUR ;

: SOUND   ( DURATION -- )   FREQ TONE ;
: SILENCE ( DURATION -- )      0 TONE ;

: MORSE-EMIT  ( CHAR -- )                            \ SEND MORSE AND ECHO TO CONSOLE
        DUP  BL =                                                  \ BL = BLANK = 32
        IF
             WORDGAP   SILENCE DROP
        ELSE
             PAD C!                                      \ WRITE CHAR TO BUFFER
             PAD 1 EVALUATE                  \ EVALUATE 1 CHARACTER
             LETTERGAP SILENCE          \ PAUSE FOR CORRECT SOUNDING MORSE CODE
        THEN ;

: BOUNDS ( ADDR LEN -- LAST INIT )
  OVER + SWAP ;

: TRANSMIT ( ADDR LEN -- )
           CR                                                \ NEWLINE,
           BOUNDS                                   \ CONVERT LOOP INDICES TO ADDRESS RANGES
           DO
              I C@ DUP EMIT                   \ DUP AND SEND CHAR TO CONSOLE
              MORSE-EMIT                       \ SEND THE MORSE CODE
           LOOP ;

: .   ( -- ) DIT_DUR SOUND  OFF_DUR SILENCE ;
: -   ( -- ) DAH_DUR SOUND  OFF_DUR SILENCE ;

\ DEFINE MORSE LETTERS AS FORTH WORDS. THEY TRANSMIT WHEN EXECUTED

: A  . -  ;     : B  - . . . ;   : C  - . - . ;    : D  - . . ;
: E  . ;        : F  . . - . ;   : G  - - . ;      : H  . . . . ;
: I  . . ;      : J  . - - - ;   : K  . - . ;      : L  . - . . ;
: M - - ;       : N  - . ;       : O  - - - ;      : P  . - - . ;
: Q  - - . - ;  : R  . - . ;     : S  . . . ;      : T  - ;
: U  . . - ;    : V  . . . - ;   : W  . - - ;      : X  - . . - ;
: Y  - . - - ;  : Z  - - . . ;

: 0  - - - - - ;     : 1  . - - - - ;
: 2  . . - - - ;     : 3  . . . - - ;
: 4  . . . . - ;     : 5  . . . . . ;
: 6  - . . . . ;     : 7  - - . . . ;
: 8  - - - . . ;     : 9  - - - - . ;

: '  - . . - . ;     : \  . - - - . ;    : !  . - . - . ;

: ?  . . - - . . ;
: ,  - - . . - - ;
: /  . . . - . - ;  ( SK MEANS END OF TRANSMISSION IN INT'L MORSE CODE)
: .  . - . - . - ;

: MAIN
S" CQ CQ CQ DE VE3CFW VE3CFW. \ " TRANSMIT ;

MAIN

************execution outcome********************
C:\Users\Master\spforth64>FASMFORTH64

:0

 ^ERROR #-1
D.
5311272  Ok
S" MORSE.F" INCLUDED

<'> INCLUDE-FILE CATCH. isn't unique
- isn't unique
I isn't unique
J isn't unique
' isn't unique
\ isn't unique
! isn't unique
, isn't unique
/ isn't unique
. isn't unique

CQ CQ CQ DE VE3CFW VE3CFW. \  Ok

**************************************

Merry Christmas to everybody.