diff --git a/demo/commands.txt b/demo/commands.txt deleted file mode 100644 index 5a70b1c2d..000000000 --- a/demo/commands.txt +++ /dev/null @@ -1,152 +0,0 @@ - -Commands - -[from URL bar] - ***TBD - Galen/Anton please fill in - -[from unix] - For A, to build and boot: - git clone https://github.com/urbit/urbit - cd urbit - make - bin/urbit -T $A -c $A - - For A, to kill and restart from checkpoint: - [in new terminal] killall -9 urbit - [in old terminal] urbit $A - - For A, to kill, delete checkpoint, and rerun events: - [in new terminal] killall -9 urbit; rm -rf $A/.urb/chk - [in old terminal] urbit $A - - For B, to edit /foo/bar/hoon: - *** Philip/anyone, add directions to install vim style - - vim urbit/$B/$B/in/$DEMO/foo/bar.hoon - - -[from talk] - For A, to private-message B (who defaults to talking back): - - ;~B - - To create a channel '%foobar': - - ;create channel %foobar 'channel description' - -[from hood, #] - - For A or B, to start tictactoe: - - *demo/tictactoe - - For A or B, to log in to X's tictactoe: - - +~X/ - - To log out: - - -~X/tictactoe - -[from dojo] - - For B, to create a %demo desk for this project: - - :+merge %demo ~B %home - - For A, to sync and follow B's demo desk: - - :+sync %demo ~B %demo - -[to send bitcoin] - Start the dæmon(from sole): - *bit - - Auth in (from dojo): - :bit+auth [reacted-see-asana] 'f771f6dc08910095b2476b033dca62ddcb302b6617e6a7d4d66e194a2a9bd605' - - In webtalk, click on the link and auth in. The password for coinbase account anton.dyudin@tlon.io has been communicated privately. - - Click authorize and then return to the command line. - - To send: - - :bit+send 0c[bitcoin-address] '[qty-of-bitcoin]' - - I recommend sending about .0001 bitcoin (2¢) because it's just over their minimum and it's an account with limited funds. - With this protocol, the recipient will obviously have to provide their btc address over chat. - - Lastly, on https://blockchain.info/ there is a search bar that allows you to search by address, assuming you wish to display the address - -[files in script, clay and unix] - - The tictactoe app, all three versions: - - /=demo=/ape/tictactoe/core/hook - urbit/$X/$X/in/$DEMO/ape/tictactoe/core/hook - - version 1 (centralized): - $DEMO/files/1-ape-tictactoe.hoon - - version 2 (distributed): - $DEMO/files/2-ape-tictactoe.hoon - - version 3 (webified) - $DEMO/files/3-ape-tictactoe.hoon - - Helper files needed for version 2: - - The %octo-game mark, for game update diffs: - - /=demo=/mar/octo-game/door/hook - urbit/$X/$X/in/$DEMO/mar/octo-game/door.hook - $DEMO/files/mar-octo-game.hoon - - Helper files needed for version 3: - - The %octo-move mark, for moves from the web: - - /=demo=/mar/octo-move/door/hook - urbit/$X/$X/in/$DEMO/mar/octo-move/door.hook - $DEMO/files/mar-octo-move.hoon - - The HTML generator: - - /=demo=/pub/octo/fab/hymn/hook - urbit/$X/$X/in/$DEMO/pub/octo/fab/hymn.hook - $DEMO/files/pub-octo-hymn.hoon - - The CSS: - - /=demo=/pub/octo/src/main/css - urbit/$X/$X/in/$DEMO/pub/octo/src/main.css - $DEMO/files/pub-octo-main.css - - The JS: - - /=demo=/pub/octo/src/main/js - urbit/$X/$X/in/$DEMO/pub/octo/src/main.js - $DEMO/files/pub-octo-main.js - -[from tictactoe] - - To move: - - X/Y where X is row, Y is column. - - To connect to a remote server (in versions 2 and 3), - specifying the side you will play: - - ~X x - ~X o - - To disconnect from a remote server (versions 2 and 3) - - ~ *** - not well tested - -[scripts, to run from branch root directory] - - $DEMO/install1.sh - copy in all version 1 (centralized) files - $DEMO/install2.sh - copy in all version 2 (distributed) files - $DEMO/install3.sh - copy in all version 3 (webby) files - diff --git a/demo/files/1-ape-tictactoe.hoon b/demo/files/1-ape-tictactoe.hoon deleted file mode 100644 index e418af857..000000000 --- a/demo/files/1-ape-tictactoe.hoon +++ /dev/null @@ -1,123 +0,0 @@ -:: :: :: -:::: /hook/core/acto/ape :: :: dependencies - :: :: :: -/- *sole :: structure -/+ sole :: library -:: :: :: -:::: :: :: structures - !: :: :: -=> |% :: board logic - ++ board ,@ :: one-player bitfield - ++ point ,[x=@ y=@] :: coordinate - ++ game ,[who=? box=board boo=board] :: game state - ++ icon |=(? ?:(+< 'X' 'O')) :: display at - ++ bo :: per board - |_ bud=board :: - ++ get |=(point =(1 (cut 0 [(off +<) 1] bud))) :: get point - ++ off |=(point (add x (mul 3 y))) :: bitfield address - ++ set |=(point (con bud (bex (off +<)))) :: set point - ++ win %- lien :_ |=(a=@ =(a (dis a bud))) :: test for win - (rip 4 0wl04h0.4A0Aw.4A00s.0e070) :: - -- :: - :: :: :: - :::: :: :: semantics - :: :: :: - ++ go :: per game - |_ game :: - ++ at |_ point :: per point - ++ g +>+< :: game - ++ k !|(x o) :: ok move - ++ m ?.(k [| g] [& g:t:?:(who y p)]) :: move - ++ o (~(get bo boo) +<) :: old at o - ++ p .(boo (~(set bo boo) +<)) :: play at o - ++ t .(who !who) :: take turn - ++ v ?:(x (icon &) ?:(o (icon |) '.')) :: view - ++ x (~(get bo box) +<) :: old at x - ++ y .(box (~(set bo box) +<)) :: play at x - -- :: - ++ res ?: ~(win bo box) `"{~[(icon &)]} wins" :: result - ?: ~(win bo boo) `"{~[(icon |)]} wins" :: - ?: =(511 (con boo box)) `"tie :-(" ~ :: - ++ row |= y=@ :~ (add y '1') :: print row - ' ' ~(v at y 0) :: - ' ' ~(v at y 1) :: - ' ' ~(v at y 2) :: - == :: - ++ tab ~["+ 1 2 3" (row 0) (row 1) (row 2)] :: print table - -- :: - -- :: -:: :: :: -:::: :: :: server - :: :: :: -=> |% :: arvo structures - ++ axle ,[%0 eye=face gam=game] :: agent state - ++ card ,[%diff lime] :: update - ++ face (pair (list ,@c) (map bone sole-share)) :: interface - ++ lime ,[%sole-effect sole-effect] :: console update - ++ move (pair bone card) :: cause and action - -- :: -=> |% :: parsers - ++ colm (cook |=(a=@ (sub a '1')) (shim '1' '3')) :: row or column - ++ come ;~(plug colm ;~(pfix fas colm)) :: coordinate - -- :: -|_ [hid=hide moz=(list move) axle] :: per agent -++ et :: - |_ [from say=sole-share] :: per console - ++ abet +>(q.eye (~(put by q.eye) ost say)) :: continue - ++ amok +>(q.eye (~(del by q.eye) ost)) :: discontinue - ++ beep (emit %bel ~) :: bad user - ++ delt |= cal=sole-change :: input line change - =^ cul say (remit:sole cal good) :: - ?~ cul (park:abet(p.eye buf.say) | ~) :: - abet:beep:(emit det/u.cul) :: - ++ emit |= fec=sole-effect ^+ +> :: send effect - +>(moz [[ost %diff %sole-effect fec] moz]) :: - ++ emil |= fex=(list sole-effect) :: send effects - ?~(fex +> $(fex t.fex, +> (emit i.fex))) :: - ++ good |=((list ,@c) -:(rose (tufa +<) come)) :: valid input - ++ kick |= point :: move command - =^ dud gam ~(m ~(at go gam) +<) :: - ?. dud abet:beep =+ mus=~(res go gam) :: - (park:abet(gam ?^(mus *game gam)) %2 mus) :: - ++ line =^ cal say (transmit:sole set/p.eye) :: update command - (emit %det cal) :: - ++ make =+ dur=(rust (tufa p.eye) come) :: - ?~ dur abet:beep :: - (kick:line(p.eye ~) +.dur) :: - ++ mean |=((unit tape) ?~(+< +> (emit txt/+<+))) :: optional message - ++ play |= lev=?(%0 %1 %2) :: update by level - ?-(lev %0 +>, %1 line, %2 line:show:prom) :: - ++ plow |= [lev=?(%0 %1 %2) mus=(unit tape)] :: complete print - abet:(mean:(play lev) mus) :: - ++ prom %^ emit %pro %& :- %tictactoe :: update prompt - ": {~[(icon who.gam)]} to move (row/col): " :: - ++ rend (turn `wall`~(tab go gam) |=(tape txt/+<)) :: table print - ++ show (emit %mor rend) :: update board - ++ sole ~(. cs say) :: console library - ++ work |= act=sole-action :: console input - ?:(?=(%det -.act) (delt +.act) make) :: - -- :: -++ abet [(flop moz) .(moz ~)] :: resolve core -++ flet |=(from ~(. et +< (~(got by q.eye) ost))) :: in old client -++ fret |=(from ~(. et +< *sole-share)) :: in new client -++ pals %+ turn (pale hid (prix /sole)) |= sink :: per console - [[p=p.+< q=q.+<] r=(~(got by q.eye) p.+<)] :: -++ park |= [lev=?(%0 %1 %2) mus=(unit tape)] :: general update - =+ pals |- ^+ +>.^$ ?~ +< +>.^$ :: - $(+< t.+<, +>.^$ (~(plow et i.+<) lev mus)) :: -:: :: :: -:::: :: :: events - :: :: :: -++ peer-sole :: console subscribe - |= [from *] =< abet :: - (plow:(fret +<-) %2 ~) :: -++ poke-sole-action :: console input - |= [from act=sole-action] =< abet :: - (work:(flet +<-) act) :: -++ prep |= [from old=(unit ,[(list move) axle])] :: initialize - =< abet ?~ old +> =< (park %2 ~) :: - +>(+<+ u.old) :: -++ pull-sole :: disconnect console - |= [from *] =< abet :: - amok:(flet +<-) :: --- diff --git a/demo/files/2-ape-tictactoe.hoon b/demo/files/2-ape-tictactoe.hoon deleted file mode 100644 index a3934572e..000000000 --- a/demo/files/2-ape-tictactoe.hoon +++ /dev/null @@ -1,174 +0,0 @@ -:: :: :: -:::: /hook/core/acto/ape :: :: dependencies - :: :: :: -/- *sole :: structures -/+ sole :: libraries -:: :: :: -:::: :: :: structures - !: :: :: -=> |% :: board logic - ++ board ,@ :: one-player bitfield - ++ point ,[x=@ y=@] :: coordinate - ++ game ,[who=? box=board boo=board] :: game state - ++ icon |=(? ?:(+< 'X' 'O')) :: display at - ++ bo :: per board - |_ bud=board :: - ++ get |=(point =(1 (cut 0 [(off +<) 1] bud))) :: get point - ++ off |=(point (add x (mul 3 y))) :: bitfield address - ++ set |=(point (con bud (bex (off +<)))) :: set point - ++ win %- lien :_ |=(a=@ =(a (dis a bud))) :: test for win - (rip 4 0wl04h0.4A0Aw.4A00s.0e070) :: with bitmasks - -- :: - ++ go :: per game - |_ game :: - ++ at |_ point :: per point - ++ g +>+< :: game - ++ k !|(x o) :: ok move - ++ m ?.(k [| g] [& g:t:?:(who y p)]) :: move - ++ o (~(get bo boo) +<) :: old at o - ++ p .(boo (~(set bo boo) +<)) :: play at o - ++ t .(who !who) :: take turn - ++ v ?:(x (icon &) ?:(o (icon |) '.')) :: view - ++ x (~(get bo box) +<) :: old at x - ++ y .(box (~(set bo box) +<)) :: play at x - -- :: - ++ res ?: ~(win bo box) `"{~[(icon &)]} wins" :: result - ?: ~(win bo boo) `"{~[(icon |)]} wins" :: - ?: =(511 (con boo box)) `"tie :-(" ~ :: - ++ row |= y=@ :~ (add y '1') :: print row - ' ' ~(v at y 0) :: - ' ' ~(v at y 1) :: - ' ' ~(v at y 2) :: - == :: - ++ tab ~["+ 1 2 3" (row 0) (row 1) (row 2)] :: print table - -- :: - -- :: -:: :: :: -:::: :: :: server - :: :: :: -=> |% :: arvo structures - ++ axle ,[%1 eye=face but=tube gam=game] :: agent state - ++ axon $?(axle [%0 eye=face gam=game]) :: historical state - ++ card $% [%diff lime] :: update - [%quit ~] :: cancel - [%peer wire dock path] :: subscribe - [%pull wire dock ~] - == :: - ++ face (pair (list ,@c) (map bone sole-share)) :: interface - ++ lime $% [%sole-effect sole-effect] :: :sole update - [%octo-game game] :: :octo update - == :: - ++ move (pair bone card) :: cause and action - ++ mote (pair ship ,?) :: remote binding - ++ tube (unit (pair ,? mote)) :: alive, remote - -- :: -=> |% :: parsers - ++ colm (cook |=(a=@ (sub a '1')) (shim '1' '3')) :: row or column - ++ come ;~(plug colm ;~(pfix fas colm)) :: coordinate - ++ comb (pick come ;~(pfix sig (punt comp))) :: all command input - ++ comp ;~(plug fed:ag ;~(pfix ace (flag %x %o))) :: login command - ++ cope |=(? ?:(+< (stag %| (cold ~ sig)) comb)) :: with wait mode - -- :: -|_ [hid=hide moz=(list move) axle] :: per agent -++ et :: - |_ [from say=sole-share] :: per console client - ++ abet +>(q.eye (~(put by q.eye) ost say)) :: continue - ++ amok +>(q.eye (~(del by q.eye) ost)) :: discontinue - ++ beep (emit %bel ~) :: bad user - ++ cusp (cope wait) :: parsing rule - ++ delt |= cal=sole-change :: input line change - =^ cul say (remit:sole cal good) :: - ?~ cul (park:abet(p.eye buf.say) | ~) :: - abet:beep:(emit det/u.cul) :: - ++ emit |= fec=sole-effect ^+ +> :: send effect - +>(moz [[ost %diff %sole-effect fec] moz]) :: - ++ emil |= fex=(list sole-effect) :: send effects - ?~(fex +> $(fex t.fex, +> (emit i.fex))) :: - ++ good |=((list ,@c) -:(rose (tufa +<) cusp)) :: valid input - ++ kick |= point :: move command - =^ dud gam ~(m ~(at go gam) +<) :: - ?. dud abet:beep =+ mus=~(res go gam) :: - (park:abet(gam ?^(mus *game gam)) %2 mus) :: - ++ line =^ cal say (transmit:sole set/p.eye) :: update command - (emit %det cal) :: - ++ make =+ dur=(rust (tufa p.eye) comb) :: - ?~ dur abet:beep :: - =. + line(p.eye ~) :: - ?-(+<.dur & (kick +>.dur), | (plan +>.dur)) :: - ++ mean |=((unit tape) ?~(+< +> (emit txt/+<+))) :: optional message - ++ play |= lev=?(%0 %1 %2) :: update by level - ?-(lev %0 +>, %1 line, %2 line:show:prom) :: - ++ plow |= [lev=?(%0 %1 %2) mus=(unit tape)] :: complete print - abet:(mean:(play lev) mus) :: - ++ prom %^ emit %pro %& :- %octo :: update prompt - ?: wait "(their turn) " :: - ": {~[(icon who.gam)]} to move (row/col): " :: - ++ plan |= mut=(unit mote) :: peer command - ?~ mut ?~(but abet:beep stop:abet) :: - ?^(but abet:beep (link:abet u.mut)) :: - ++ rend (turn `wall`~(tab go gam) |=(tape txt/+<)) :: table print - ++ show (emit %mor rend) :: update board - ++ sole ~(. cs say) :: console library - ++ wait &(?=(^ but) !=(q.q.u.but who.gam)) :: waiting turn - ++ work |= act=sole-action :: console input - ?:(?=(%det -.act) (delt +.act) make) :: - -- :: -++ abet [(flop moz) .(moz ~)] :: resolve core -++ dump |=(mov=move %_(+> moz [mov moz])) :: send move -++ dish |=(cad=card (dump 0 cad)) :: forward move -++ flet |=(from ~(. et +< (~(got by q.eye) ost))) :: in old client -++ fret |=(from ~(. et +< *sole-share)) :: in new client -++ like |=(a=ship |*(* [/octo [a %tictactoe] +<])) :: to friend -++ link |= mot=mote %+ dish(but `[| mot]) %peer :: subscribe to friend - ((like p.mot) /octo/net/[?:(q.mot %x %o)]) :: -++ pals %+ turn (pale hid (prix /sole)) |= sink :: per console - [[p=p.+< q=q.+<] r=(~(got by q.eye) p.+<)] :: -++ park |= [lev=?(%0 %1 %2) mus=(unit tape)] :: update all - =. +> ?:(=(%2 lev) push +>) :: - =+ pals :: - |- ^+ +>.^$ ?~ +< +>.^$ :: - $(+< t.+<, +>.^$ (~(plow et i.+<) lev mus)) :: -++ push =+ pey=(pale hid (prix /octo)) |- ^+ +> :: update friends - ?~(pey +> $(pey t.pey, +> (sell p.i.pey))) :: -++ sell |=(ost=bone (dump ost %diff %octo-game gam)) :: update friend -++ stop (dish(but ~) pull/((like +>-.but) ~)) :: cancel subscribe -:: ::::::::::::::: -:::: :: :: :: hooks - :: ::::::::::::::: -++ diff-octo-game :: friend update - |= [then gam=game] =< abet :: - ?. &(?=([~ %& *] but) =(src p.q.u.but)) +> :: - ?: =(^gam gam) +> :: - (park(gam gam) %2 ~) :: -++ peer-octo-net :: urbit peer - |= [from pax=path] =< abet :: - =+ who==(%x -.pax) :: - ?^ but (park %2 ~) :: - (park:(link src !who) %2 `"net from {}") :: -++ peer-sole :: console subscribe - |= [from pax=path] =< abet :: - (plow:(fret +<-) %2 ~) :: -++ poke-sole-action :: console input - |= [from act=sole-action] =< abet :: - (work:(flet +<-) act) :: -++ prep |= [from old=(unit ,[(list move) axon])] :: initialize - =< abet ?~ old +> :: - =< (park %2 ~) :: - ?- -.+>.old :: - %1 +>(+<+ u.old) :: - %0 +>(eye.+< eye.+>.old, gam.+< gam.+>.old):: - == :: -++ pull-octo :: - |= [from *] =< abet :: - (park(but ~) %2 `"dropped") :: -++ pull-sole :: disconnect console - |= [from *] =< abet :: - amok:(flet +<-) :: -++ quit-octo :: unlinked by friend - |=([then ~] abet:(park(but ~) %0 `"removed")) :: -++ reap-octo :: linked to friend - |= [then saw=(unit tang)] =< abet :: - ?> ?=([~ %| *] but) :: - ?^ saw (park:stop %0 `"fail to {}") :: - (park(p.u.but %&) %0 `"link to {}") :: --- diff --git a/demo/files/3-ape-tictactoe.hoon b/demo/files/3-ape-tictactoe.hoon deleted file mode 100644 index 42365e72d..000000000 --- a/demo/files/3-ape-tictactoe.hoon +++ /dev/null @@ -1,185 +0,0 @@ -:: :: :: -:::: /hook/core/acto/ape :: :: dependencies - :: :: :: -/- *sole :: structures -/+ sole :: libraries -:: :: :: -:::: :: :: structures - !: :: :: -=> |% :: board logic - ++ board ,@ :: one-player bitfield - ++ point ,[x=@ y=@] :: coordinate - ++ game ,[who=? box=board boo=board] :: game state - ++ icon |=(? ?:(+< 'X' 'O')) :: display at - ++ bo :: per board - |_ bud=board :: - ++ get |=(point =(1 (cut 0 [(off +<) 1] bud))) :: get point - ++ off |=(point (add x (mul 3 y))) :: bitfield address - ++ set |=(point (con bud (bex (off +<)))) :: set point - ++ win %- lien :_ |=(a=@ =(a (dis a bud))) :: test for win - (rip 4 0wl04h0.4A0Aw.4A00s.0e070) :: with bitmasks - -- :: - ++ go :: per game - |_ game :: - ++ at |_ point :: per point - ++ g +>+< :: game - ++ k !|(x o) :: ok move - ++ m ?.(k [| g] [& g:t:?:(who y p)]) :: move - ++ o (~(get bo boo) +<) :: old at o - ++ p .(boo (~(set bo boo) +<)) :: play at o - ++ t .(who !who) :: take turn - ++ v ?:(x (icon &) ?:(o (icon |) '.')) :: view - ++ x (~(get bo box) +<) :: old at x - ++ y .(box (~(set bo box) +<)) :: play at x - -- :: - ++ res ?: ~(win bo box) `"{~[(icon &)]} wins" :: result - ?: ~(win bo boo) `"{~[(icon |)]} wins" :: - ?: =(511 (con boo box)) `"tie :-(" ~ :: - ++ row |= y=@ :~ (add y '1') :: print row - ' ' ~(v at y 0) :: - ' ' ~(v at y 1) :: - ' ' ~(v at y 2) :: - == :: - ++ tab ~["+ 1 2 3" (row 0) (row 1) (row 2)] :: print table - -- :: - -- :: -:: :: :: -:::: :: :: server - :: :: :: -=> |% :: arvo structures - ++ axle ,[%1 eye=face but=tube gam=game] :: agent state - ++ axon $?(axle [%0 eye=face gam=game]) :: historical state - ++ card $% [%diff lime] :: update - [%quit ~] :: cancel - [%peer wire dock path] :: subscribe - [%pull wire dock ~] - == :: - ++ face (pair (list ,@c) (map bone sole-share)) :: interface - ++ lime $% [%sole-effect sole-effect] :: :sole update - [%octo-game game] :: :octo update - == :: - ++ move (pair bone card) :: cause and action - ++ mote (pair ship ,?) :: remote binding - ++ tube (unit (pair ,? mote)) :: alive, remote - -- :: -=> |% :: parsers - ++ colm (cook |=(a=@ (sub a '1')) (shim '1' '3')) :: row or column - ++ come ;~(plug colm ;~(pfix fas colm)) :: coordinate - ++ comb (pick come ;~(pfix sig (punt comp))) :: all command input - ++ comp ;~(plug fed:ag ;~(pfix ace (flag %x %o))) :: login command - ++ cope |=(? ?:(+< (stag %| (cold ~ sig)) comb)) :: with wait mode - -- :: -|_ [hid=hide moz=(list move) axle] :: per agent -++ et :: - |_ [from say=sole-share] :: per console client - ++ abet +>(q.eye (~(put by q.eye) ost say)) :: continue - ++ amok +>(q.eye (~(del by q.eye) ost)) :: discontinue - ++ beep (emit %bel ~) :: bad user - ++ cusp (cope wait) :: parsing rule - ++ delt |= cal=sole-change :: input line change - =^ cul say (remit:sole cal good) :: - ?~ cul (park:abet(p.eye buf.say) | ~) :: - abet:beep:(emit det/u.cul) :: - ++ emit |= fec=sole-effect ^+ +> :: send effect - +>(moz [[ost %diff %sole-effect fec] moz]) :: - ++ emil |= fex=(list sole-effect) :: send effects - ?~(fex +> $(fex t.fex, +> (emit i.fex))) :: - ++ good |=((list ,@c) -:(rose (tufa +<) cusp)) :: valid input - ++ kick |= point :: move command - =^ dud gam ~(m ~(at go gam) +<) :: - ?. dud abet:beep =+ mus=~(res go gam) :: - (park:abet(gam ?^(mus *game gam)) %2 mus) :: - ++ line =^ cal say (transmit:sole set/p.eye) :: update command - (emit %det cal) :: - ++ make =+ dur=(rust (tufa p.eye) comb) :: - ?~ dur abet:beep :: - =. + line(p.eye ~) :: - ?-(+<.dur & (kick +>.dur), | (plan +>.dur)) :: - ++ mean |=((unit tape) ?~(+< +> (emit txt/+<+))) :: optional message - ++ play |= lev=?(%0 %1 %2) :: update by level - ?-(lev %0 +>, %1 line, %2 line:show:prom) :: - ++ plow |= [lev=?(%0 %1 %2) mus=(unit tape)] :: complete print - abet:(mean:(play lev) mus) :: - ++ prom %^ emit %pro %& :- %octo :: update prompt - ?: wait "(their turn) " :: - ": {~[(icon who.gam)]} to move (row/col): " :: - ++ plan |= mut=(unit mote) :: peer command - ?~ mut ?~(but abet:beep stop:abet) :: - ?^(but abet:beep (link:abet u.mut)) :: - ++ rend (turn `wall`~(tab go gam) |=(tape txt/+<)) :: table print - ++ show (emit %mor rend) :: update board - ++ sole ~(. cs say) :: console library - ++ wait &(?=(^ but) !=(q.q.u.but who.gam)) :: waiting turn - ++ work |= act=sole-action :: console input - ?:(?=(%det -.act) (delt +.act) make) :: - -- :: -++ abet [(flop moz) .(moz ~)] :: resolve core -++ dump |=(mov=move %_(+> moz [mov moz])) :: send move -++ dish |=(cad=card (dump 0 cad)) :: forward move -++ flet |=(from ~(. et +< (~(got by q.eye) ost))) :: in old client -++ fret |=(from ~(. et +< *sole-share)) :: in new client -++ like |=(a=ship |*(* [/octo [a %tictactoe] +<])) :: to friend -++ link |= mot=mote %+ dish(but `[| mot]) %peer :: subscribe to friend - ((like p.mot) /octo/net/[?:(q.mot %x %o)]) :: -++ pals %+ turn (pale hid (prix /sole)) |= sink :: per console - [[p=p.+< q=q.+<] r=(~(got by q.eye) p.+<)] :: -++ park |= [lev=?(%0 %1 %2) mus=(unit tape)] :: update all - =. +> ?:(=(%2 lev) push +>) :: - =+ pals :: - |- ^+ +>.^$ ?~ +< +>.^$ :: - $(+< t.+<, +>.^$ (~(plow et i.+<) lev mus)) :: -++ push =+ pey=(pale hid (prix /octo)) |- ^+ +> :: update friends - ?~(pey +> $(pey t.pey, +> (sell p.i.pey))) :: -++ sell |=(ost=bone (dump ost %diff %octo-game gam)) :: update friend -++ stop (dish(but ~) pull/((like +>-.but) ~)) :: cancel subscribe -:: ::::::::::::::: -:::: :: :: :: hooks - :: ::::::::::::::: -++ diff-octo-game :: friend update - |= [then gam=game] =< abet :: - ?. &(?=([~ %& *] but) =(src p.q.u.but)) +> :: - ?: =(^gam gam) +> :: - (park(gam gam) %2 ~) :: -++ peer-octo-net :: urbit peer - |= [from pax=path] =< abet :: - =+ who==(%x -.pax) :: - ?^ but (park %2 ~) :: - (park:(link src !who) %2 `"net from {}") :: -++ peer-octo-web :: web peer - |= [from pax=path] =< abet :: - ~& [%peer-web +<] :: - ?^ but (park %2 ~) :: - %+ park(but `[%& src !who.gam]) %2 :: - `"web from {}" :: -++ peer-sole :: console subscribe - |= [from pax=path] =< abet :: - (plow:(fret +<-) %2 ~) :: -++ poke-sole-action :: console input - |= [from act=sole-action] =< abet :: - (work:(flet +<-) act) :: -++ poke-octo-move :: - |= [from wha=point] =< abet :: - =^ dud gam ~(m ~(at go gam) wha) :: - ?> dud =+ mus=~(res go gam) :: - (park(gam ?^(mus *game gam)) %2 mus) :: -++ prep |= [from old=(unit ,[(list move) axon])] :: initialize - =< abet ?~ old +> :: - =< (park %2 ~) :: - ?- -.+>.old :: - %1 +>(+<+ u.old) :: - %0 +>(eye.+< eye.+>.old, gam.+< gam.+>.old):: - == :: -++ pull-octo :: - |= [from *] =< abet :: - (park(but ~) %2 `"dropped") :: -++ pull-sole :: disconnect console - |= [from *] =< abet :: - amok:(flet +<-) :: -++ quit-octo :: unlinked by friend - |=([then ~] abet:(park(but ~) %0 `"removed")) :: -++ reap-octo :: linked to friend - |= [then saw=(unit tang)] =< abet :: - ?> ?=([~ %| *] but) :: - ?^ saw (park:stop %0 `"fail to {}") :: - (park(p.u.but %&) %0 `"link to {}") :: --- diff --git a/demo/files/mar-octo-game.hoon b/demo/files/mar-octo-game.hoon deleted file mode 100644 index d776a3c4b..000000000 --- a/demo/files/mar-octo-game.hoon +++ /dev/null @@ -1,26 +0,0 @@ -:: -:::: /hook/door/octo-game/mar - :: -/? 310 -!: -|% -++ rip9 - =+ b=0 - |= a=@ ^- (list ,@A) - ?: =(b 9) ~ - [(cut 0 [b 1] a) $(b +(b))] --- -!: -|_ cod=[who=? box=@ boo=@] :: game state -:: -++ grab :: convert from - |% - ++ noun ,[who=? box=@ boo=@] :: clam from %noun - -- -++ grow - |% - ++ json ^- ^json - => |=(bor=@ `^json`a/(turn (rip9 bor) |=(a=@A [%b =(1 a)]))) - (jobe who/s/?:(who.cod %x %o) box/(. box.cod) boo/(. boo.cod) ~) - -- --- diff --git a/demo/files/mar-octo-move.hoon b/demo/files/mar-octo-move.hoon deleted file mode 100644 index ab13eee6b..000000000 --- a/demo/files/mar-octo-move.hoon +++ /dev/null @@ -1,16 +0,0 @@ -:: -:::: /hook/door/octo-move/mar - :: -/? 314 -!: -:::: - :: -=+ point=,[x=@ y=@] -|_ point -:: -++ grab :: convert from - |% - ++ json (corl need (at ni ni ~):jo) :: reparse from %json - ++ noun point :: clam from %noun - -- --- diff --git a/demo/files/pub-octo-hymn.hoon b/demo/files/pub-octo-hymn.hoon deleted file mode 100644 index 526b5f796..000000000 --- a/demo/files/pub-octo-hymn.hoon +++ /dev/null @@ -1,32 +0,0 @@ -:: -:: -:::: /hook/hymn/fab/octo/pub/ - :: -^- manx -;html - ;head - ;meta(charset "utf-8"); - ;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"); - ;script(type "text/javascript", src "/~/at/base/lib/urb.js"); - ;link(type "text/css", rel "stylesheet", href "/home/lib/base.css"); - ;link(type "text/css", rel "stylesheet", href "/home/pub/octo/src/main.css"); - ;title: :octo - == - ;body - ;div#what - ;div#ship - ;div.sig: ~ - ;div.ship; - ;div.as; - == - ;div#vs: vs - ;div#user - ;div.sig: ~ - ;div.ship; - ;div.as; - == - == - ;div#bord; - ;script(type "text/javascript", src "/home/pub/octo/src/main.js"); - == -== diff --git a/demo/files/pub-octo-main.css b/demo/files/pub-octo-main.css deleted file mode 100644 index 5ea0da7bc..000000000 --- a/demo/files/pub-octo-main.css +++ /dev/null @@ -1,102 +0,0 @@ -#what, -#bord { - width: 600px; - text-align: center; - position: absolute; - left: 50%; - margin-left: -300px; -} - -#what { - height: 36px; - top: 18px; -} - -#bord { - height: 600px; - position: absolute; - top: 111px; - opacity: .6; -} - -.turn #bord { - opacity: 1; -} - -#what { - font-family: "bau"; -} - -#what div { - display: inline-block; -} - -#what .ship { - font-weight: 400; - letter-spacing: 1px; - text-transform: uppercase; -} - -.turn #what #ship, -#what #user { - border: 2px solid #fff; -} - -#what #ship, -.turn #what #user { - border: 2px solid red; -} - -#what #ship, -#what #user { - padding: .6rem; -} - -#what .as { - width: 1.6rem; -} - -#vs { - margin: 0 1rem; - padding: .3rem; - color: #fff; - background-color: #000; -} - -.spac { - font-size: 100px; - line-height: 200px; -} - -.spac { - width: 198px; - height: 198px; - border: 1px solid #000; - text-align: center; - float: left; - cursor: pointer; -} - -.spac[data-index="0-0"], -.spac[data-index="1-0"], -.spac[data-index="2-0"] { - border-left: 0; -} - -.spac[data-index="0-0"], -.spac[data-index="0-1"], -.spac[data-index="0-2"] { - border-top: 0; -} - -.spac[data-index="2-0"], -.spac[data-index="2-1"], -.spac[data-index="2-2"] { - border-bottom: 0; -} - -.spac[data-index="0-2"], -.spac[data-index="1-2"], -.spac[data-index="2-2"] { - border-right: 0; -} diff --git a/demo/files/pub-octo-main.js b/demo/files/pub-octo-main.js deleted file mode 100644 index 0c5b697c9..000000000 --- a/demo/files/pub-octo-main.js +++ /dev/null @@ -1,62 +0,0 @@ -$(function() { - $bord = $('#bord') - $whom = $('#whom') - - lett = ["x","o"] - symb = [" ","✕","◯"] - draw = function(state) { - space = function(_state,y,x) { - return "
"+symb[_state]+"
" - } - s = "" - x = 0 - y = 0 - for(i=0;i<9;i++) { - j = [0,3,6,1,4,7,2,5,8][i] // XX math - s += space((state.box[j] ? 1 : 0)+(state.boo[j] ? 2 : 0),y,x) - x++ - if((i+1)%3 == 0) { - y++ - x=0 - } - } - $bord.html(s) - turn(state.who) - } - - which = null - turn = function(who) { - $('body').toggleClass('turn',(who == which)) - } - - assign = function(who) { - which = who - turn(who) - $('#ship .as').text(symb[Number(!lett.indexOf(who))+1]) - $('#user .as').text(symb[lett.indexOf(who)+1]) - } - - urb.appl = 'tictactoe' - urb.bind('/octo/web', function(err,res) { - if(which == null) { assign(res.data.who) } - draw(res.data) - }) - - // draw({ - // box:[false,false,false,false,false,false,false,false,false], - // boo:[false,false,false,false,false,false,false,false,false] - // }) - - $bord.on('click', function(e) { - if(!$('body').hasClass('turn')) { return false } - $t = $(e.target).closest('.spac') - data = $.map( - $t.attr('data-index').split('-'), - function(i) { return Number(i); }) - urb.send({mark:'octo-move',data:data}) - }) - - $('#ship .ship').text(window.urb.ship) - $('#user .ship').text(window.urb.user) -}) diff --git a/demo/install1.sh b/demo/install1.sh deleted file mode 100755 index 86f2ae199..000000000 --- a/demo/install1.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# -X=$1 -DEMO=demo -COLD=$DEMO/files -DESK=test/$X/$X/in/base - -echo "cp -f $COLD/1-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook" -mkdir -p $DESK/ape/tictactoe -cp -f $COLD/1-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook diff --git a/demo/install2.sh b/demo/install2.sh deleted file mode 100755 index 03beba022..000000000 --- a/demo/install2.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# -X=$1 -DEMO=demo -COLD=$DEMO/files -DESK=test/$X/$X/in/base - -echo "cp -f $COLD/2-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook" -mkdir -p $DESK/ape/tictactoe -cp -f $COLD/1-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook - -echo "cp -f $COLD/mar-octo-game.hoon $DESK/mar/octo-game/door.hook" -mkdir -p $DESK/mar/octo-game -cp -f $COLD/mar-octo-game.hoon $DESK/mar/octo-game/door.hook diff --git a/demo/install3.sh b/demo/install3.sh deleted file mode 100755 index 123c0eb3a..000000000 --- a/demo/install3.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# -X=$1 -DEMO=demo -COLD=$DEMO/files -DESK=test/$X/$X/in/base - -echo "cp -f $COLD/3-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook" -mkdir -p $DESK/ape/tictactoe -cp -f $COLD/3-ape-tictactoe.hoon $DESK/ape/tictactoe/core.hook - -echo "cp -f $COLD/mar-octo-game.hoon $DESK/mar/octo-game/door.hook" -mkdir -p $DESK/mar/octo-game -cp -f $COLD/mar-octo-game.hoon $DESK/mar/octo-game/door.hook - -echo "cp -f $COLD/pub-octo-hymn.hoon $DESK/pub/octo/fab/hymn.hook" -mkdir -p $DESK/pub/octo/fab -cp -f $COLD/pub-octo-hymn.hoon $DESK/pub/octo/fab/hymn.hook - -echo "cp -f $COLD/pub-octo-main.css $DESK/pub/octo/src/main.css" -mkdir -p $DESK/pub/octo/src -cp -f $COLD/pub-octo-main.css $DESK/pub/octo/src/main.css - -echo "cp -f $COLD/pub-octo-main.js $DESK/pub/octo/src/main.js" -cp -f $COLD/pub-octo-main.js $DESK/pub/octo/src/main.js diff --git a/demo/script-1.txt b/demo/script-1.txt deleted file mode 100644 index fdd6cb633..000000000 --- a/demo/script-1.txt +++ /dev/null @@ -1,27 +0,0 @@ -script: - ~tasfyn-partyv and ~talsur-todres decide to build a tic-tac-toe game - -tasfyn-partyv: would you like to play a game of thermonuclear war? - -talsur-todres: no. how about some tic-tac-toe? - -tasfyn-partyv: sure. but wait, do we have a server? - -talsur-todres: -features of the game: - (0) we build one-computer two-player TTT - (1) we build console tic-tac-toe - (2) we install it over the network - - + 1 2 3 - 1 X X - 2 O O - 3 X O X - - ? 1/3 - - (3) we update it to change the characters - - (4) maybe cheating with some pretyped assets, we make a web view - - (5) diff --git a/demo/script-2.txt b/demo/script-2.txt deleted file mode 100644 index c6a1d5c38..000000000 --- a/demo/script-2.txt +++ /dev/null @@ -1,147 +0,0 @@ -A == ~tasfyn-partyv -B == ~talsur-todres - - A and B, on unix terminals on different machines, clone and - build urbit from scratch, cutting over the build. - - Each screen is divided into two logical columns. A's - screen is filled with two shells. B's screen has a shell - on the left and is empty on the right. - - At the unix prompt, both run - - urbit -c myship - - type in an invisible ticket, and begin their ships. All - diagnostic messages are suppressed. Both users land - initially in :talk. - -A: is this thing on? - -B: who am i? why am i here? - -A: would you like to play a game of global thermonuclear war? - -B: wouldn't you prefer tic-tac-toe? - -A: sure, but i'll have to write it. hang on... - - A switches to :dojo and runs - - :+merge %tic-tac-a ~tasfyn-partyv %home - - In the other window, A runs vim and edits, occasionally - hitting :w to save the file: - - demo/file1.txt -> A/in/base/ape/tictactoe/core.hook - - After ++bo, - -A: the board state is a bitfield - -A: btw, you can watch me code at . - - B opens a browser and points it at , showing the - tree with live update every time A saves. - - After ++go: - -A: game semantics are not that complex... - - After ++move: - -A: basic console io, kinda boilerplaty - - After ++come: - -A: if you can infer the type of the product -A: of a combinator parser, you are probably -A: a typed functional language even if you -A: leave category theory to the real math nerds... - - After ++park: - -A: a fairly vanilla console server. probably some -A: of this should be sucked out into a library - -A: you can never completely beat the boilerplate. -A: also note that this is a two-way console with -A: operational transformation that cancels syntax -A: errors as you type, just like how :talk violates -A: your human rights by lowercasing your capitals. -A: finally, while the style is perfectly readable -A: for a hoon programmer, we don't normally go in -A: for this kind of mildly contrived topiary. - - After ++pull-sole: - -A: those were the event hooks where arvo calls us, -A: expecting a new state and a list of actions. -A: anyway, this should work - let's try it. -A: do this: - - :+sync %tic-tac-a ~tasfyn-partyv %tic-tac-a - :+start %tic-tac-a %tictactoe - - B does this. it puts him straight into TTT. - -A: now hang on, I'll join you. - - A uses ^V to pop the hood and types +~B/ - -A: bear in mind, this is a very crude shared space. -A: your server is just exporting a console interface -A: which we both can access. so essentially i'm -A: ssh-ed into your game world. - - They play a couple of moves. - -A: it's important to note that your urbit is also -A: in a sense, a database. try this from unix: - - killall -9 urbit - urbit myship - - B does this, comes back and plays a move. - -B: we don't seem to have lost any data. -A: we didn't even come close to losing data, -A: so let's come a little closer: - - killall -9 vere - rm -rf $checkpoint - urbit myship - - B does this, comes back and plays a move. - -B: whoa, that was heavy. -A: yeah, your life flashed before your eyes. or at least, -A: your event history. this system of checkpoint -A: and transaction log is actually how normal dbs work, -A: though urbit is designed as a personal computer and -A: hardly up for a normal db workload. - -B: it's a little odd that either of us could play X or O. -A: or even have an edit war in the command line. - - They have an edit war in the command line. - -B: it might be right for some things. not tictactoe. -A: then we'll have to change it! often when someone -A: installs your software, later you find out it's not -A: perfect and sometimes actually needs to be changed. -B: i've had that experience a number of times. -A: but it's always tricky to operate on a beating heart, -A: so let's try it in a small way first... - - A edits the source file and changes X to Z, or - maybe to a Unicode symbol. When he saves, the - change propagates to both consoles and also the - tree view on B's screen, even to the prompt UI. - -B: i've seen that sort of thing before. -A: really? in any case, let's do it for real. the next -A: version is a genuine distributed tictactoe with -A: its own peer-to-peer move protocol. surely this -A: is some fancy technology... - - A edits the source file into diff --git a/demo/script-3.txt b/demo/script-3.txt deleted file mode 100644 index 45e1e88c8..000000000 --- a/demo/script-3.txt +++ /dev/null @@ -1,162 +0,0 @@ -For dialogue: start with dialogue ad-libbed by whoever is -doing the production. Later, copy it into a script and -edit that script. - -For operation details, see commands.txt. Fill in the script -with literal operations *only once you have tested them -yourself*. - - A: build and boot A - - ... - "" - - A: private-message B - - ... - "" - - B: create demo desk - - ... - "" - - B: vim in application version 1, just typing, very fast - - ... - "" - - A: sync A's demo desk to B - - ... - "" - - B: log in to A's tictactoe (intentionally reversed) - - ... - "" - - A: start tictactoe on A - - A/B: play ONE full game of tictactoe, moves interleaved with - these subdemos: - - B changes X to Z in the source, then changes it back - - ... - "" - - A or B enters an invalid move, beep sound is heard - - ... - "" - - A kills and restarts the vere process: - - ... - "" - - A kills the vere process, deletes the checkpoint, restarts: - - ... - "" - - A or B enters an invalid move, beep sound is heard: - - ... - "" - - A and B tussle humorously over weird shared command line - - ... - "" - - B edits version 1 into version 2, automagically upgrading A - - ... - "" - - B logs out of A's tictactoe - - ... - "" - - B starts local tictactoe - - ... - "" - - B connects local tictactoe to A's server - - ... - "" - - B edits in version 3 ape, with web support - - ... - "" - - A: watch editing of application - - ... - "" - - B edits in mar, pub (very fast) - - ... - "" - - A: logs in to game url - - ... - "" - - A: brings up web talk - - ... - "" - - B: creates a local channel to talk about TTT - - ... - "" - - A: subscribes from the web UI to B's channel - - ... - "" - - C, D, and E: join the channel and give humorous advice - - ... - "" - - A: loses the game - - ... - "" - - B: sends bitcoin payment to A - - ... - "" - - A: points browser at blockchain.info, shows real payment - - ... - "" - -close: - credit screen 1: - - *everyone who has ever worked/for at Tlon, in alphabetical - order*, - - credit screen 2: - - *every non Tlon github uid that has contributed to our repository* - - credit screen 3: - - ~, huge - diff --git a/outside/anachronism/src/parser.c b/outside/anachronism/src/parser.c index 7c1af7221..bd014ae1e 100644 --- a/outside/anachronism/src/parser.c +++ b/outside/anachronism/src/parser.c @@ -51,10 +51,6 @@ struct telnet_parser { #line 53 "src/parser.c" static const int telnet_parser_start = 7; -static const int telnet_parser_first_final = 7; -static const int telnet_parser_error = -1; - -static const int telnet_parser_en_main = 7; #line 130 "src/parser.rl"