#tep headers
Explore tagged Tumblr posts
Text
rockstar!
like ou reblog
#diego martins headers#dimaury headers#kelmiro headers#diego martins#headers#kelvin santana headers#kelvin headers#kelvin santana#terra e paixao headers#tep headers#novelas headers#novela headers#lgbt#lgbt headers#novelas#novela#brazilian headers#terra e paixao
12 notes
·
View notes
Text
Stats from Movies 901-1000
Top 10 Movies - Highest Number of Votes
Scooby-Doo On Zombie Island (1998) had the most votes with 906 votes. The Privilege (2022) had the least votes with 312 votes.
The 10 Most Watched Films by Percentage
Scooby-Doo On Zombie Island (1998) was the most watched film with 67.3% of voters out of 906 saying they had seen it. The Key (2023) with 0.2% of voters out of 457, and Martin's Close (2019) with 0.2% of voters out of 415, had the least "Yes" votes.
The 10 Least Watched Films by Percentage
The Masque of the Red Death (1964) was the least watched film with 50.3% of voters out of 485 saying they hadn’t seen it. The Tractate Middoth (2013) had the least "No" votes with 5.3% of voters out of 433.
The 10 Most Known Films by Percentage
Frankenweenie (2012) was the best known film, 2.4% of voters out of 622 saying they’d never heard of it.
The 10 Least Known Films by Percentage
Madayen (2016) was the least known film, 93.8% of voters out of 388 saying they’d never heard of it.
The movies part of the statistic count and their polls below the cut.
The Devil Rides Out (1968) In the Dark Half (2012) The Isle (2018) Lord of Tears (2013) The Hole in the Ground (2019) The Hallow (2015) Hollow (2011) The Pit and the Pendulum (1961) The Masque of the Red Death (1964) The Haunted Palace (1963) The Den (2013) The Wolf House (2018) When Black Birds Fly (2015) I Saw the Devil (2010) Speak No Evil (2022) Fall (2022) Paradise Hills (2019) Spoonful of Sugar (2022) Coherence (2013) I See You (2019)
Eden Lake (2008) Magic (1978) Twice-Told Tales (1963) Vile (2011) Velvet Buzzsaw (2019) The Privilege (2022) The Loved Ones (2009) Fender Bender (2016) Cherry Falls (1999) Scooby-Doo On Zombie Island (1998)
Bedevil (1993) The Rezort (2015) Aquaslash (2019) X-Cross (2007) Impetigore (2019) Gonjiam: Haunted Asylum (2018) The Killing of a Sacred Deer (2017) Jeruzalem (2015) The Key (2023) A House in Jerusalem (2023)
Frankenweenie (2012) The Milpitas Monster (1976) Blood Diner (1987) The Sickhouse (2008) Opera (1987) Vampires (1998) Vampires: Los Muertos (2002) Antichrist (2009) Cure (1997) It's Alive (1974)
It's Alive (2009) Donnie Darko (2001) The Second Coming (2014) Delicatessen (1991) Vamp (1986) 13 Beloved (2006) 13 Sins (2014) Jesus Christ Vampire Hunter (2001) Frontier(s) (2007) The Third Saturday in October Part V (2022)
The Third Saturday in October (2022) Tomie (1998) Coven of Sisters (2020) Alucarda (1977) Blood Monkey (2007) The Skin I Live In (2011) Maniac Cop (1988) Phoenix Forgotten (2017) Area 51 (2015) Livid (2011)
976-EVIL (1988) Header (2006) Dachra (2018) Djinn (2013) Leviathan (1989) Halloween III: Season of the Witch (1982) Madayen (2016) Tales from the Crypt: Demon Knight (1995) The Night (2020) Achoura (2018)
It Lives Again (1978) Beau Is Afraid (2023) It's Alive III: Island of the Alive (1987) Dark Dungeons (2014) Teen Lust (2014) Bubba Ho-Tep (2002) The Wraith (1986) The Mutilator (1984) Vampire Hunter D: Bloodlust (2000) Mermaid in a Manhole (1988)
Slashers (2001) Martin's Close (2019) The Tractate Middoth (2013) Julia's Eyes (2010) 30 Days of Night (2007) Otesánek (2000) A Dark Song (2016) The Blackcoat's Daughter (2015) Mr. Jones (2013) I Am the Pretty Thing That Lives in the House (2016)
7 notes
·
View notes
Note
New profile picture and header thing :O
tep, art was kinda old so it was fitting to change things up a bit :3
3 notes
·
View notes
Text
subleq.fth
only forth definitions hex
system +order
variable meta.1
variable target.1
variable assembler.1
variable target.only.1
meta.1 +order definitions
2 constant =cell
4000 constant size
8000 constant =end
40 constant =stksz
100 constant =buf
0008 constant =bksp
000A constant =lf
000D constant =cr
007F constant =del
create tflash size cells here over erase allot
variable tdp
variable tep
variable tlast
size =cell - tep !
0 tlast !
: :m meta.1 +order definitions : ;
: ;m postpone ; ; immediate
:m there tdp @ ;m
:m tc! tflash + c! ;m
:m tc@ tflash + c@ ;m
:m t! over $FF and over tc! swap 8 rshift swap 1+ tc! ;m
:m t@ dup tc@ swap 1+ tc@ 8 lshift or ;m
:m taligned dup 1 and + ;m
:m talign there 1 and tdp +! ;m
:m tc, there tc! 1 tdp +! ;m
:m t, there t! 2 tdp +! ;m
:m $literal
talign [char] " word count dup tc, for aft count tc, then next drop talign ;m
:m tallot tdp +! ;m
:m parse-word bl word ?nul count ;m
:m thead
talign
there tlast @ t, tlast !
parse-word talign dup tc, for aft count tc, then next drop talign ;m
:m #dec dup >r abs 0 <# $A hold #s r> sign #> type ;m ( n -- print number )
:m mdump aligned begin ?dup while swap dup @ #dec cell+ swap cell - repeat drop ;m
:m save-target parse-word drop decimal tflash there mdump ;m
:m .end only forth definitions decimal ;m
:m setlast tlast ! ;m
:m atlast tlast @ ;m
:m tvar
get-current >r meta.1 set-current create r> set-current there , t, does> @ ;m
:m label:
get-current >r meta.1 set-current create r> set-current there , does> @ ;m
:m tdown =cell negate and ;m
:m tnfa =cell + ;m ( pwd -- nfa : move to name field address )
:m tcfa tnfa dup c@ $1F and + =cell + tdown ;m ( pwd -- cfa )
:m compile-only tlast @ tnfa t@ $20 or tlast @ tnfa t! ;m ( -- )
:m immediate tlast @ tnfa t@ $40 or tlast @ tnfa t! ;m ( -- )
:m half dup 1 and abort" unaligned" 2/ ;m
:m double 2* ;m
:m (') bl word find ?found cfa ;m
:m t' (') >body @ ;m
:m to' target.only.1 +order (') >body @ target.only.1 -order ;m
:m tcksum taligned dup $C0DE - $FFFF and >r
begin ?dup while swap dup t@ r> + $FFFF and >r =cell + swap =cell - repeat
drop r> ;m
:m mkck dup there swap - tcksum ;m
system -order
\ ---------------------------------- Forth VM --------------------------------
:m Z 0 t, ;m \ Address 0 must contain 0
:m NADDR there 2/ 1+ t, ;m
:m HALT 0 t, 0 t, -1 t, ;m
:m JMP 2/ Z Z t, ;m
:m ADD swap 2/ t, Z NADDR Z 2/ t, NADDR Z Z NADDR ;m
:m SUB swap 2/ t, 2/ t, NADDR ;m
:m NOP Z Z NADDR ;m
:m ZERO dup 2/ t, 2/ t, NADDR ;m
:m PUT 2/ t, -1 t, NADDR ;m
:m MOV 2/ >r r@ dup t, t, NADDR 2/ t, Z NADDR r> Z t, NADDR Z Z NADDR ;m
:m iLOAD there 2/ 3 4 * 3 + + 2* MOV 0 swap MOV ;m
:m iJMP there 2/ E + 2* MOV NOP ;m
:m iSTORE ( addr w -- )
swap >r there 2/ 24 + 2dup 2* MOV 2dup 1+ 2* MOV 7 + 2* MOV r> 0 MOV ;m
assembler.1 +order definitions
: begin talign there ;
: again JMP ;
: mark there 0 t, ;
: if ( NB. "if" does not work for 8000 )
2/ dup t, Z there 2/ 4 + dup t, Z Z 6 + t, Z Z NADDR Z t, mark ;
: until 2/ dup t, Z there 2/ 4 + dup t, Z Z 6 + t, Z Z NADDR Z t, 2/ t, ;
: +if Z 2/ t, mark ;
: -if 2/ t, Z there 2/ 4 + t, Z Z there 2/ 4 + t, Z Z mark ;
: then begin 2/ swap t! ;
: while if swap ;
: repeat JMP then ;
assembler.1 -order
meta.1 +order definitions
0 t, 0 t, \ both locations must be zero
label: entry \ used to set entry point in next cell
-1 t, \ system entry point
B tvar {options} \ bit #1=echo off, #2 = checksum on, #4=info, #8=die on EOF
0 tvar h \ dictionary pointer
0 tvar primitive \ any address lower than this one must be a primitive
0 tvar check \ used for system checksum
8000 tvar hbit \ must contain 8000
-2 tvar ntwo \ must contain -2
-1 tvar neg1 \ must contain -1
1 tvar one \ must contain 1
2 tvar two \ must contain 1
$10 tvar bwidth \ must contain 16
0 tvar INVREG \ temporary register used for inversion only
0 tvar {cold} \ entry point of virtual machine program, set later on
0 tvar {key} \ execution vector for key?
0 tvar {emit} \ execution vector for emit
0 tvar {literal} \ execution vector for literal
0 tvar {ok} \ execution vector for .ok
0 tvar {echo} \ execution vector for echo
0 tvar ip \ instruction pointer
0 tvar w \ working pointer
0 tvar x \ working pointer
0 tvar t \ temporary register for Virtual Machine
0 tvar bl1 \ bitwise extra register
0 tvar bl2 \ bitwise extra register
0 tvar bt \ bitwise extra register
0 tvar tos \ top of stack
0 tvar {state} \ compiler state
0 tvar {hld} \ hold space pointer
$A tvar {base} \ input/output radix
-1 tvar {dpl} \ number of places after fraction
0 tvar {in} \ position in query string
0 tvar {handler} \ throw/catch handler
0 tvar {last} \ last defined word
0 tvar #tib \ terminal input buffer
0 tvar {context} $E tallot \ vocabulary context
0 tvar {current} \ vocabulary which new definitions are added to
0 tvar {forth-wordlist} \ forth word list (main vocabulary)
0 tvar {root-voc} \ absolute minimum vocabulary
0 tvar {system} \ system functions vocabulary
=end dup tvar {sp0} tvar {sp} \ grows downwards
=end =stksz 4 * - dup tvar {rp0} tvar {rp} \ grows upwards
=end =stksz 4 * - =buf - constant TERMBUF \ pad buffer space
TERMBUF =buf + constant =tbufend
:m INC 2/ neg1 2/ t, t, NADDR ;m ( b -- )
:m DEC 2/ one 2/ t, t, NADDR ;m ( b -- )
:m INV ( b -- : invert NB. b - a = b + ~a + 1 )
INVREG ZERO dup INVREG SUB dup INVREG swap MOV DEC ;m
:m ++sp {sp} DEC ;m
:m --sp {sp} INC ;m
:m --rp {rp} DEC ;m
:m ++rp {rp} INC ;m
:m a-optim >r there =cell - r> 2/ t! ;m
assembler.1 +order
label: start
start 2/ entry t!
{sp0} {sp} MOV
{rp0} {rp} MOV
{cold} ip MOV
( fall-through )
label: vm ( Forth Inner Interpreter )
ip w MOV
ip INC
t w iLOAD
t w MOV
primitive t SUB
t -if w iJMP then ( jump straight to VM functions )
++rp
ip {rp} iSTORE
w ip MOV vm a-optim
vm JMP
assembler.1 -order
:m header >in @ thead >in ! ;m
:m :ht ( "name" -- : forth routine, no header )
get-current >r target.1 set-current create
r> set-current $BABE talign there ,
does> @ 2/ t, ;m
:m :t header :ht ;m ( "name" -- : forth routine )
:m :to ( "name" -- : forth, target only routine )
header
get-current >r target.only.1 set-current create r> set-current
$BABE talign there ,
does> @ 2/ t, ;m
:m :a ( "name" -- : assembly routine, no header )
D00D
target.1 +order definitions
create talign there , assembler.1 +order does> @ 2/ t, ;m
:m (a); D00D <> if abort" unstructured" then assembler.1 -order ;m
:m ;a (a); vm a-optim vm JMP ;m
:m postpone target.only.1 +order t' target.only.1 -order 2/ t, ;m
\ NB. There are some bugs with the comparison operators "op<" and "op>" when
\ they deal with extreme values like "$8000 1 <", "$8002 1 <" words fine.
:a bye HALT ;a
:a 1- tos DEC ;a
:a 1+ tos INC ;a
:a invert tos INV ;a
:a [@] tos tos iLOAD ;a
:a [!] w {sp} iLOAD w tos iSTORE --sp tos {sp} iLOAD --sp ;a
:a opEmit tos PUT tos {sp} iLOAD --sp ;a
:a opPush ++sp tos {sp} iSTORE tos ip iLOAD ip INC ;a
:a opSwap tos w MOV tos {sp} iLOAD w {sp} iSTORE ;a
:a opDup ++sp tos {sp} iSTORE ;a
:a opOver w {sp} iLOAD ++sp tos {sp} iSTORE w tos MOV ;a
:a opDrop tos {sp} iLOAD --sp ;a
:a opToR ++rp tos {rp} iSTORE tos {sp} iLOAD --sp ;a
:a opFromR ++sp tos {sp} iSTORE tos {rp} iLOAD --rp ;a
:a opMul w {sp} iLOAD t ZERO
begin w while tos t ADD w DEC repeat t tos MOV --sp ;a
:a opExit ip {rp} iLOAD --rp ;a
:a - w {sp} iLOAD tos w SUB w tos MOV --sp ;a
:a + w {sp} iLOAD w tos ADD --sp ;a
:a r@ ++sp tos {sp} iSTORE tos {rp} iLOAD ;a
:a rdrop --rp ;a
:a sp@ ++sp tos {sp} iSTORE {sp} tos MOV tos INC ;a
:a sp! tos {sp} MOV ;a
:a rp@ ++sp tos {sp} iSTORE {rp} tos MOV ;a
:a rp! tos {rp} MOV tos {sp} iLOAD --sp ;a
:a opNext w {rp} iLOAD
w if w DEC w {rp} iSTORE t ip iLOAD t ip MOV vm JMP then ip INC --rp ;a
:a lsb
tos tos ADD tos tos ADD tos tos ADD tos tos ADD
tos tos ADD tos tos ADD tos tos ADD tos tos ADD
tos tos ADD tos tos ADD tos tos ADD tos tos ADD
tos tos ADD tos tos ADD
tos w MOV 0 tos MOV w if neg1 tos MOV then ;a
:a opJump ip ip iLOAD ;a
:a opJumpZ
tos w MOV 0 t MOV w if neg1 t MOV then w DEC w +if neg1 t MOV then
tos {sp} iLOAD --sp t if ip INC vm JMP then w ip iLOAD w ip MOV ;a
:a op0> tos w MOV 0 tos MOV w +if neg1 tos MOV then ;a
:a op0=
tos w MOV neg1 tos MOV w if 0 tos MOV then w DEC w +if 0 tos MOV then ;a
:a op0<
tos w MOV 0 tos MOV w -if neg1 tos MOV then w INC w -if neg1 tos MOV then ;a
:a op< w {sp} iLOAD --sp tos w SUB 0 tos MOV w -if neg1 tos MOV then ;a
:a op> w {sp} iLOAD --sp tos w SUB 0 tos MOV w +if neg1 tos MOV then ;a
:a op2* tos tos ADD ;a
:a op2/
bwidth w MOV
x ZERO
begin w DEC w while
x x ADD
tos bt MOV 0 bl1 MOV bt -if neg1 bl1 MOV then bt INC bt -if neg1 bl1 MOV then
bl1 if x INC then
tos tos ADD
repeat
x tos MOV ;a
:a rshift
bwidth w MOV
tos w SUB
tos {sp} iLOAD --sp
x ZERO
begin w while
x x ADD
tos bt MOV 0 bl1 MOV bt -if neg1 bl1 MOV then bt INC bt -if neg1 bl1 MOV then
bl1 if x INC then
tos tos ADD
w DEC
repeat
x tos MOV ;a
:a opOr
bwidth w MOV
x ZERO
t {sp} iLOAD
--sp
begin w while
x x ADD
tos bt MOV 0 bl1 MOV bt -if neg1 bl1 MOV then bt INC bt -if neg1 bl1 MOV then
t bt MOV 0 bl2 MOV bt -if neg1 bl2 MOV then bt INC bt -if neg1 bl2 MOV then
bl1 bl2 ADD bl2 if x INC then
t t ADD
tos tos ADD
w DEC
repeat
x tos MOV ;a
:a opXor
bwidth w MOV
x ZERO
t {sp} iLOAD
--sp
begin w while
x x ADD
tos bt MOV 0 bl1 MOV bt -if neg1 bl1 MOV then bt INC bt -if neg1 bl1 MOV then
t bt MOV 0 bl2 MOV bt -if neg1 bl2 MOV then bt INC bt -if neg1 bl2 MOV then
bl1 bl2 ADD bl2 INC one bl1 MOV bl2 if 0 bl1 MOV then bl1 x ADD
t t ADD
tos tos ADD
w DEC
repeat
x tos MOV ;a
:a opAnd
bwidth w MOV
x ZERO
t {sp} iLOAD
--sp
begin w while
x x ADD
tos bt MOV 0 bl1 MOV bt -if neg1 bl1 MOV then bt INC bt -if neg1 bl1 MOV then
t bt MOV 0 bl2 MOV bt -if neg1 bl2 MOV then bt INC bt -if neg1 bl2 MOV then
bl1 bl2 ADD two bl2 ADD one bl1 MOV bl2 if 0 bl1 MOV then bl1 x ADD
t t ADD
tos tos ADD
w DEC
repeat
x tos MOV ;a
there 2/ primitive t!
:m ;t $BABE <>
if abort" unstructured" then talign opExit target.only.1 -order ;m
:m :s tlast @ {system} t@ tlast ! $F00D :t drop 0 ;m
:m :so tlast @ {system} t@ tlast ! $F00D :to drop 0 ;m
:m ;s drop $BABE ;t $F00D <> if abort" unstructured" then
tlast @ {system} t! tlast ! ;m
:m :r tlast @ {root-voc} t@ tlast ! $F00D :t drop 0 ;m
:m ;r drop $BABE ;t $F00D <> if abort" unstructured" then
tlast @ {root-voc} t! tlast ! ;m
:m lit opPush t, ;m
:m [char] char opPush t, ;m
:m char char opPush t, ;m
:m begin talign there ;m
:m until talign opJumpZ 2/ t, ;m
:m again talign opJump 2/ t, ;m
:m if opJumpZ there 0 t, ;m
:m mark opJump there 0 t, ;m
:m then there 2/ swap t! ;m
:m else mark swap then ;m
:m while if ;m
:m repeat swap again then ;m
:m aft drop mark begin swap ;m
:m next talign opNext 2/ t, ;m
:m for opToR begin ;m
:m =push [ t' opPush half ] literal ;m
:m =jump [ t' opJump half ] literal ;m
:m =jumpz [ t' opJumpZ half ] literal ;m
:m =unnest [ t' opExit half ] literal ;m
:m =>r [ t' opToR half ] literal ;m
:m =next [ t' opNext half ] literal ;m
:m dup opDup ;m
:m drop opDrop ;m
:m over opOver ;m
:m swap opSwap ;m
:m >r opToR ;m
:m r> opFromR ;m
:m 0> op0> ;m
:m 0= op0= ;m
:m 0< op0< ;m
:m < op< ;m
:m > op> ;m
:m or opOr ;m
:m xor opXor ;m
:m and opAnd ;m
:m exit opExit ;m
:m 2/ op2/ ;m
:ht #0 0 lit ;t
:ht #1 1 lit ;t
:ht #-1 FFFF lit ;t
:to 1+ 1+ ;t
:to 1- 1- ;t
:to + + ;t
:to - - ;t
:to invert invert ;t
:to bye bye ;t
:to dup dup ;t
:to drop opDrop ;t
:to over opOver ;t
:to swap opSwap ;t
:to rshift rshift ;t
:so [@] [@] ;s
:so [!] [!] ;s
:so lsb lsb ;s
:to sp@ sp@ ;t
:to sp! sp! ;t
:to 0> op0> ;t
:to 0= op0= ;t
:to 0< op0< ;t
:to < op< ;t
:to > op> ;t
:to 2/ op2/ ;t
:to or opOr ;t
:to xor opXor ;t
:to and opAnd ;t
:to * opMul ;t
:t nop ;t
:t <ok> {ok} lit ;t
:s <emit> {emit} lit ;s
:s <key> {key} lit ;s
:s <literal> {literal} lit ;s
:s <cold> {cold} lit ;s
:s <echo> {echo} lit ;s
:t current {current} lit ;t
:t root-voc {root-voc} lit ;t
:t #vocs 8 lit ;t
:t context {context} lit ;t
:t here h half lit [@] ;t
:t base {base} lit ;t
:t dpl {dpl} lit ;t
:t hld {hld} lit ;t
:t bl 20 lit ;t
:t >in {in} lit ;t
:t hex $10 lit {base} half lit [!] ;t
:t decimal $A lit {base} half lit [!] ;t
:t source TERMBUF lit #tib half lit [@] ;t
:s many #0 {in} half lit [!] ;s
:t state {state} lit ;t
:t ] #-1 {state} half lit [!] ;t
:t [ #0 {state} half lit [!] ;t immediate
:t nip swap drop ;t
:t tuck swap over ;t
:t ?dup dup if dup then ;t
:t rot >r swap r> swap ;t
:t -rot rot rot ;t
:t 2drop drop drop ;t
:t 2dup over over ;t
:t 0<= 0> 0= ;t
:t 0<> 0= 0= ;t
:t = - 0= ;t
:t <> = 0= ;t
:t >= < 0= ;t
:t <= > 0= ;t
:t 0>= 0< 0= ;t
:t negate 1- invert ;t
:t s>d dup 0< ;t
:t abs s>d if negate then ;t
:t 2* op2* ;t
:t cell 2 lit ;t
:t cell+ cell + ;t
:t cells op2* ;t
:t u< 2dup 0< 0= swap 0< 0= <> >r < r> <> ;t
:t u> swap u< ;t
:t u>= u< 0= ;t
:t u<= u> 0= ;t
:t execute 2/ >r ;t
:t key? #-1 [@] negate s>d if
{options} half lit [@] 8 lit and if bye then drop #0 exit then #-1 ;t
:t key begin {key} half lit [@] execute until ;t
:t emit {emit} half lit [@] execute ;t
:t cr =cr lit emit =lf lit emit ;t
:t @ 2/ [@] ;t
:t ! 2/ [!] ;t
:t get-current current @ ;t
:t set-current current ! ;t
:s last get-current @ ;s
:t pick sp@ + [@] ;t
:t +! 2/ tuck [@] + swap [!] ;t
:t lshift begin ?dup while 1- swap 2* swap repeat ;t
:t c@ dup @ swap lsb if 8 lit rshift else $FF lit and then ;t
:t c! swap $FF lit and dup 8 lit lshift or swap
tuck dup @ swap lsb 0= $FF lit xor
>r over xor r> and xor swap ! ;t
:t max 2dup < if nip else drop then ;t
:t min 2dup > if nip else drop then ;t
:t count dup 1+ swap c@ ;t
:s logical 0<> if #1 else #0 then ;s
:t aligned dup lsb logical + ;t
:t align here aligned h half lit [!] ;t
:t +string #1 over min rot over + rot rot - ;t
:t type begin dup while swap count emit swap 1- repeat 2drop ;t
:t cmove for aft >r dup c@ r@ c! 1+ r> 1+ then next 2drop ;t ( b1 b2 u -- )
:t fill swap for swap aft 2dup c! 1+ then next 2drop ;t ( b u c -- )
:t erase #0 fill ;t ( NB. blank is bl fill )
:s do$ r> r> 2* dup count + aligned 2/ >r swap >r ;s ( -- a : )
:s ($) do$ ;s ( -- a : do string NB. )
:s .$ do$ count type ;s ( -- : print string, next cells contain string )
:m ." .$ $literal ;m
:m $" ($) $literal ;m
:t space bl emit ;t
:t catch ( xt -- exception# | 0 \ return addr on stack )
sp@ >r ( xt ) \ save data stack pointer
{handler} half lit [@] >r ( xt ) \ and previous handler
rp@ {handler} half lit [!] ( xt ) \ set current handler
execute ( ) \ execute returns if no throw
r> {handler} half lit [!] ( ) \ restore previous handler
rdrop ( ) \ discard saved stack ptr
#0 ;t ( 0 ) \ normal completion
:t throw ( ??? exception# -- ??? exception# )
?dup if ( exc# ) \ 0 throw is no-op
{handler} half lit [@] rp! ( exc# ) \ restore prev return stack
r> {handler} half lit [!] ( exc# ) \ restore prev handler
r> swap >r ( saved-sp ) \ exc# on return stack
sp! drop r> ( exc# ) \ restore stack
then ;t
:t abort #-1 throw ;t
:s (abort) do$ swap if count type abort then drop ;s
:t um+
2dup + >r r@ #0 >= >r 2dup and 0< r> or >r or 0< r> and invert 1+ r> swap ;t
:t dnegate invert >r invert #1 um+ r> + ;t ( d -- d )
:t d+ >r swap >r um+ r> + r> + ;t ( d d -- d )
:t um* ( u u -- ud : double cell width multiply )
#0 swap ( u1 0 u2 ) $F lit
for
dup um+ >r >r dup um+ r> + r>
if >r over um+ r> + then
next rot drop ;t
:t um/mod ( ud u -- ur uq : unsigned double cell width divide/modulo )
?dup 0= if -A lit throw then
2dup u<
if negate $F lit
for >r dup um+ >r >r dup um+ r> + dup
r> r@ swap >r um+ r> ( or -> ) 0<> swap 0<> +
if >r drop 1+ r> else drop then r>
next
drop swap exit
then 2drop drop #-1 dup ;t
:t m/mod ( d n -- r q : floored division )
s>d dup >r
if
negate >r dnegate r>
then
>r s>d if r@ + then r> um/mod r>
if swap negate swap exit then ;t
:t /mod over 0< swap m/mod ;t
:t mod /mod drop ;t
:t / /mod nip ;t
:s depth {sp0} half lit [@] sp@ - 1- ;s
:s (emit) opEmit ;s
:t echo {echo} half lit [@] execute ;t
:s tap dup echo over c! 1+ ;s ( bot eot cur c -- bot eot cur )
:s ktap ( bot eot cur c -- bot eot cur )
dup dup =cr lit <> >r =lf lit <> r> and if ( Not End of Line? )
dup =bksp lit <> >r =del lit <> r> and if ( Not Delete Char? )
bl tap
exit
then
>r over r@ < dup if
=bksp lit dup echo bl echo echo
then
r> +
exit
then drop nip dup ;s
:t accept ( b u -- b u : read in a line of user input )
over + over begin
2dup <>
while
key dup bl - $5F lit u< if tap else ktap then
repeat drop over - ;t
:t query TERMBUF lit =buf lit accept #tib lit ! drop #0 >in ! ;t
:s ?depth depth > if -4 lit throw then ;s ( u -- : check stack depth )
:t -trailing for aft bl over r@ + c@ < if r> 1+ exit then then next #0 ;t
:s look ( b u c xt -- b u : skip until *xt* test succeeds )
swap >r rot rot
begin
dup
while
over c@ r@ - r@ bl = 4 lit pick execute
if rdrop rot drop exit then
+string
repeat rdrop rot drop ;s
:s unmatch if 0> exit then 0<> ;s ( c1 c2 -- t )
:s match unmatch invert ;s ( c1 c2 -- t )
:t parse ( c -- b u ; <string> )
>r source drop >in @ + #tib lit @ >in @ - r@
>r over r> swap >r >r
r@ t' unmatch lit look 2dup
r> t' match lit look swap r> - >r - r> 1+ ( b u c -- b u delta )
>in +!
r> bl = if -trailing then #0 max ;t
:t spaces begin dup 0> while space 1- repeat drop ;t ( +n -- )
:t hold #-1 hld +! hld @ c! ;t ( c -- : save a character in hold space )
:t #> 2drop hld @ =tbufend lit over - ;t ( u -- b u )
:s extract dup >r um/mod r> swap >r um/mod r> rot ;s ( ud ud -- ud u )
:s digit 9 lit over < 7 lit and + [char] 0 + ;s ( u -- c )
:t # 2 lit ?depth #0 base @ extract digit hold ;t ( d -- d )
:t #s begin # 2dup ( d0= -> ) or 0= until ;t ( d -- 0 )
:t <# =tbufend lit hld ! ;t ( -- )
:t sign 0< if [char] - hold then ;t ( n -- )
:t u.r >r #0 <# #s #> r> over - spaces type ;t
:t u. #0 <# #s #> space type ;t
:t . dup >r abs #0 <# #s r> sign #> space type ;t ( n -- print number )
:t >number ( ud b u -- ud b u : convert string to number )
begin
2dup >r >r drop c@ base @ ( get next character )
( digit? -> ) >r [char] 0 - 9 lit over <
if 7 lit - dup $A lit < or then dup r> u< ( c base -- u f )
0= if ( d char )
drop ( d char -- d )
r> r> ( restore string )
exit ( ..exit )
then ( d char )
swap base @ um* drop rot base @ um* d+ ( accumulate digit )
r> r> ( restore string )
+string dup 0= ( advance string and test for end )
until ;t
:t number? ( a u -- d -1 | a u 0 : string to a number [easier to use] )
#-1 dpl !
base @ >r
over c@ [char] - = dup >r if +string then
over c@ [char] $ = if hex +string then
>r >r #0 dup r> r>
begin
>number dup
while over c@ [char] . <>
if rot drop rot r> 2drop #0 r> base ! exit then
1- dpl ! 1+ dpl @
repeat
2drop r> if dnegate then r> base ! #-1 ;t
:t compare ( a1 u1 a2 u2 -- n : string equality )
rot
over - ?dup if >r 2drop r> nip exit then
for ( a1 a2 )
aft
count rot count rot - ?dup
if rdrop nip nip exit then
then
next 2drop #0 ;t
:t .s depth for aft r@ pick . then next ;t
:t nfa cell+ ;t ( pwd -- nfa : move word pointer to name field )
:t cfa nfa dup c@ $1F lit and + cell+ cell negate and ;t ( pwd -- cfa )
:t allot aligned h lit +! ;t
:t , align here ! cell allot ;t
:s (search-wordlist) ( a wid -- PWD PWD 1|PWD PWD -1|0 a 0: find word in WID )
swap >r dup
begin
dup
while
dup nfa count $9F lit ( $1F:word-length + $80:hidden )
and r@ count compare 0=
if ( found! )
rdrop
dup ( immediate? -> ) nfa $40 lit swap @ and 0<>
#1 or negate exit
then
nip dup @
repeat
rdrop 2drop #0 ;s
:s (find) ( a -- pwd pwd 1 | pwd pwd -1 | 0 a 0 : find a word dictionary )
>r
context
begin
dup @
while
dup @ @ r@ swap (search-wordlist) ?dup
if
>r rot drop r> rdrop exit
then
cell+
repeat drop #0 r> #0 ;s
:t search-wordlist (search-wordlist) rot drop ;t ( a wid -- PWD 1|PWD -1|a 0 )
:t find ( a -- pwd 1 | pwd -1 | a 0 : find a word in the dictionary )
(find) rot drop ;t
:s (literal) state @ if =push lit , , then ;s
:t literal <literal> @ execute ;t immediate ( u -- )
:t compile, 2/ align , ;t ( xt -- )
:s ?found
if exit then space count type [char] ? emit cr -D lit throw ;s ( u f -- )
:t interpret ( b -- )
find ?dup if
state @
if
0> if cfa execute exit then \ <- immediate word are executed
cfa compile, exit \ <- compiling word are...compiled.
then
drop
dup nfa c@ 20 lit and if -E lit throw then ( <- ?compile )
cfa execute exit \ <- if its not, execute it, then exit *interpreter*
then
\ not a word
dup >r count number? if rdrop \ it is a number!
dpl @ 0< if \ <- dpl will be -1 if it is a single cell number
drop \ drop high cell from 'number?' for single cell output
else \ <- dpl is not -1, it is a double cell number
state @ if swap then
postpone literal \ literal is executed twice if it's a double
then
postpone literal exit
then
r> #0 ?found ;t \ Could vector ?found here, to handle arbitrary words
:s .id nfa count $1F lit and type space ;s ( pwd -- : print out a word )
:t get-order ( -- widn ... wid1 n : get the current search order )
context
( find empty cell -> ) #0 >r begin dup @ r@ xor while cell+ repeat rdrop
dup cell - swap
context - 2/ dup >r 1- s>d if -50 lit throw then
for aft dup @ swap cell - then next @ r> ;t
:r set-order ( widn ... wid1 n -- : set the current search order )
dup #-1 = if drop root-voc #1 set-order exit then ( NB. Recursion! )
dup #vocs > if -49 lit throw then
context swap for aft tuck ! cell+ then next #0 swap ! ;r
:r forth-wordlist {forth-wordlist} lit ;r ( -- wid )
:r system {system} lit ;r ( -- wid )
:r forth root-voc forth-wordlist 2 lit set-order ;r ( -- )
:r only #-1 set-order ;r ( -- )
:r words
get-order begin ?dup while swap dup cr u. ." : " @
begin ?dup while dup nfa c@ $80 lit and 0= if dup .id then @ repeat cr
1- repeat ;r
:t definitions context @ set-current ;t
:t (order) ( w wid*n n -- wid*n w n )
dup if
1- swap >r (order) over r@ xor
if
1+ r> -rot exit
then rdrop
then ;t
:t -order get-order (order) nip set-order ;t
:t +order dup >r -order get-order r> swap 1+ set-order ;t
:t word parse here dup >r 2dup ! 1+ swap cmove r> ;t ( c -- b )
:s ?unique ( a -- a : print a message if a word definition is not unique )
dup get-current (search-wordlist) 0= if exit then space
2drop {last} lit @ .id ." redefined" cr ;s
:s ?nul dup c@ if exit then -10 lit throw ;s
:to char bl word ?nul count drop c@ ;t
:to [char] postpone char =push lit , , ;t immediate
:to ; $BABE lit <> if -16 lit throw then =unnest lit , postpone [
?dup if get-current ! exit then ;t immediate compile-only ( -- wid )
:to : align here dup {last} lit ! ( "name", -- colon-sys )
last , bl word ?nul ?unique count + h lit ! align $BABE lit postpone ] ;t
:to :noname here $BABE lit ] ;t
:to begin align here ;t immediate compile-only
:to until =jumpz lit , 2/ , ;t immediate compile-only
:to again =jump lit , 2/ , ;t immediate compile-only
:to if =jumpz lit , here #0 , ;t immediate compile-only
:to then here 2/ swap ! ;t immediate compile-only
:to while postpone if ;t immediate compile-only
:to repeat swap postpone again postpone then ;t immediate compile-only
:to else =jump lit , here #0 , swap postpone then ;t immediate compile-only
:to for =>r lit , here ;t immediate compile-only
:to aft drop =jump lit , here #0 , align here swap ;t immediate compile-only
:to next =next lit , 2/ , ;t immediate compile-only
:to ' bl word find ?found cfa literal ;t immediate
:t compile r> dup [@] , 1+ >r ;t compile-only
:t recurse {last} lit @ cfa compile, ;t immediate compile-only
:s toggle tuck @ xor swap ! ;s
:s hide bl word find ?found nfa $80 lit swap toggle ;s
:s (var) r> 2* ;s compile-only
:s (const) r> [@] ;s compile-only
:s (marker) r> 2* dup @ h lit ! cell+ @ get-current ! ;s compile-only
:t create postpone : drop postpone [ compile (var) get-current ! ;t
:to variable create #0 , ;t
:to constant create cell negate allot compile (const) , ;t
:to marker last here create cell negate allot compile (marker) , , ;t
:t >body cell+ ;t ( a -- a )
:s (does) r> r> 2* swap >r ;s compile-only
:s (comp) r> {last} lit @ cfa ! ;s compile-only
:t does> compile (comp) compile (does) ;t immediate compile-only
:to rp! compile rp! ;t immediate compile-only
:to rp@ compile rp@ ;t immediate compile-only
:to >r compile opToR ;t immediate compile-only
:to r> compile opFromR ;t immediate compile-only
:to r@ compile r@ ;t immediate compile-only
:to rdrop compile rdrop ;t immediate compile-only
:to exit compile opExit ;t immediate compile-only
:to ." compile .$
[char] " word count + h half lit [!] align ;t immediate compile-only
:to $" compile ($)
[char] " word count + h half lit [!] align ;t immediate compile-only
:to abort" compile (abort)
[char] " word count + h half lit [!] align ;t immediate compile-only
:to ( [char] ) parse 2drop ;t immediate
:to .( [char] ) parse type ;t immediate
:to postpone bl word find ?found cfa compile, ;t immediate
:to ) ;t immediate
:to \ source drop @ {in} half lit [!] ;t immediate
:to immediate last nfa @ $40 lit or last nfa ! ;t
:to see bl word find ?found
cr begin dup @ =unnest lit <> while dup @ u. cell+ repeat @ u. ;t
:to dump aligned begin ?dup while swap dup @ . cell+ swap cell - repeat drop ;t
:s cksum aligned dup $C0DE lit - >r
begin ?dup while swap dup @ r> + >r cell+ swap cell - repeat drop r> ;s
:s ok state @ 0= if ." ok" cr then ;s
:t eval
begin bl word dup c@ while
interpret #1 ?depth
repeat drop {ok} half lit [@] execute ;t ( "word" -- )
:s info cr
." Project: eForth v1.5 " ( here . ) cr
." Author: Richard James Howe" cr
." Email: [email protected]" cr
." Repo: https://github.com/howerj/subleq" cr
." License: The Unlicense / Public Domain" cr ;s
:s ini only forth definitions decimal postpone [
#0 {in} half lit [!] #-1 {dpl} half lit [!] ;s ( -- )
:s opts
{options} half lit [@] lsb if to' drop lit {echo} half lit [!] then
{options} half lit [@] 4 lit and if info then
{options} half lit [@] 2 lit and if
primitive half lit [@] 2* dup here swap - cksum
check half lit [@] <> if ." cksum fail" bye then
{options} half lit [@] 2 lit xor {options} half lit [!]
then ;s
:t quit ( -- : interpreter loop, and more, does more than most QUITs )
ini
opts
begin
query t' eval lit catch
?dup if dup space . [char] ? emit cr #-1 = if bye then ini then
again ;t
:t cold {cold} half lit [@] execute ;t
\ ---------------------------------- Image Generation ------------------------
t' quit half {cold} t!
t' key? {key} t!
t' (emit) {echo} t!
t' (emit) {emit} t!
t' ok {ok} t!
t' (literal) {literal} t!
atlast {forth-wordlist} t!
{forth-wordlist} {current} t!
there h t!
primitive t@ double mkck check t!
atlast {last} t!
save-target subleq.dec
there .end
bye
0 notes
Text
wait a minute i can change my header text now because i changed it to that in tribute to tep but shes back now
9 notes
·
View notes
Text
pog.. .TEP files are just .TEX files under lzss. .TAP files on the other hand >_> i have no idea! they have the MATO magic number and the 0x5050 magic number but everything after the header seems too small
im close to being done with the texture formats i think... i have a lot covered U_U i think its just .TAP files and some weird thing in the translated .TEX images
fast update: .TAP files are also just .TEX with lzss ??? did they mistype @_@
0 notes
Note
Hey, is your ask box still closed? I see you answering a few asks and I just wanna know. Sorry if this sounds rude or anything :’))
Yes, it is still closed. My Ask box is closed until otherwise stated. In no particular order, I’m slowly working through the asks that came in when the box opened on April 25:
Shiro + Lotor + Reader poly headcanons/scenario, requested by Anon
Keith + a female alien!S/O who plays him a lullaby from her culture, requsted by @ha-tep
Shiro + an S/O who loves kids try for a baby of their own (NSFW), requested by Anon
Shiro + Champion fem!Reader, requested by Anon
Lotor/Allura/Shiro/Matt + an S/O who is into orgasm denial (NSFW), requested by Anon
The Shiros™ + a fem!Reader and figuring out who is who (slight NSFW), requested by Anon
Paladins + chubby!Reader, requested by Anon
Shiro + meeting a male human!Reader born on the Balmera, requested by @kairon-the-everlasting
Paladins + Allura + an S/O who fights to music, requested by Anon
The first time for Poly! Shiro + Lotor + their S/O (NSFW), requested by @ghost-liquor
So far, I’ve done #2 and #5. If you are ever confused about the status of my Ask box, it is in the header of the blog, as well tracked by my #ask box tag. Cheers
17 notes
·
View notes
Text
like ou reblog
#kelmiro headers#dimaury headers#diego martins headers#amaury lorenzo headers#lgbt headers#lgbt#headers#terra e paixao headers#tep headers#ramiro neves headers#kelvin santana icons#kelmiro#ramiro neves#kelvin santana#dimaury#diego martins#amaury lorenzo
10 notes
·
View notes
Text
dump de header!
like ou reblog
#amaury lorenzo headers#diego martins headers#kelmiro headers#dimaury headers#headers#dimaury#kelmiro#diego martins#amaury lorenzo#lgbt headers#lgbt#drag queen headers#drag queens headers#brazilian headers#tep headers#terra e paixao headers#novela headers#novelas headers
6 notes
·
View notes
Text
dump de headers 1
like ou reblog
#kelmiro headers#dimaury headers#amaury lorenzo headers#diego martins headers#amaury lorenzo#diego martins#headers#kelmiro#dimaury#tep headers#tep#terra e paixao headers#actors headers#kelvin santana#ramiro neves#lgbt
11 notes
·
View notes
Text
like ou reblog
#diego martins headers#amaury lorenzo headers#dimaury headers#kelmiro headers#drag queen headers#drag queens headers#lgbt headers#lgbt#headers#kelvin santana headers#kelvin headers#ramiro neves headers#ramiro headers#ramiro neves#kelvin santana#kelvin#diego martins#amaury lorenzo#terra e paixao headers#tep headers#brazilian headers#novelas headers#novela headers
6 notes
·
View notes
Text
like ou reblog
#diego martins headers#amaury lorenzo headers#kelmiro headers#dimaury headers#headers#kelvin santana headers#ramiro neves headers#diego martins#amaury lorenzo#dimaury#kelmiro#lgbt headers#lgbt#terra e paixao headers#tep headers#terra e paixao
6 notes
·
View notes
Text
like ou reblog
#diego martins headers#amaury lorenzo headers#headers#kelmiro headers#dimaury headers#lgbt headers#lgbt#drag queen headers#drag queens headers#terra e paixao headers#tep headers
0 notes
Text
behind the scenes! a pedido da livia <3
like ou reblog
#diego martins icons#diego martins headers#drag queens icons#drag queen icons#drag queens headers#drag queen header#lgbt icons#lgbt nheaders#lgbt#icons#diego martins#kelmiro icons#kelmiro#dimaury icons#dimaury#dimaury headers#headers#kelmiro headers#kelvin santana icons#kelvin santana headers#novelas icons#novelas headers#novela headers#terra e paixao icons#tep icons#br headers#br icons#brazilian icons#brazilian headers
11 notes
·
View notes