Artifact ec6f056c2438ce460bb5d4d283574fc464532901:
File editor.rx part of check-in [545ff85ff0] - editor: use whend combinator instead of "dup nn = [ drop .., ] drop .., ifTrue" by crc on 2011-11-25 17:06:02. [annotate]
0000: 28 20 72 65 74 72 6f 20 65 64 69 74 6f 72 20 76 ( retro editor v
0010: 31 31 2d 32 30 31 31 2e 31 31 2e 32 34 20 7e 7e 11-2011.11.24 ~~
0020: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0030: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0040: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 20 29 0a ~~~~~~~~~~~~~ ).
0050: 28 20 4b 65 79 20 20 20 20 20 41 63 74 69 6f 6e ( Key Action
0060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
00a0: 28 20 2d 2d 2d 20 20 20 20 20 2d 2d 2d 2d 2d 2d ( --- ------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 20 20 20 20 -----------
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
00f0: 28 20 20 6b 20 20 20 20 20 20 4d 6f 76 65 20 63 ( k Move c
0100: 75 72 73 6f 72 20 75 70 20 20 20 20 20 20 20 20 ursor up
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0140: 28 20 20 68 20 20 20 20 20 20 4d 6f 76 65 20 63 ( h Move c
0150: 75 72 73 6f 72 20 6c 65 66 74 20 20 20 20 20 20 ursor left
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0190: 28 20 20 6a 20 20 20 20 20 20 4d 6f 76 65 20 63 ( j Move c
01a0: 75 72 73 6f 72 20 64 6f 77 6e 20 20 20 20 20 20 ursor down
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
01e0: 28 20 20 6c 20 20 20 20 20 20 4d 6f 76 65 20 63 ( l Move c
01f0: 75 72 73 6f 72 20 72 69 67 68 74 20 20 20 20 20 ursor right
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0230: 28 20 20 5b 20 20 20 20 20 20 53 77 69 74 63 68 ( [ Switch
0240: 20 74 6f 20 70 72 65 76 69 6f 75 73 20 62 6c 6f to previous blo
0250: 63 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck
0260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0280: 28 20 20 5d 20 20 20 20 20 20 53 77 69 74 63 68 ( ] Switch
0290: 20 74 6f 20 6e 65 78 74 20 62 6c 6f 63 6b 20 20 to next block
02a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
02d0: 28 20 20 65 20 20 20 20 20 20 45 76 61 6c 75 61 ( e Evalua
02e0: 74 65 20 63 75 72 72 65 6e 74 20 62 6c 6f 63 6b te current block
02f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0320: 28 20 20 45 20 20 20 20 20 20 45 76 61 6c 75 61 ( E Evalua
0330: 74 65 20 61 6c 6c 20 62 6c 6f 63 6b 73 20 20 20 te all blocks
0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0370: 28 20 20 6d 20 20 20 20 20 20 4d 6f 76 65 20 63 ( m Move c
0380: 75 72 73 6f 72 20 74 6f 20 73 74 61 72 74 20 6f ursor to start o
0390: 66 20 6e 65 78 74 20 6c 69 6e 65 20 20 20 20 20 f next line
03a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
03b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
03c0: 28 20 20 4b 20 20 20 20 20 20 4d 6f 76 65 20 63 ( K Move c
03d0: 75 72 73 6f 72 20 74 6f 20 74 6f 70 20 6c 69 6e ursor to top lin
03e0: 65 20 6f 66 20 62 6c 6f 63 6b 20 20 20 20 20 20 e of block
03f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0410: 28 20 20 48 20 20 20 20 20 20 4d 6f 76 65 20 63 ( H Move c
0420: 75 72 73 6f 72 20 74 6f 20 73 74 61 72 74 20 6f ursor to start o
0430: 66 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 20 f current line
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0460: 28 20 20 4a 20 20 20 20 20 20 4d 6f 76 65 20 63 ( J Move c
0470: 75 72 73 6f 72 20 74 6f 20 6c 61 73 74 20 6c 69 ursor to last li
0480: 6e 65 20 6f 66 20 62 6c 6f 63 6b 20 20 20 20 20 ne of block
0490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
04b0: 28 20 20 4c 20 20 20 20 20 20 4d 6f 76 65 20 63 ( L Move c
04c0: 75 72 73 6f 72 20 74 6f 20 65 6e 64 20 6f 66 20 ursor to end of
04d0: 63 75 72 72 65 6e 74 20 6c 69 6e 65 20 20 20 20 current line
04e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
04f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0500: 28 20 20 4d 20 20 20 20 20 20 43 65 6e 74 65 72 ( M Center
0510: 20 63 75 72 73 6f 72 20 6f 6e 20 63 75 72 72 65 cursor on curre
0520: 6e 74 20 6c 69 6e 65 20 20 20 20 20 20 20 20 20 nt line
0530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0550: 28 20 20 7a 20 20 20 20 20 20 45 78 69 74 20 52 ( z Exit R
0560: 78 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xE
0570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
05a0: 28 20 20 7b 20 20 20 20 20 20 4c 6f 61 64 20 22 ( { Load "
05b0: 62 6c 6f 63 6b 73 22 20 20 20 20 20 20 20 20 20 blocks"
05c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
05e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
05f0: 28 20 20 7d 20 20 20 20 20 20 53 61 76 65 20 22 ( } Save "
0600: 62 6c 6f 63 6b 73 22 20 20 20 20 20 20 20 20 20 blocks"
0610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0640: 28 20 54 41 42 20 20 20 20 20 53 77 69 74 63 68 ( TAB Switch
0650: 20 62 65 74 77 65 65 6e 20 65 64 69 74 20 61 6e between edit an
0660: 64 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64 65 20 20 d command mode
0670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a ).
0690: 28 20 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ( ~~~~~~~~~~~~~~
06a0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
06b0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
06c0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
06d0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 20 29 0a ~~~~~~~~~~~~~ ).
06e0: 0a 63 68 61 69 6e 3a 20 65 64 69 74 6f 72 27 0a .chain: editor'.
06f0: 0a 7b 7b 0a 20 20 32 20 65 6c 65 6d 65 6e 74 73 .{{. 2 elements
0700: 20 62 75 66 66 65 72 20 63 6f 75 6e 74 0a 20 20 buffer count.
0710: 3a 20 72 65 73 74 6f 72 65 20 28 20 2d 20 20 20 : restore ( -
0720: 29 20 26 67 65 74 63 20 3a 64 65 76 65 63 74 6f ) &getc :devecto
0730: 72 20 6f 6b 20 3b 0a 20 20 3a 20 67 65 74 20 20 r ok ;. : get
0740: 20 20 20 28 20 2d 63 20 20 29 20 40 62 75 66 66 ( -c ) @buff
0750: 65 72 20 40 20 3b 0a 20 20 3a 20 6e 65 78 74 20 er @ ;. : next
0760: 20 20 20 28 20 2d 63 20 20 29 20 40 63 6f 75 6e ( -c ) @coun
0770: 74 20 5b 20 63 6f 75 6e 74 20 2d 2d 20 67 65 74 t [ count -- get
0780: 20 62 75 66 66 65 72 20 2b 2b 20 5d 20 5b 20 33 buffer ++ ] [ 3
0790: 32 20 72 65 73 74 6f 72 65 20 5d 20 69 66 20 3b 2 restore ] if ;
07a0: 0a 20 20 3a 20 72 65 70 6c 61 63 65 20 28 20 2d . : replace ( -
07b0: 20 20 20 29 20 26 6e 65 78 74 20 26 67 65 74 63 ) &next &getc
07c0: 20 3a 69 73 20 3b 0a 20 20 3a 20 65 76 61 6c 20 :is ;. : eval
07d0: 20 20 20 28 20 61 6e 2d 20 29 20 21 63 6f 75 6e ( an- ) !coun
07e0: 74 20 21 62 75 66 66 65 72 20 72 65 70 6c 61 63 t !buffer replac
07f0: 65 20 3b 0a 0a 20 20 37 20 65 6c 65 6d 65 6e 74 e ;.. 7 element
0800: 73 20 23 62 6c 6f 63 6b 73 20 6f 66 66 73 65 74 s #blocks offset
0810: 20 62 6c 6b 20 6c 69 6e 65 20 63 6f 6c 75 6d 6e blk line column
0820: 20 6d 6f 64 65 20 61 63 74 69 76 65 0a 20 20 3a mode active. :
0830: 20 74 6f 42 6c 6f 63 6b 20 20 20 31 36 30 30 20 toBlock 1600
0840: 2a 20 40 6f 66 66 73 65 74 20 2b 20 3b 0a 20 20 * @offset + ;.
0850: 3a 20 74 68 69 73 42 6c 6f 63 6b 20 40 62 6c 6b : thisBlock @blk
0860: 20 74 6f 42 6c 6f 63 6b 20 3b 0a 20 20 3a 20 74 toBlock ;. : t
0870: 6f 4c 69 6e 65 20 20 20 20 38 30 20 2a 20 74 68 oLine 80 * th
0880: 69 73 42 6c 6f 63 6b 20 2b 20 3b 0a 0a 20 20 28 isBlock + ;.. (
0890: 20 63 68 65 63 6b 20 62 6f 75 6e 64 61 72 69 65 check boundarie
08a0: 73 20 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e s ~~~~~~~~~~~~~~
08b0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
08c0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
08d0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 20 29 0a 20 20 3a ~~~~~~~~~~ ). :
08e0: 20 74 6f 70 20 28 20 2d 20 29 20 20 30 20 21 6c top ( - ) 0 !l
08f0: 69 6e 65 20 3b 0a 20 20 3a 20 62 6f 74 20 28 20 ine ;. : bot (
0900: 2d 20 29 20 31 39 20 21 6c 69 6e 65 20 3b 0a 20 - ) 19 !line ;.
0910: 20 3a 20 62 65 67 20 28 20 2d 20 29 20 20 30 20 : beg ( - ) 0
0920: 21 63 6f 6c 75 6d 6e 20 3b 0a 20 20 3a 20 65 6e !column ;. : en
0930: 64 20 28 20 2d 20 29 20 37 39 20 21 63 6f 6c 75 d ( - ) 79 !colu
0940: 6d 6e 20 3b 0a 20 20 3a 20 6d 69 64 20 28 20 2d mn ;. : mid ( -
0950: 20 29 20 34 31 20 21 63 6f 6c 75 6d 6e 20 3b 0a ) 41 !column ;.
0960: 20 20 3a 20 31 73 74 20 28 20 2d 20 29 20 20 30 : 1st ( - ) 0
0970: 20 21 62 6c 6b 20 3b 0a 20 20 3a 20 62 6f 75 6e !blk ;. : boun
0980: 64 73 20 28 20 2d 20 29 0a 20 20 20 20 40 63 6f ds ( - ). @co
0990: 6c 75 6d 6e 20 2d 31 20 3d 20 5b 20 65 6e 64 20 lumn -1 = [ end
09a0: 6c 69 6e 65 20 2d 2d 20 5d 20 69 66 54 72 75 65 line -- ] ifTrue
09b0: 0a 20 20 20 20 40 63 6f 6c 75 6d 6e 20 38 30 20 . @column 80
09c0: 3d 20 5b 20 62 65 67 20 6c 69 6e 65 20 2b 2b 20 = [ beg line ++
09d0: 5d 20 69 66 54 72 75 65 0a 20 20 20 20 40 6c 69 ] ifTrue. @li
09e0: 6e 65 20 20 20 2d 31 20 3d 20 5b 20 74 6f 70 20 ne -1 = [ top
09f0: 62 6c 6b 20 20 2d 2d 20 5d 20 69 66 54 72 75 65 blk -- ] ifTrue
0a00: 0a 20 20 20 20 40 6c 69 6e 65 20 20 20 32 30 20 . @line 20
0a10: 3d 20 5b 20 62 6f 74 20 62 6c 6b 20 20 2b 2b 20 = [ bot blk ++
0a20: 5d 20 69 66 54 72 75 65 0a 20 20 20 20 40 62 6c ] ifTrue. @bl
0a30: 6b 20 20 20 20 2d 31 20 3d 20 5b 20 31 73 74 20 k -1 = [ 1st
0a40: 20 20 20 20 20 20 20 20 5d 20 69 66 54 72 75 65 ] ifTrue
0a50: 0a 20 20 20 20 40 62 6c 6b 20 20 20 20 40 23 62 . @blk @#b
0a60: 6c 6f 63 6b 73 20 3e 3d 20 5b 20 62 6c 6b 20 2d locks >= [ blk -
0a70: 2d 20 5d 20 69 66 54 72 75 65 20 3b 0a 0a 20 20 - ] ifTrue ;..
0a80: 28 20 64 69 73 70 6c 61 79 20 61 20 62 6c 6f 63 ( display a bloc
0a90: 6b 20 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e k ~~~~~~~~~~~~~~
0aa0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0ab0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0ac0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 20 29 0a 20 20 ~~~~~~~~~~~ ).
0ad0: 3a 20 72 6f 77 73 20 20 20 20 32 30 20 5b 20 64 : rows 20 [ d
0ae0: 75 70 20 38 30 20 5b 20 40 20 70 75 74 63 20 5d up 80 [ @ putc ]
0af0: 20 5e 74 79 70 65 73 27 42 55 46 46 45 52 20 65 ^types'BUFFER e
0b00: 61 63 68 40 20 38 30 20 2b 20 63 72 20 5d 20 74 ach@ 80 + cr ] t
0b10: 69 6d 65 73 20 3b 0a 20 20 3a 20 6d 6f 64 65 3f imes ;. : mode?
0b20: 20 20 20 40 6d 6f 64 65 20 5b 20 22 49 4e 53 22 @mode [ "INS"
0b30: 20 5d 20 5b 20 22 43 4d 44 22 20 5d 20 69 66 20 ] [ "CMD" ] if
0b40: 3b 0a 20 20 3a 20 2e 62 6c 6f 63 6b 20 20 40 63 ;. : .block @c
0b50: 6f 6c 75 6d 6e 20 40 6c 69 6e 65 20 40 62 6c 6b olumn @line @blk
0b60: 20 6d 6f 64 65 3f 20 22 28 25 73 29 20 23 25 64 mode? "(%s) #%d
0b70: 20 2d 20 25 64 3a 25 64 20 20 22 20 70 75 74 73 - %d:%d " puts
0b80: 20 3b 0a 20 20 3a 20 62 61 72 20 20 20 20 20 38 ;. : bar 8
0b90: 30 20 5b 20 27 2d 20 70 75 74 63 20 5d 20 74 69 0 [ '- putc ] ti
0ba0: 6d 65 73 20 63 72 20 3b 0a 20 20 3a 20 76 62 20 mes cr ;. : vb
0bb0: 20 20 20 20 20 40 62 6c 6b 20 74 6f 42 6c 6f 63 @blk toBloc
0bc0: 6b 20 72 6f 77 73 20 64 72 6f 70 20 62 61 72 20 k rows drop bar
0bd0: 2e 62 6c 6f 63 6b 20 3b 0a 20 20 3a 20 28 76 29 .block ;. : (v)
0be0: 20 20 20 20 20 28 20 20 20 2d 20 20 20 29 20 63 ( - ) c
0bf0: 6c 65 61 72 20 76 62 20 3b 0a 20 20 3a 20 70 6f lear vb ;. : po
0c00: 73 20 20 20 20 20 28 20 20 20 2d 63 6c 20 29 20 s ( -cl )
0c10: 40 63 6f 6c 75 6d 6e 20 40 6c 69 6e 65 20 3b 0a @column @line ;.
0c20: 20 20 3a 20 67 65 74 20 20 20 20 20 28 20 63 6c : get ( cl
0c30: 2d 61 20 20 29 20 74 6f 4c 69 6e 65 20 2b 20 3b -a ) toLine + ;
0c40: 0a 20 20 3a 20 76 61 20 20 20 20 20 20 28 20 20 . : va (
0c50: 61 2d 76 61 20 29 20 64 75 70 20 40 20 73 77 61 a-va ) dup @ swa
0c60: 70 20 3b 0a 20 20 3a 20 63 21 20 20 20 20 20 20 p ;. : c!
0c70: 28 20 20 61 2d 20 20 20 29 20 27 2a 20 73 77 61 ( a- ) '* swa
0c80: 70 20 21 20 3b 0a 20 20 3a 20 73 68 6f 77 20 20 p ! ;. : show
0c90: 20 20 28 20 76 61 2d 20 20 20 29 20 64 75 70 20 ( va- ) dup
0ca0: 63 21 20 28 76 29 20 21 20 3b 0a 20 20 3a 20 64 c! (v) ! ;. : d
0cb0: 69 73 70 6c 61 79 20 28 20 20 20 2d 20 20 20 29 isplay ( - )
0cc0: 20 62 6f 75 6e 64 73 20 70 6f 73 20 67 65 74 20 bounds pos get
0cd0: 76 61 20 73 68 6f 77 20 3b 0a 0a 20 20 28 20 69 va show ;.. ( i
0ce0: 6e 70 75 74 20 70 72 6f 63 65 73 73 69 6e 67 20 nput processing
0cf0: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0d00: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0d10: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
0d20: 7e 7e 7e 7e 7e 7e 7e 7e 20 29 0a 20 20 3a 20 61 ~~~~~~~~ ). : a
0d30: 64 76 61 6e 63 65 3f 20 28 20 20 2d 20 20 29 20 dvance? ( - )
0d40: 6c 69 6e 65 20 2b 2b 20 40 6c 69 6e 65 20 32 30 line ++ @line 20
0d50: 20 3e 3d 20 5b 20 30 20 21 6c 69 6e 65 20 62 6c >= [ 0 !line bl
0d60: 6b 20 2b 2b 20 5d 20 69 66 54 72 75 65 20 30 20 k ++ ] ifTrue 0
0d70: 21 63 6f 6c 75 6d 6e 20 3b 0a 20 20 3a 20 64 65 !column ;. : de
0d80: 6c 20 28 20 2d 20 29 0a 20 20 20 20 40 63 6f 6c l ( - ). @col
0d90: 75 6d 6e 20 64 75 70 0a 20 20 20 20 5b 20 64 75 umn dup. [ du
0da0: 70 20 38 30 20 3d 0a 20 20 20 20 20 20 5b 20 64 p 80 =. [ d
0db0: 72 6f 70 20 21 63 6f 6c 75 6d 6e 20 64 69 73 70 rop !column disp
0dc0: 6c 61 79 20 20 20 20 30 20 5d 0a 20 20 20 20 20 lay 0 ].
0dd0: 20 5b 20 33 32 20 6f 76 65 72 20 40 6c 69 6e 65 [ 32 over @line
0de0: 20 67 65 74 20 21 20 31 2b 20 2d 31 20 5d 20 69 get ! 1+ -1 ] i
0df0: 66 0a 20 20 20 20 5d 20 77 68 69 6c 65 20 3b 0a f. ] while ;.
0e00: 20 20 3a 20 72 65 6d 61 70 20 20 20 20 28 20 63 : remap ( c
0e10: 2d 63 20 29 0a 20 20 20 20 5b 20 20 39 20 3d 20 -c ). [ 9 =
0e20: 5d 20 5b 20 32 37 20 5d 20 77 68 65 6e 64 0a 20 ] [ 27 ] whend.
0e30: 20 20 20 5b 20 31 33 20 3d 20 5d 20 5b 20 20 30 [ 13 = ] [ 0
0e40: 20 5d 20 77 68 65 6e 64 0a 20 20 20 20 5b 20 31 ] whend. [ 1
0e50: 30 20 3d 20 5d 20 5b 20 20 30 20 61 64 76 61 6e 0 = ] [ 0 advan
0e60: 63 65 3f 20 64 69 73 70 6c 61 79 20 5d 20 77 68 ce? display ] wh
0e70: 65 6e 64 20 3b 0a 20 20 3a 20 69 6e 70 75 74 20 end ;. : input
0e80: 20 20 20 28 20 20 2d 20 20 29 0a 20 20 20 20 72 ( - ). r
0e90: 65 70 65 61 74 0a 20 20 20 20 20 20 64 69 73 70 epeat. disp
0ea0: 6c 61 79 0a 20 20 20 20 20 20 40 6d 6f 64 65 20 lay. @mode
0eb0: 30 3b 20 64 72 6f 70 0a 20 20 20 20 20 20 67 65 0; drop. ge
0ec0: 74 63 20 30 3b 0a 20 20 20 20 20 20 64 75 70 20 tc 0;. dup
0ed0: 32 37 20 3c 3e 20 30 3b 20 64 72 6f 70 0a 20 20 27 <> 0; drop.
0ee0: 20 20 20 20 64 75 70 20 20 38 20 3d 20 5b 20 64 dup 8 = [ d
0ef0: 72 6f 70 20 63 6f 6c 75 6d 6e 20 2d 2d 20 64 69 rop column -- di
0f00: 73 70 6c 61 79 20 5d 20 5b 20 70 6f 73 20 67 65 splay ] [ pos ge
0f10: 74 20 21 20 63 6f 6c 75 6d 6e 20 2b 2b 20 5d 20 t ! column ++ ]
0f20: 69 66 0a 20 20 20 20 61 67 61 69 6e 20 3b 0a 20 if. again ;.
0f30: 20 3a 20 72 78 65 2e 69 6e 20 20 20 28 20 20 2d : rxe.in ( -
0f40: 63 20 29 20 6d 6f 64 65 20 6f 6e 20 72 65 6d 61 c ) mode on rema
0f50: 70 70 69 6e 67 20 5b 20 72 65 6d 61 70 70 69 6e pping [ remappin
0f60: 67 20 6f 66 66 20 69 6e 70 75 74 20 5d 20 70 72 g off input ] pr
0f70: 65 73 65 72 76 65 20 6d 6f 64 65 20 6f 66 66 20 eserve mode off
0f80: 3b 0a 20 20 3a 20 6d 61 74 63 68 20 20 20 20 28 ;. : match (
0f90: 20 63 2d 20 20 29 20 22 24 24 5f 22 20 64 75 70 c- ) "$$_" dup
0fa0: 20 5b 20 32 20 2b 20 21 20 5d 20 64 69 70 20 66 [ 2 + ! ] dip f
0fb0: 69 6e 64 20 5b 20 40 64 2d 3e 78 74 20 64 6f 20 ind [ @d->xt do
0fc0: 5d 20 26 64 72 6f 70 20 69 66 20 3b 0a 20 20 3a ] &drop if ;. :
0fd0: 20 65 64 69 74 3f 20 20 20 20 28 20 63 2d 63 20 edit? ( c-c
0fe0: 29 20 64 75 70 20 32 37 20 3d 20 5b 20 72 78 65 ) dup 27 = [ rxe
0ff0: 2e 69 6e 20 64 72 6f 70 20 5d 20 69 66 54 72 75 .in drop ] ifTru
1000: 65 20 3b 0a 0a 20 20 28 20 76 61 72 69 6f 75 73 e ;.. ( various
1010: 20 73 75 70 70 6f 72 74 20 62 69 74 73 20 20 7e support bits ~
1020: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
1030: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
1040: 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e ~~~~~~~~~~~~~~~~
1050: 7e 7e 20 29 0a 20 20 3a 20 6e 65 77 20 20 20 20 ~~ ). : new
1060: 20 20 20 20 28 20 20 2d 20 29 20 40 6f 66 66 73 ( - ) @offs
1070: 65 74 20 33 32 20 31 36 30 30 20 40 23 62 6c 6f et 32 1600 @#blo
1080: 63 6b 73 20 2a 20 66 69 6c 6c 20 3b 0a 20 20 3a cks * fill ;. :
1090: 20 65 20 20 20 20 20 20 20 20 20 20 28 20 20 2d e ( -
10a0: 20 29 20 74 68 69 73 42 6c 6f 63 6b 20 31 36 30 ) thisBlock 160
10b0: 30 20 65 76 61 6c 20 3b 0a 20 20 3a 20 65 61 20 0 eval ;. : ea
10c0: 20 20 20 20 20 20 20 20 28 20 20 2d 20 29 20 40 ( - ) @
10d0: 6f 66 66 73 65 74 20 40 23 62 6c 6f 63 6b 73 20 offset @#blocks
10e0: 31 36 30 30 20 2a 20 65 76 61 6c 20 3b 0a 20 20 1600 * eval ;.
10f0: 3a 20 72 75 6e 20 20 20 20 20 20 20 20 28 20 20 : run (
1100: 2d 20 29 0a 20 20 20 20 61 63 74 69 76 65 20 6f - ). active o
1110: 6e 20 26 72 65 6d 61 70 20 26 72 65 6d 61 70 4b n &remap &remapK
1120: 65 79 73 20 3a 69 73 20 63 6c 65 61 72 0a 20 20 eys :is clear.
1130: 20 20 5b 20 64 69 73 70 6c 61 79 20 67 65 74 63 [ display getc
1140: 20 65 64 69 74 3f 20 6d 61 74 63 68 20 40 61 63 edit? match @ac
1150: 74 69 76 65 20 5d 20 77 68 69 6c 65 20 3b 0a 2d tive ] while ;.-
1160: 2d 2d 72 65 76 65 61 6c 2d 2d 2d 0a 20 20 3a 20 --reveal---. :
1170: 73 65 74 42 6c 6f 63 6b 73 20 20 28 20 6e 2d 20 setBlocks ( n-
1180: 29 20 21 23 62 6c 6f 63 6b 73 20 40 6d 65 6d 6f ) !#blocks @memo
1190: 72 79 20 31 36 30 30 20 40 23 62 6c 6f 63 6b 73 ry 1600 @#blocks
11a0: 20 2a 20 2d 20 21 6f 66 66 73 65 74 20 6e 65 77 * - !offset new
11b0: 20 3b 0a 20 20 3a 20 65 64 69 74 20 28 20 2d 20 ;. : edit ( -
11c0: 29 0a 20 20 20 20 40 63 68 20 32 32 20 3e 3d 20 ). @ch 22 >=
11d0: 40 63 77 20 38 30 20 3e 3d 20 61 6e 64 0a 20 20 @cw 80 >= and.
11e0: 20 20 26 72 75 6e 20 5b 20 22 72 65 71 75 69 72 &run [ "requir
11f0: 65 73 20 61 6e 20 38 30 78 32 32 20 6f 72 20 67 es an 80x22 or g
1200: 72 65 61 74 65 72 20 64 69 73 70 6c 61 79 2c 20 reater display,
1210: 73 6f 72 72 79 21 5c 6e 22 20 70 75 74 73 20 5d sorry!\n" puts ]
1220: 20 69 66 20 3b 0a 20 20 3a 20 24 24 6b 20 6c 69 if ;. : $$k li
1230: 6e 65 20 2d 2d 20 3b 0a 20 20 3a 20 24 24 68 20 ne -- ;. : $$h
1240: 63 6f 6c 75 6d 6e 20 2d 2d 20 3b 0a 20 20 3a 20 column -- ;. :
1250: 24 24 6a 20 6c 69 6e 65 20 2b 2b 20 3b 0a 20 20 $$j line ++ ;.
1260: 3a 20 24 24 6c 20 63 6f 6c 75 6d 6e 20 2b 2b 20 : $$l column ++
1270: 3b 0a 20 20 3a 20 24 24 6d 20 24 24 6b 20 62 65 ;. : $$m $$k be
1280: 67 20 3b 0a 20 20 3a 20 24 24 4b 20 74 6f 70 20 g ;. : $$K top
1290: 3b 0a 20 20 3a 20 24 24 48 20 62 65 67 20 3b 0a ;. : $$H beg ;.
12a0: 20 20 3a 20 24 24 4a 20 62 6f 74 20 3b 0a 20 20 : $$J bot ;.
12b0: 3a 20 24 24 4c 20 65 6e 64 20 3b 0a 20 20 3a 20 : $$L end ;. :
12c0: 24 24 4d 20 6d 69 64 20 3b 0a 20 20 3a 20 24 24 $$M mid ;. : $$
12d0: 44 20 64 65 6c 20 3b 0a 20 20 3a 20 24 24 5b 20 D del ;. : $$[
12e0: 62 6c 6b 20 2d 2d 20 3b 0a 20 20 3a 20 24 24 5d blk -- ;. : $$]
12f0: 20 62 6c 6b 20 2b 2b 20 3b 0a 20 20 3a 20 24 24 blk ++ ;. : $$
1300: 7b 20 40 6f 66 66 73 65 74 20 22 62 6c 6f 63 6b { @offset "block
1310: 73 22 20 5e 66 69 6c 65 73 27 73 6c 75 72 70 20 s" ^files'slurp
1320: 64 72 6f 70 20 3b 0a 20 20 3a 20 24 24 7d 20 40 drop ;. : $$} @
1330: 6f 66 66 73 65 74 20 40 23 62 6c 6f 63 6b 73 20 offset @#blocks
1340: 31 36 30 30 20 2a 20 22 62 6c 6f 63 6b 73 22 20 1600 * "blocks"
1350: 5e 66 69 6c 65 73 27 73 70 65 77 20 64 72 6f 70 ^files'spew drop
1360: 20 3b 0a 20 20 3a 20 24 24 65 20 61 63 74 69 76 ;. : $$e activ
1370: 65 20 6f 66 66 20 20 65 20 3b 0a 20 20 3a 20 24 e off e ;. : $
1380: 24 45 20 61 63 74 69 76 65 20 6f 66 66 20 65 61 $E active off ea
1390: 20 3b 0a 20 20 3a 20 24 24 7a 20 61 63 74 69 76 ;. : $$z activ
13a0: 65 20 6f 66 66 20 20 20 20 3b 0a 20 20 31 32 38 e off ;. 128
13b0: 20 73 65 74 42 6c 6f 63 6b 73 0a 7d 7d 0a 3b 63 setBlocks.}}.;c
13c0: 68 61 69 6e 0a 0a 67 6c 6f 62 61 6c 0a 77 69 74 hain..global.wit
13d0: 68 20 65 64 69 74 6f 72 27 0a 0a 0a 64 6f 63 7b h editor'...doc{
13e0: 0a 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 ..============.R
13f0: 65 74 72 6f 20 45 64 69 74 6f 72 0a 3d 3d 3d 3d etro Editor.====
1400: 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 2d 2d 2d 2d 2d ========...-----
1410: 2d 2d 2d 0a 4f 76 65 72 76 69 65 77 0a 2d 2d 2d ---.Overview.---
1420: 2d 2d 2d 2d 2d 0a 54 68 65 20 52 65 74 72 6f 20 -----.The Retro
1430: 45 64 69 74 6f 72 20 69 73 20 61 20 62 6c 6f 63 Editor is a bloc
1440: 6b 20 65 64 69 74 6f 72 20 66 6f 72 20 75 73 65 k editor for use
1450: 20 77 69 74 68 20 52 65 74 72 6f 2e 0a 0a 46 6f with Retro...Fo
1460: 72 20 6d 6f 73 74 20 75 73 65 72 73 2c 20 66 69 r most users, fi
1470: 6c 65 73 20 61 72 65 20 61 20 62 65 74 74 65 72 les are a better
1480: 20 63 68 6f 69 63 65 2e 20 48 6f 77 65 76 65 72 choice. However
1490: 20 74 68 65 72 65 20 61 72 65 0a 61 74 20 6c 65 there are.at le
14a0: 61 73 74 20 74 77 6f 20 63 61 73 65 73 20 77 68 ast two cases wh
14b0: 65 72 65 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 ere you may want
14c0: 20 6f 72 20 6e 65 65 64 20 74 6f 20 75 73 65 20 or need to use
14d0: 74 68 65 6d 3a 0a 0a 20 2a 20 6b 65 65 70 69 6e them:.. * keepin
14e0: 67 20 73 6f 75 72 63 65 73 20 65 6d 62 65 64 65 g sources embede
14f0: 64 20 69 6e 20 74 68 65 20 69 6d 61 67 65 0a 20 d in the image.
1500: 2a 20 69 66 20 79 6f 75 20 61 72 65 20 75 73 69 * if you are usi
1510: 6e 67 20 61 20 56 4d 20 74 68 61 74 20 6c 61 63 ng a VM that lac
1520: 6b 73 20 66 69 6c 65 20 69 2f 6f 0a 0a 0a 2d 2d ks file i/o...--
1530: 2d 2d 2d 2d 2d 0a 4c 6f 61 64 69 6e 67 0a 2d 2d -----.Loading.--
1540: 2d 2d 2d 2d 2d 0a 0a 3a 3a 0a 0a 20 20 69 6e 63 -----..::.. inc
1550: 6c 75 64 65 20 65 64 69 74 6f 72 2e 72 78 0a 0a lude editor.rx..
1560: 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 51 75 69 .-----------.Qui
1570: 63 6b 20 47 75 69 64 65 0a 2d 2d 2d 2d 2d 2d 2d ck Guide.-------
1580: 2d 2d 2d 2d 0a 0a 53 74 61 72 74 69 6e 67 0a 3d ----..Starting.=
1590: 3d 3d 3d 3d 3d 3d 3d 0a 4f 6e 63 65 20 6c 6f 61 =======.Once loa
15a0: 64 65 64 2c 20 79 6f 75 27 6c 6c 20 6e 65 65 64 ded, you'll need
15b0: 20 74 6f 20 73 74 61 72 74 20 69 74 20 75 73 69 to start it usi
15c0: 6e 67 20 2a 2a 65 64 69 74 2a 2a 3a 0a 0a 3a 3a ng **edit**:..::
15d0: 0a 0a 20 20 65 64 69 74 0a 0a 0a 54 68 65 20 49 .. edit...The I
15e0: 6e 74 65 72 66 61 63 65 0a 3d 3d 3d 3d 3d 3d 3d nterface.=======
15f0: 3d 3d 3d 3d 3d 3d 0a 0a 59 6f 75 27 6c 6c 20 73 ======..You'll s
1600: 65 65 20 61 20 73 63 72 65 65 6e 20 6c 6f 6f 6b ee a screen look
1610: 69 6e 67 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 ing something li
1620: 6b 65 3a 0a 0a 3a 3a 0a 0a 20 20 2a 0a 20 20 0a ke:..::.. *. .
1630: 20 20 0a 20 20 0a 20 20 0a 20 20 0a 20 20 0a 20 . . . . .
1640: 20 0a 20 20 0a 20 20 0a 20 20 0a 20 20 0a 20 20 . . . . .
1650: 0a 20 20 0a 20 20 0a 20 20 0a 20 20 0a 20 20 0a . . . . . .
1660: 20 20 0a 20 20 0a 20 20 2d 2d 2d 2d 2d 2d 2d 2d . . --------
1670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
16a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
16b0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 28 43 4d 44 29 --------. (CMD)
16c0: 20 23 30 20 2d 20 30 3a 30 0a 0a 0a 54 68 65 20 #0 - 0:0...The
16d0: 61 73 74 65 72 69 73 6b 20 61 74 20 74 68 65 20 asterisk at the
16e0: 74 6f 70 20 69 73 20 74 68 65 20 63 75 72 73 6f top is the curso
16f0: 72 2e 20 54 68 65 20 6c 69 6e 65 20 61 74 20 74 r. The line at t
1700: 68 65 0a 62 6f 74 74 6f 6d 20 6d 61 72 6b 73 20 he.bottom marks
1710: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 the end of the c
1720: 75 72 72 65 6e 74 20 62 6c 6f 63 6b 2e 20 42 65 urrent block. Be
1730: 6c 6f 77 20 74 68 65 20 6c 69 6e 65 0a 69 73 20 low the line.is
1740: 61 20 73 74 61 74 75 73 20 72 6f 77 2c 20 73 68 a status row, sh
1750: 6f 77 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e owing the curren
1760: 74 20 6d 6f 64 65 20 28 43 4d 44 20 6f 72 20 49 t mode (CMD or I
1770: 4e 53 29 2c 20 74 68 65 0a 63 75 72 72 65 6e 74 NS), the.current
1780: 20 62 6c 6f 63 6b 20 6e 75 6d 62 65 72 2c 20 61 block number, a
1790: 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 nd the current r
17a0: 6f 77 20 61 6e 64 20 63 6f 6c 75 6d 6e 2e 0a 0a ow and column...
17b0: 0a 45 78 69 74 69 6e 67 0a 3d 3d 3d 3d 3d 3d 3d .Exiting.=======
17c0: 0a 50 72 65 73 73 20 2a 7a 2a 2e 20 54 68 69 73 .Press *z*. This
17d0: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 79 should return y
17e0: 6f 75 20 74 6f 20 74 68 65 20 52 65 74 72 6f 20 ou to the Retro
17f0: 6c 69 73 74 65 6e 65 72 2e 0a 0a 0a 4e 61 76 69 listener....Navi
1800: 67 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d gation.=========
1810: 3d 0a 52 65 73 74 61 72 74 20 74 68 65 20 65 64 =.Restart the ed
1820: 69 74 6f 72 20 77 69 74 68 20 2a 2a 65 64 69 74 itor with **edit
1830: 2a 2a 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 **...The followi
1840: 6e 67 20 6b 65 79 73 20 63 61 6e 20 62 65 20 75 ng keys can be u
1850: 73 65 64 20 74 6f 20 6e 61 76 69 67 61 74 65 20 sed to navigate
1860: 74 68 72 6f 75 67 68 20 74 68 65 0a 62 6c 6f 63 through the.bloc
1870: 6b 73 2e 0a 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d ks...+-----+----
1880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
18a0: 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 4b 65 79 20 --------+.| Key
18b0: 7c 20 55 73 65 64 20 66 6f 72 20 20 20 20 20 20 | Used for
18c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2b |.+
18e0: 3d 3d 3d 3d 3d 2b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d =====+==========
18f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1910: 3d 3d 2b 0a 7c 20 20 69 20 20 7c 20 4d 6f 76 65 ==+.| i | Move
1920: 20 63 75 72 73 6f 72 20 75 70 20 20 20 20 20 20 cursor up
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1940: 20 20 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b |.+-----+
1950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 ------------+.|
1980: 20 6a 20 20 7c 20 4d 6f 76 65 20 63 75 72 73 6f j | Move curso
1990: 72 20 6c 65 66 74 20 20 20 20 20 20 20 20 20 20 r left
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b0: 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d |.+-----+------
19c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
19d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
19e0: 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 20 6b 20 20 7c 20 ------+.| k |
19f0: 4d 6f 76 65 20 63 75 72 73 6f 72 20 64 6f 77 6e Move cursor down
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a10: 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2b 2d 2d |.+--
1a20: 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---+------------
1a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1a50: 2b 0a 7c 20 20 6c 20 20 7c 20 4d 6f 76 65 20 63 +.| l | Move c
1a60: 75 72 73 6f 72 20 72 69 67 68 74 20 20 20 20 20 ursor right
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a80: 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d |.+-----+--
1a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1aa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ab0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 20 5b ----------+.| [
1ac0: 20 20 7c 20 53 77 69 74 63 68 20 74 6f 20 70 72 | Switch to pr
1ad0: 65 76 69 6f 75 73 20 62 6c 6f 63 6b 20 20 20 20 evious block
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c |
1af0: 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d .+-----+--------
1b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1b20: 2d 2d 2d 2d 2b 0a 7c 20 20 5d 20 20 7c 20 53 77 ----+.| ] | Sw
1b30: 69 74 63 68 20 74 6f 20 6e 65 78 74 20 62 6c 6f itch to next blo
1b40: 63 6b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ck
1b50: 20 20 20 20 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d |.+----
1b60: 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -+--------------
1b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a --------------+.
1b90: 7c 20 20 6d 20 20 7c 20 4d 6f 76 65 20 63 75 72 | m | Move cur
1ba0: 73 6f 72 20 74 6f 20 73 74 61 72 74 20 6f 66 20 sor to start of
1bb0: 6e 65 78 74 20 6c 69 6e 65 20 20 20 20 20 20 20 next line
1bc0: 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d |.+-----+----
1bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 20 49 20 20 --------+.| I
1c00: 7c 20 4d 6f 76 65 20 63 75 72 73 6f 72 20 74 6f | Move cursor to
1c10: 20 74 6f 70 20 6c 69 6e 65 20 6f 66 20 62 6c 6f top line of blo
1c20: 63 6b 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2b ck |.+
1c30: 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----+----------
1c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1c60: 2d 2d 2b 0a 7c 20 20 4a 20 20 7c 20 4d 6f 76 65 --+.| J | Move
1c70: 20 63 75 72 73 6f 72 20 74 6f 20 73 74 61 72 74 cursor to start
1c80: 20 6f 66 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 of current line
1c90: 20 20 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b |.+-----+
1ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 ------------+.|
1cd0: 20 4b 20 20 7c 20 4d 6f 76 65 20 63 75 72 73 6f K | Move curso
1ce0: 72 20 74 6f 20 6c 61 73 74 20 6c 69 6e 65 20 6f r to last line o
1cf0: 66 20 62 6c 6f 63 6b 20 20 20 20 20 20 20 20 20 f block
1d00: 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d |.+-----+------
1d10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1d20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1d30: 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 20 4c 20 20 7c 20 ------+.| L |
1d40: 4d 6f 76 65 20 63 75 72 73 6f 72 20 74 6f 20 65 Move cursor to e
1d50: 6e 64 20 6f 66 20 63 75 72 72 65 6e 74 20 6c 69 nd of current li
1d60: 6e 65 20 20 20 20 20 20 20 20 20 7c 0a 2b 2d 2d ne |.+--
1d70: 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---+------------
1d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1da0: 2b 0a 7c 20 20 4d 20 20 7c 20 43 65 6e 74 65 72 +.| M | Center
1db0: 20 63 75 72 73 6f 72 20 6f 6e 20 63 75 72 72 65 cursor on curre
1dc0: 6e 74 20 6c 69 6e 65 20 20 20 20 20 20 20 20 20 nt line
1dd0: 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d |.+-----+--
1de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 0a 45 6e ----------+...En
1e10: 74 72 79 20 4d 6f 64 65 0a 3d 3d 3d 3d 3d 3d 3d try Mode.=======
1e20: 3d 3d 3d 0a 55 73 65 20 74 68 65 20 2a 74 61 62 ===.Use the *tab
1e30: 2a 20 6b 65 79 20 74 6f 20 73 77 69 74 63 68 20 * key to switch
1e40: 74 6f 20 65 6e 74 72 79 20 6d 6f 64 65 2c 20 61 to entry mode, a
1e50: 6e 64 20 61 67 61 69 6e 20 74 6f 0a 73 77 69 74 nd again to.swit
1e60: 63 68 20 62 61 63 6b 20 74 6f 20 63 6f 6d 6d 61 ch back to comma
1e70: 6e 64 20 6d 6f 64 65 2e 0a 0a 0a 45 76 61 6c 75 nd mode....Evalu
1e80: 61 74 69 6e 67 20 43 6f 64 65 0a 3d 3d 3d 3d 3d ating Code.=====
1e90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 68 65 6e 20 ==========.When
1ea0: 79 6f 75 27 72 65 20 72 65 61 64 79 20 74 6f 20 you're ready to
1eb0: 70 72 6f 63 65 73 73 20 74 68 65 20 63 6f 64 65 process the code
1ec0: 20 79 6f 75 27 76 65 20 65 6e 74 65 72 65 64 2c you've entered,
1ed0: 20 75 73 65 0a 74 68 65 20 66 6f 6c 6c 6f 77 69 use.the followi
1ee0: 6e 67 20 6b 65 79 73 20 74 6f 20 70 61 73 73 20 ng keys to pass
1ef0: 74 68 65 20 63 6f 64 65 20 74 6f 20 74 68 65 20 the code to the
1f00: 6c 69 73 74 65 6e 65 72 2e 0a 0a 2a 2a 4e 6f 74 listener...**Not
1f10: 65 3a 2a 2a 20 2a 54 68 69 73 20 77 69 6c 6c 20 e:** *This will
1f20: 73 74 6f 70 20 74 68 65 20 65 64 69 74 6f 72 20 stop the editor
1f30: 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 2e 20 59 6f from running. Yo
1f40: 75 20 77 69 6c 6c 0a 68 61 76 65 20 74 6f 20 72 u will.have to r
1f50: 65 73 74 61 72 74 20 69 74 20 6d 61 6e 75 61 6c estart it manual
1f60: 6c 79 20 61 66 74 65 72 20 65 76 61 6c 75 61 74 ly after evaluat
1f70: 69 6e 67 20 63 6f 64 65 2e 2a 0a 0a 2b 2d 2d 2d ing code.*..+---
1f80: 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --+-------------
1f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b ---------------+
1fb0: 0a 7c 20 4b 65 79 20 7c 20 55 73 65 64 20 66 6f .| Key | Used fo
1fc0: 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1fe0: 20 20 20 20 7c 0a 2b 3d 3d 3d 3d 3d 2b 3d 3d 3d |.+=====+===
1ff0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2000: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 2b 0a 7c 20 20 65 20 =========+.| e
2020: 20 7c 20 20 45 76 61 6c 75 61 74 65 20 63 75 72 | Evaluate cur
2030: 72 65 6e 74 20 62 6c 6f 63 6b 20 20 20 20 20 20 rent block
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a |.
2050: 2b 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d +-----+---------
2060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2080: 2d 2d 2d 2b 0a 7c 20 20 45 20 20 7c 20 20 45 76 ---+.| E | Ev
2090: 61 6c 75 61 74 65 20 61 6c 6c 20 62 6c 6f 63 6b aluate all block
20a0: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s
20b0: 20 20 20 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d |.+-----
20c0: 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d +---------------
20d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
20e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a -------------+..
20f0: 0a 4c 6f 61 64 69 6e 67 20 41 6e 64 20 53 61 76 .Loading And Sav
2100: 69 6e 67 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ing.============
2110: 3d 3d 3d 3d 3d 3d 0a 42 6c 6f 63 6b 73 20 61 72 ======.Blocks ar
2120: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 e stored in the
2130: 69 6d 61 67 65 20 66 69 6c 65 2e 20 49 66 20 79 image file. If y
2140: 6f 75 20 61 72 65 20 75 73 69 6e 67 20 61 20 56 ou are using a V
2150: 4d 0a 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 M.that supports
2160: 74 68 65 20 66 69 6c 65 73 27 20 76 6f 63 61 62 the files' vocab
2170: 75 6c 61 72 79 2c 20 79 6f 75 20 63 61 6e 20 75 ulary, you can u
2180: 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 se the following
2190: 0a 6b 65 79 73 20 74 6f 20 69 6d 70 6f 72 74 20 .keys to import
21a0: 61 6e 64 20 65 78 70 6f 72 74 20 74 68 65 20 62 and export the b
21b0: 6c 6f 63 6b 73 20 74 6f 20 72 65 67 75 6c 61 72 locks to regular
21c0: 20 66 69 6c 65 73 2e 0a 0a 2b 2d 2d 2d 2d 2d 2b files...+-----+
21d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
21e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
21f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 7c 20 ------------+.|
2200: 4b 65 79 20 7c 20 55 73 65 64 20 66 6f 72 20 20 Key | Used for
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2230: 20 7c 0a 2b 3d 3d 3d 3d 3d 2b 3d 3d 3d 3d 3d 3d |.+=====+======
2240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2260: 3d 3d 3d 3d 3d 3d 2b 0a 7c 20 20 7b 20 20 7c 20 ======+.| { |
2270: 20 4c 6f 61 64 20 74 68 65 20 63 6f 6e 74 65 6e Load the conten
2280: 74 73 20 6f 66 20 22 62 6c 6f 63 6b 73 22 20 20 ts of "blocks"
2290: 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2b 2d 2d |.+--
22a0: 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---+------------
22b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
22d0: 2b 0a 7c 20 20 7d 20 20 7c 20 20 53 74 6f 72 65 +.| } | Store
22e0: 20 61 6c 6c 20 62 6c 6f 63 6b 73 20 69 6e 74 6f all blocks into
22f0: 20 22 62 6c 6f 63 6b 73 22 20 20 20 20 20 20 20 "blocks"
2300: 20 20 20 20 20 7c 0a 2b 2d 2d 2d 2d 2d 2b 2d 2d |.+-----+--
2310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 0a 2d 2d ----------+...--
2340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 4d 69 73 63 2e 20 ---------.Misc.
2350: 4e 6f 74 65 73 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d Notes.----------
2360: 2d 0a 52 65 74 72 6f 27 73 20 62 6c 6f 63 6b 73 -.Retro's blocks
2370: 20 61 72 65 20 31 36 30 30 20 63 65 6c 6c 73 20 are 1600 cells
2380: 69 6e 20 6c 65 6e 67 74 68 20 65 61 63 68 2e 20 in length each.
2390: 54 68 65 79 20 61 72 65 20 64 69 73 70 6c 61 79 They are display
23a0: 65 64 20 61 73 0a 38 30 20 63 6f 6c 75 6d 6e 73 ed as.80 columns
23b0: 20 61 6e 64 20 32 30 20 72 6f 77 73 2e 0a 0a 7d and 20 rows...}
23c0: 64 6f 63 0a doc.