; -----------------------------------------------------------------------
-; File Name Test_Extd_ASM.f
+; EXT_ASM.f
; -----------------------------------------------------------------------
\
\ TARGET SELECTION
\ FORTH conditionnal : 0= 0< = < > U<
ECHO
+[UNDEFINED] {ASMEXT_TEST} [IF]
+
+MARKER {ASMEXT_TEST}
+
PWR_HERE
; --------------------------------------------------------------------------------
; 44 33<04 44 55 4D
PWR_STATE
+
+
+: %.
+BASE @ %10 BASE ! SWAP 8 EMIT . BASE !
+;
+
+: %U.
+BASE @ %10 BASE ! SWAP 8 EMIT U. BASE ! ;
+
+PWR_HERE
+
+
+; ================
+; RRUX test
+; ================
+
+
+CODE RRUX_T
+\ MOVX #$F0F0,Y \ don't forget decimal point with MOVX instruction !
+MOVX #$.F0F0,Y
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111000 --> %
+
+PWR_STATE
+
+; ================
+; RRUX repeat test
+; ================
+
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #0
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111000 --> %
+
+PWR_STATE
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #3
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %111100001111 --> %
+
+PWR_STATE
+
+CODE RRUX_T
+MOV #$F0F0,Y
+RPT #7
+RRUX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRUX_T ; you should see %11110000 --> %
+
+PWR_STATE
+
+
+; ================
+; RRCX test
+; ================
+
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %100000000000000 --> %
+
+PWR_STATE
+
+; ================
+; RRCX repeat test
+; ================
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RPT #0
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %100000000000000 --> %
+
+PWR_STATE
+
+CODE RRCX_T
+MOV #$8000,Y
+BIC #C,SR
+RPT #7
+RRCX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %U.
+ENDCODE
+
+RRCX_T ; you should see %10000000 --> %
+
+PWR_STATE
+
+; ================
+; RRAX test
+; ================
+
+
+CODE RRAX_T
+MOV #$8000,Y
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000000000 --> %
+
+PWR_STATE
+
+; ================
+; RRAX repeat test
+; ================
+
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #0
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #1
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-10000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #2
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-1000000000000 --> %
+
+PWR_STATE
+
+CODE RRAX_T
+MOV #$8000,Y
+RPT #6
+RRAX Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+JMP %.
+ENDCODE
+
+RRAX_T ; you should see %-100000000 --> %
+
+PWR_STATE
+
+; ================
+; RLAX test
+; ================
+
+
+CODE RLAX_T
+MOV #-1,Y
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -2 -->
+
+PWR_STATE
+
+; ================
+; RLAX repeat test
+; ================
+
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #0
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -2 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #1
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -4 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #2
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -8 -->
+
+PWR_STATE
+
+CODE RLAX_T
+MOV #-1,Y
+RPT #7
+ADDX Y,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+RLAX_T ; you should see -256 -->
+
+PWR_STATE
+
+; ================
+; ADDX test
+; ================
+
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -1 -->
+
+PWR_STATE
+
+; ================
+; ADDX repeat test
+; ================
+
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #0
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -1 -->
+
+PWR_STATE
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #1
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -2 -->
+
+PWR_STATE
+
+CODE ADDX_T
+MOV #0,Y
+MOV #-1,X
+RPT #7
+ADDX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+ADDX_T ; you should see -8 -->
+
+PWR_STATE
+
+
+; ================
+; SUBX test
+; ================
+
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+; ================
+; SUBX repeat test
+; ================
+
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #0
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #1
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 2 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #0,Y
+MOV #-1,X
+RPT #7
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 8 -->
+
+PWR_STATE
+
+CODE SUBX_T \ W register = R10
+MOV #15,W \ RPT [W] times, modulo 16 <--> RPT #15
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 16 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #32,W \ RPT [W] times, modulo 16 <--> RPT #0
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 1 -->
+
+PWR_STATE
+
+CODE SUBX_T
+MOV #33,W \ RPT [W] times, modulo 16 <--> RPT #1
+MOV #0,Y
+MOV #-1,X
+RPT W
+SUBX X,Y
+SUB #2,PSP
+MOV TOS,0(PSP)
+MOV Y,TOS
+MOV #.,PC \ BRANCH to .
+ENDCODE
+
+SUBX_T ; you should see 2 -->
+
+PWR_STATE
+
+{ASMEXT_TEST}