1*ca987d46SWarner Losh\ examples from FORML conference paper Nov 98 2*ca987d46SWarner Losh\ sadler 3*ca987d46SWarner Losh\ 4*ca987d46SWarner Losh 5*ca987d46SWarner Losh.( loading FORML examples ) cr 6*ca987d46SWarner Loshobject --> sub c-example 7*ca987d46SWarner Losh cell: .cell0 8*ca987d46SWarner Losh c-4byte obj: .nCells 9*ca987d46SWarner Losh 4 c-4byte array: .quad 10*ca987d46SWarner Losh c-byte obj: .length 11*ca987d46SWarner Losh 79 chars: .name 12*ca987d46SWarner Losh 13*ca987d46SWarner Losh : init ( inst class -- ) 14*ca987d46SWarner Losh 2dup object => init 15*ca987d46SWarner Losh s" aardvark" 2swap --> set-name 16*ca987d46SWarner Losh ; 17*ca987d46SWarner Losh 18*ca987d46SWarner Losh : get-name ( inst class -- c-addr u ) 19*ca987d46SWarner Losh 2dup 20*ca987d46SWarner Losh --> .name -rot ( c-addr inst class ) 21*ca987d46SWarner Losh --> .length --> get 22*ca987d46SWarner Losh ; 23*ca987d46SWarner Losh 24*ca987d46SWarner Losh : set-name { c-addr u 2:this -- } 25*ca987d46SWarner Losh u this --> .length --> set 26*ca987d46SWarner Losh c-addr this --> .name u move 27*ca987d46SWarner Losh ; 28*ca987d46SWarner Losh 29*ca987d46SWarner Losh : ? ( inst class ) c-example => get-name type cr ; 30*ca987d46SWarner Loshend-class 31*ca987d46SWarner Losh 32*ca987d46SWarner Losh 33*ca987d46SWarner Losh: test ." this is a test" cr ; 34*ca987d46SWarner Losh' test 35*ca987d46SWarner Loshc-word --> ref testref 36*ca987d46SWarner Losh 37*ca987d46SWarner Losh\ add a method to c-word... 38*ca987d46SWarner Loshc-word --> get-wid ficl-set-current 39*ca987d46SWarner Losh\ list dictionary thread 40*ca987d46SWarner Losh: list ( inst class ) 41*ca987d46SWarner Losh begin 42*ca987d46SWarner Losh 2dup --> get-name type cr 43*ca987d46SWarner Losh --> next over 44*ca987d46SWarner Losh 0= until 45*ca987d46SWarner Losh 2drop 46*ca987d46SWarner Losh; 47*ca987d46SWarner Loshset-current 48*ca987d46SWarner Losh 49*ca987d46SWarner Loshobject subclass c-led 50*ca987d46SWarner Losh c-byte obj: .state 51*ca987d46SWarner Losh 52*ca987d46SWarner Losh : on { led# 2:this -- } 53*ca987d46SWarner Losh this --> .state --> get 54*ca987d46SWarner Losh 1 led# lshift or dup !oreg 55*ca987d46SWarner Losh this --> .state --> set 56*ca987d46SWarner Losh ; 57*ca987d46SWarner Losh 58*ca987d46SWarner Losh : off { led# 2:this -- } 59*ca987d46SWarner Losh this --> .state --> get 60*ca987d46SWarner Losh 1 led# lshift invert and dup !oreg 61*ca987d46SWarner Losh this --> .state --> set 62*ca987d46SWarner Losh ; 63*ca987d46SWarner Losh 64*ca987d46SWarner Loshend-class 65*ca987d46SWarner Losh 66*ca987d46SWarner Losh 67*ca987d46SWarner Loshobject subclass c-switch 68*ca987d46SWarner Losh 69*ca987d46SWarner Losh : ?on { bit# 2:this -- flag } 70*ca987d46SWarner Losh 71*ca987d46SWarner Losh 1 bit# lshift 72*ca987d46SWarner Losh ; 73*ca987d46SWarner Loshend-class 74*ca987d46SWarner Losh 75