|
View:
New views
12 Messages
—
Rating Filter:
Alert me
|
|
|
CF05, Block 20 (USB), “free”Hi,
There is a variable, free, whose comment says “current address in work space” in this block. The initial value is 3fff800 <http://slug/colorforth/index.php?page=3fff800> Where does this address come from? Sorry, I can't point to an html listing of the code on the Web Thanks, Jason --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: CF05, Block 20 (USB), “free”Quoting Jason Kemp <jason.kemp@...>:
>... " Hi, >... " >... " There is a variable, free, whose comment says >... " “current address in work >... " space” in this block. The initial value is >... " 3fff800 >... " <http://slug/colorforth/index.php?page=3fff800> >... " >... " Where does this address come from? >... " >... " Sorry, I can't point to an html listing of the >... " code on the Web >... " >... " Thanks, >... " Jason >... " Nick here: I can't help re USB, but here is an html listing of CF05 in text form (original URL owner please claim) {block 18} colorforth 11/05 chuck moore blocks 0-65 public domain macros 24 load 26 load 28 load colors 30 load rest 36 block 2 24 reads ; the rest utilities usb 20 load ; usb flash dump 32 load ; background dump icons 34 load ; edit chars png 38 load ; png file format file 44 load ; file io util north 46 load ; view northbridge registers floppy 60 load ; format, set video mark empty 11/05 release note --- floppy nvidia save -or- floppy ati save --- to change video driver vector --- -------------------------------------------------------------------------------- {block 19} compile pentium colorforth memory map: block is 1 kbyte 0 kernal 12k fonts 6k bytes 500 c18 compiled object code 595 deleted words - reinsert with i 640 top of stacks 1024 dictionary 7424 video frame buffer 32768 okad tables 524288 512 megabytes dump compile memory display background task icons compile icon editor png screen image to usb flash drive file compile dos file utility north compile north-bridge pci bus display --- editor sct yrg* all-caps cap lower-case yellow red green * toggles shadow comment block fj ludr find jump left up down right .. -mc+ dec-block magenta cyan inc-block x.i delete exit insert . jump jumps between -edited- blocks f finds next word from find word -------------------------------------------------------------------------------- {block 20} usb macro macro searched first p@ a! dup ed 1, ; cyan macro compilation bswap c80f 2, ; b! ?lit 589 2, , drop ; forth ad n-n 2* ff80 e800 8000e820 pci -1 + or ; u@ n-n ad p@ ; regs 12 for i u@ 4 h.n space i ad 4 h.n cr -next ; ok show black screen white regs keyboard ; free 67106904 3fff800 free ! toggle 7 ; array pop + ; magenta variables string align array 42535500 , 143 , 20000 , a008000 , 28 , 0 , 1 , 0 , +fr a-a 1 + fr n-a dup 3ff and drop if ; then fffffc00 + ; frame 4 u@ 2/ 2/ 1 + fr ; td, free @ ffffff7f and free ! 22 load move sd 128 for over @ over ! 1 dup v+ next drop drop ; yellow variable in green is literal rest 31 block 1055 486 -31 + read ; cf 0 1024 nc @ 18 * write ; gds 4096 swap 255 + 256 / write ; bot 3000 block dup 0 16 read 2000 block over move 2000 block over 128 6 * + move 0 16 write ; -------------------------------------------------------------------------------- {block 21} p@ read register p! write register bswap byte-swap eax b! store eax into literal byte address ad byte-address of usb 16-bit register u@ read usb register regs display usb registers ok start register display free current address in work space frames initialize 1024 frame pointers to off +fr increment frame address - wrap frame address of first accessible frame td, wrap free 1st word of transfer t, compile word into work space b read 1024-byte blocks offset by 2000 -------------------------------------------------------------------------------- {block 22} usb flash stores gds image t, free @ ! 1 free +! ; /f n-b free @ + ffffff7f and 2* 2* ; qh f-f +fr 0 /f 2 + over ! 1 td, 3 /f t, 0 t, 0 t, ; wait free @ -3 + begin dup @ 3f and drop if drop 1 over ! ; then end cbw qh 1 string 3c101e1 toggle @ or 1 td, td an 800000 t, t, t, ; tog toggle @ 80000 or toggle ! ; csw anf qh 32 string here 1808169 toggle @ or 1 td, td tog 100 4 string 4 / +! wait drop drop drop ; tran ann-an td, over over td 64 u+ 80000 or ; command abncc-anf 16 string 4 / ! push bswap 21 string b! 2* bswap 18 string b! 2* 2* pop toggle @ or frame cbw wait ; sector qh push 7 for 4 /f 4 + tran next 1 tran pop wait ; read abn 2* dup push 7e08169 28 command begin sector next csw ; write dup push 2* 7e901e1 2a command begin sector sector +fr next csw ; -------------------------------------------------------------------------------- {block 23} /f wrap free qh queue head. required for bulk transfers wait till last transfer done cbw command-block wrapper td transfer descriptor csw command-status wrapper. increment cbw tag tran 64-byte transfer bigend convert block number - 65535 max active mark td command multiple transfers sector one frame of transfers read multiple blocks from sector write block at a time -------------------------------------------------------------------------------- {block 24} macro swap 168b 2, c28b0689 , ; 0 ?dup c031 2, ; if 74 2, here ; -if 79 2, here ; a ?dup c28b 2, ; a! ?lit if ba 1, , ; then d08b 2, drop ; 2* e0d1 2, ; forth a, 2* 2* , ; macro @ ?lit if ?dup 58b 2, a, ; then 85048b 3, 0 , ; ! ?lit if ?lit if 5c7 2, swap a, , ; then 589 2, a, drop ; then a! 950489 3, 0 , drop ; nip 4768d 3, ; + ?lit if 5 1, , ; then 603 2, nip ; or 633 binary ?lit if swap 2 + 1, , ; then 2, nip ; and 623 binary ; u+ ?lit if 681 2, , ; then 44601 3, drop ; ? ?lit a9 1, , ; over ?dup 4468b 3, ; -------------------------------------------------------------------------------- {block 25} pentium macros: 1, 2, 3, , compile 1-4 bytes drop lodsd, flags unchanged, why sp is in esi - in kernel then fix address - in kernel swap sp xchg 0 0 0 xor, macro 0 identical to number 0 if jz, flags set, max 127 bytes, leave address -if jns, same a 2 0 mov, never used? a! 0 2 mov, unoptimized 2* shift left a, compile word address @/! fetch/store from/to word address, or eax nip swap drop +/or/and number or sp with eax u+ add to 2nd number, number or sp ? test bits, set flags, literal only! over sp 4 + @ -------------------------------------------------------------------------------- {block 26} macros push ?lit if 68 1, , ; then 50 1, drop ; pop ?dup 58 1, ; - d0f7 2, ; *end swap end eb loop 1, here - + 1, ; for push begin ; *next swap next 75240cff 0next , here - + 1, 4c483 3, ; -next 79240cff 0next ; i ?dup 24048b 3, ; +! ?lit if ?lit if 581 2, swap a, , ; then 501 2, a, drop ; then a! 950401 3, 0 , drop ; nop 90 1, ; align here - 3 and drop if nop align ; then ; or! a! 950409 3, 0 , drop ; * 6af0f 3, nip ; */ c88b 2, drop f9f72ef7 , nip ; /mod swap 99 1, 16893ef7 , ; / /mod nip ; mod /mod drop ; -------------------------------------------------------------------------------- {block 27} push lit to sp; eax to sp pop sp to eax - ones-complement begin -a current code address - byte for n push count onto return stack, begin *next aa-aa swap for and if addresses next a decrement count, jnz to for, pop return stack when done -next a same, jns - loop includes 0 i -n copy loop index to data stack *end aa-aa swap end and if addresses end a jmp to begin +! na add to memory, 2 literals optimized align next call to end on word boundary or! na inclusive-or to memory, unoptimized * mm-p 32-bit product */ mnd-q 64-bit product, then quotient /mod nd-rq remainder and quotient / nd-q quotient mod nd-r remainder -------------------------------------------------------------------------------- {block 28} compiled macros 2/ f8d1 2, ; time ?dup 310f 2, ; 7push 57 1, ; 7pop 5f 1, ; forth @ @ ; ! ! ; + + ; */ */ ; * * ; / / ; 2/ 2/ ; dup dup ; drop drop ; arithmetic negate - 1 + ; min less if drop ; then swap drop ; abs dup negate max less if swap then drop ; v+ vv-v push u+ pop + ; vector loads bn for dup push load pop 2 + next drop ; writes acn for write next drop drop ; reads acn for read next drop drop ; wrtboot 0 0 1 writes stop ; -------------------------------------------------------------------------------- {block 29} 2/ arithmetic right shift time -n pentium cycle counter, calibrate to actual clock rate 7push/7pop save/restore save register 7, edi @-drop these macros redefined in forth so they may be executed negate n-n when you just cant use - min nn-n minimum abs n-u absolute value max nn-n maximum v+ vv-v add 2-vectors loads load successive blocks nc -a number of cylinders booted and saved writes address, cylinder, cylinder count reads address, cylinder, count. floppy access type stop after the arguements on the stack go away to stop the floppy motor save write colorforth to bootable floppy note do not hit any keys while floppy is being written - wait for light to go out sl r r r r r r s s s s s s 4 4 138 m s s -------------------------------------------------------------------------------- {block 30} colors etc block 100 * ; save 18 block 1 nc @ -1 + writes stop ; white ffffff color ; red ff0000 color ; green ff00 color ; blue ff color ; silver bfbfbf color ; black 0 color ; screen 0 dup at 1024 768 box ; 5* 5 for 2emit next ; cf 25 dup at red 1 3 c 3 a 5* green 14 2 1 3 3e 5* ; logo show black screen 800 710 blue box 600 50 at 1024 620 red box 200 100 at 700 500 green box text cf keyboard ; 64 load empty empt logo ; wait 10 30 * for 7push pause 7pop next ; ruu boot ; off on qwerty keys -------------------------------------------------------------------------------- {block 31} block n-a block number to word address colors specified as rgb: 888 bits screen fills screen with current color at xy set current screen position - in kernel box xy lower-right of colored rectangle - in kernel 5* emit letters cf display double-size colorforth logo displays colorforth logo show background task executes following code repeatedly keyboard displays keypad and stack empty empty dictionary w/ empt display logo wait while saving edi, in interrupt dead code artifact -------------------------------------------------------------------------------- {block 32} dump x 511689 y -79640960 5-8 8 /mod 32 /mod 32 /mod 100 * + 100 * + 100 * swap 4 * + ; one dup @ dup 5-8 h. space h. space dup h. cr ; lines for one -1 + next drop ; dump x ! r show black screen x @ 15 + 16 text lines keyboard ; it @ + @ dup h. space ; lines for white i x it i y it or drop if red then i . cr -next ; cmp show blue screen text 19 lines red x @ h. space y @ h. keyboard ; u 16 +xy dup x +! y +! ; d -16 +xy ; ati f4100000 ff7fc000 or agp graphics reg byte 4 / dump ; fix for 0 over ! 1 + next ; dump -------------------------------------------------------------------------------- {block 33} does not say empty, compiles on top of application x -a current address one a-a line of display lines an dump a background task continually displays memory --- takes address -- displays three cols with address on right contents in middle and- the left col is c18 instruction view u increment address d decrement ati address of agp graphic registers byte a byte address dump fix an-a test word -------------------------------------------------------------------------------- {block 34} icons empty macro @w 8b66 3, ; !w a! 28966 3, drop ; *byte c486 2, ; forth ic 5 cu 89 sq xy @ 10000 /mod 16 + swap 12058640 + box t 0 +at ; loc ic @ 16 24 8 */ * 12 block 4 * + ; 0/1 8000 ? if green sq ; then blue sq ; row dup @w *byte 16 for 0/1 2* next drop -17 16 * 17 +at ; ikon loc 24 for row 2 + next drop ; adj 17 * swap ; cursor cu @ 16 /mod adj adj over over at red 52 u+ 52 + box ; ok show black screen cursor 18 dup at ikon text ic @ . keyboard ; 36 load ok h -------------------------------------------------------------------------------- {block 35} draw big-bits icon @w a-n fetch 16-bit word from byte address !w na store same *byte n-n swap bytes ic -a current icon cu -a cursor sq draw small square xy -a current screen position, set by at loc -a location of current icons bit-map 0/1 n-n color square depending on bit 15 row a-a draw row of icon +at nn relative change to screen position ikon draw big-bits icon adj nn-nn magnify cursor position cursor draw red box for cursor ok background task to continually draw icon, icon number at top sr 4210752 4210752 4210752 -------------------------------------------------------------------------------- {block 36} edit character set application +ic 1 ic +! ; -ic ic @ -1 + 0 max ic ! ; bit cu @ 2/ 2/ 2/ 2/ 2* loc + 10000 cu @ f and 1 + for 2/ next *byte ; toggle bit over @w or swap !w ; td toggle d 16 wrap cu @ + 16 24 * dup u+ /mod drop cu ! ; tu toggle u -16 wrap ; tr toggle r 1 wrap ; tl toggle l -1 wrap ; nul ; h pad nul nul accept nul tl tu td tr l u d r -ic nul nul +ic nul nul nul nul nul nul nul nul nul nul nul nul 2500 , 110160c dup , , 2b000023 , 0 , 0 , 0 , -------------------------------------------------------------------------------- {block 37} edit icon -------------------------------------------------------------------------------- {block 38} png empty usb w 1024 h 768 d 1 frame 1d0000 ; 42 load 40 load -crc a here over negate + crc . ; crc -crc ; here/4 -a here 3 and drop if 0 1, here/4 ; then here 2 2/s ; bys nn-b . here swap , ; plte 45544c50 48 bys ffffff 3, c00000 3, c000 3, c0c000 3, c0 3, c000c0 3, c0c0 3, 404040 3, c0c0c0 3, ff0000 3, ff00 3, ffff00 3, ff 3, ff00ff 3, ffff 3, 0 3, crc ; png awh-an d @ / h ! d @ / w ! here/4 swap 474e5089 , a1a0a0d , ihdr 52444849 13 bys w @ . h @ . 304 , 0 1, crc plte idat 54414449 0 bys swap deflate crc iend 444e4549 0 bys crc here/4 over negate + ; at 1024 * + frame + ; full 1 d ! 0 dup at 1024 768 png ; pad 1 d ! 46 -9 + 22 * nop 25 -4 + 30 * at 9 22 * nop 4 30 * png ; put 7168 swap 255 + 256 / write ; full put -------------------------------------------------------------------------------- {block 39} frame 1024*768*4 below 32m -------------------------------------------------------------------------------- {block 40} lz77 macro *byte c486 2, ; !b a! 289 2, drop ; forth *bys dup 16 2/s *byte swap ffff and *byte 10000 * + ; . *bys , ; +or over - and or ; 0/1 80 ? if 7e and 7e or drop if 7 ; then f ; then 0 and ; 4b dup 0/1 9 and over 8 2/s 0/1 a and +or swap 16 2/s 0/1 c and +or ; pix dup @ d @ u+ 4b ; row 1, dup w @ 2/ dup 1 + dup 2, - 2, 0 dup 1, +adl for pix 16 * push pix pop or dup 1, +adl next drop +mod d @ 1024 * + ; deflate 178 2, 1 0 adl! h @ -1 + for 0 row next 1 row drop ad2 @ *byte 2, ad1 @ *byte 2, here over 4 + negate + *bys over -4 + !b ; -------------------------------------------------------------------------------- {block 41} 0/1 0, f or 7 for dark, bright or dim -------------------------------------------------------------------------------- {block 42} crc macro 2/s ?lit e8c1 2, 1, ; 1@ 8a 2, ; forth array -a pop 2 2/s ; bit n-n 1 ? if 1 2/s edb88320 or ; then 1 2/s ; fill nn for dup 8 for bit next , 1 + next drop ; table -a align array 0 256 fill crc bn-n -1 swap for over 1@ over or ff and table + @ swap 8 2/s or 1 u+ next - nip ; ad1 45874 ad2 26480 +adl n ff and ad1 @ + dup ad2 @ + adl! ad2 ! ad1 ! ; +mod ad1 @ 65521 mod ad2 @ 65521 mod adl! ; -------------------------------------------------------------------------------- {block 43} 2/s shift right by literal 1@ fetch byte, address in eax array return word address in dictionary bit process 1 bit with standard 32-bit crc fill construct crc table for bytes table said table crc compute crc for a byte string ad1/ad2 adler checksums +adl add a byte to both checksums adl! store checksums +mod truncate checksums -------------------------------------------------------------------------------- {block 44} dos file w/c 18 blocks ; buffer 595 block ; size -a buffer 0 1 reads buffer 98f + ; set n ! buffer 0 1 writes ; cyls n-nn 1 swap w/c -1 + + w/c / ; put an dup 2* 2* size set cyls writes stop ; puts an-an over 262144 put 262144 u+ -262144 + ; get a size @ 3 + 2/ 2/ cyls reads stop ; .com 0 63 blocks put ; okad 0 nc @ 18 * blocks put ; okad blocks -okad 18 block nc @ -1 + 18 * blocks put ; recover 2000 block get ; cf 2000 block 0 nc @ writes stop ; 42 load mosis an 2* 2* swap 2* 2* over crc ; upload 18 block 1 nc @ -1 + writes stop ; download 18 block 1 nc @ -1 + reads stop ; --- upload download source blocks only -------------------------------------------------------------------------------- {block 45} push lit to sp; eax to sp pop sp to eax - ones-complement begin -a current code address - byte for n push count onto return stack, begin *next aa-aa swap for and if addresses next a decrement count, jnz to for, pop return stack when done -next a same, jns - loop includes 0 i -n copy loop index to data stack *end aa-aa swap end and if addresses end a jmp to begin +! na add to memory, 2 literals optimized align next call to end on word boundary or! na inclusive-or to memory, unoptimized * mm-p 32-bit product */ mnd-q 64-bit product, then quotient /mod nd-rq remainder and quotient / nd-q quotient mod nd-r remainder -------------------------------------------------------------------------------- {block 46} north bridge empty macro 4! ef 1, drop ; forth dev -2147424256 nb 80000000 dev ! ; agp 80000800 dev ! ; sb 80003800 dev ! ; usb 8000e800 dev ! ; graphic 3000000 device dev ! ; ether 2000000 device dev ! ; devs 80020000 65 for dup pci dup 1 + drop if dup h. space drop dup 8 + pci dup h. space over h. cr then drop fffff800 + next drop ; k show black screen text devs keyboard ; regs dev @ 19 4 * + 20 for dup pci h. space dup h. cr -4 + next drop ; ok show black screen text regs keyboard ; u 40 dev +! ; d -64 dev +! ; pci! na pci drop 4! ; ok k shows all pci devices while ok shows pci registers -------------------------------------------------------------------------------- {block 47} 4! nb store 4-byte word in byte address dev -a current device configuration address nb select north bridge as device agp select agp bus sb select south bridge graphic locate graphic accelerator. starts with agp - bus 1, dev 0, - searches down. defaults to dev 2 ether locate ethernet controller devs display device/vendor and class for each installed device k start devices display regs display configuration registers of current device ok start register display u move up in register space d move down pci! na store into configuration register. be carefull -------------------------------------------------------------------------------- {block 48} convert colorforth character to/from ascii macro 1@ 8a 2, ; forth string pop ; cf-ii string 6f747200 , 696e6165 , 79636d73 , 7766676c , 62707664 , 71757868 , 336a7a6b 33323130 , 37363534 , 2d313938 - 2d7a3938 5f7a3938 , 2f322e30 2f6a2e6b , 2b213a3b 24213a3b , 3f2c2a40 , ch fffffff0 and unpack cf-ii + 1@ ff and ; ii-cf string 2a00 , 0 + 2b , 2b2d0000 , 2725232e , zjk 1b262224 1b1a1918 , 1f1e1d1c , 28292120 , 2f000000 , 3a43355c , 3d3e3440 , 02 484a3744 kj 54523744 , 3336393c , 38314742 , 3f414632 , 1 493b45 z 563b45 , - 23000000 , a13052c , d0e0410 , 02 181a0714 kj 24220714 , 306090c , 8011712 , f111602 , 1 190b15 z 260b15 , chc ffffffe0 + ii-cf + 1@ ff and ; -------------------------------------------------------------------------------- {block 49} colorforth to ascii and ascii to colorforth cf-ii otr inae ycms wfgl bpvd quxh 3210 7654 -j98 /z.k +!:; ?,*@ ii-cf ! +* /.-, 3zjk 7654 ;:98 ? cba@ gfed 02ih onml srqp wvut 1yx cba@ gfed 02ih onml srqp wvut 1yx -------------------------------------------------------------------------------- {block 50} clock macro pentium timer p@ a! ?dup ec 1, ; p! a! ee 1, drop ; forth ms 100000 * for next ; ca 70 p! 71 ; c@ ca p@ ; c! ca p! ; bcd c@ 16 /mod 10 * + ; sec0 4 bcd 60 * 2 bcd + 60 * 0 bcd + ; sec sec0 2 ms dup sec0 or drop if drop sec ; then ; minute sec 60 / ; hms sec 60 /mod 60 /mod 100 * + 100 * + ; ymd 9 bcd 100 * 8 bcd + 100 * 7 bcd + ; day 6 c@ -1 + ; hi 10 c@ 80 and drop if ; then hi ; lo 10 c@ 80 and drop if lo ; then ; cal hi lo time - hi lo time + 748 ; -------------------------------------------------------------------------------- {block 51} -------------------------------------------------------------------------------- {block 52} lan empty 3f8 54 load init no block 4 * 1024 ; send no for dup 1@ xmit 1 + next drop ; receive no for rcv over 1! 1 + next drop ; no 18 7 18 * ; backup no for dup send 1 + next drop ; accept no for dup receive 1 + next drop ; -------------------------------------------------------------------------------- {block 53} sr 4210752 4210752 4210752 -------------------------------------------------------------------------------- {block 54} serial 3f8 2e8 1050 macro p@ a! dup ec 1, ; p! a! ee 1, drop ; 1@ 8a 2, ; 1! a! 288 2, drop ; forth r 0 + + ; 9600 12 ; 115200 1 ; b/s 83 3 r p! 9600 0 r p! 0 1 r p! 3 3 r p! ; init b/s 16550 1 2 r p! 0 4 r p! ; xmit n 5 r p@ 20 and drop if 0 r p! ; then pause xmit ; cts 6 r p@ 30 and 30 ?i+@ drop if cts ; then xmit ; st 6 r p@ xbits 30 and 10 / dup 1 and 2* 2* + 2/ ; st! 4 r p! ; ?rcv 5 r p@ 1 and drop if 0 r p@ then ; rcv ?rcv if ; then pause rcv ; -------------------------------------------------------------------------------- {block 55} p@ p-n fetch byte from port p! np store byte to port 1@ a-n fetch byte from byte address 1! na store byte to byte address r n-p convert relative to absolute port address. base port on stack at compile time. compiled as literal at yellow-green transition 9600 115200 baud-rate divisors. these are names, not numbers b/s set baud rate. edit to change init initialize uart xmit n wait for ready and transmit byte cts n wait for clear-to-send then xmit st -n fetch status byte xbits n-n exchange status bits st! n store control byte ?rcv fetch byte if ready. set flag to be tested by if rcv -n wait for ready and fetch byte -------------------------------------------------------------------------------- {block 56} boot assembler empty org- over negate + ; macro 2ld nn ?lit ?lit swap b8 or 1, 2, ; int n ?lit cd 1, 1, ; cli fa 1, ; xor n ?lit 3366 2, dup 8 * or c0 or 1, ; call0 -n e8 3, here org- ; rpop n ?lit 58 or 1, ; sub nn ?lit 81 1, e8 or 1, 2, ; movsd a566f3 3, ; jmp aan ?lit ea 1, push org- 2, pop 2, ; jis an-a ?lit here + ea 1, org- 2, ; seg n ?lit 8e 1, 8 * c0 or 1, ; 0ld n ?lit b0 1, 1, ; out n ?lit e6 1, 1, ; in n ?lit e4 1, 1, ; 0and n ?lit 24 1, 1, ; jnz a 75 1, here - + 1, ; ld nr ?lit ?lit swap b8 or 1, , ; forth /200 here 1ff and drop if 0 1, /200 ; then ; fix b 4 / 2000 block 147 for over @ over ! 1 dup v+ next drop drop ; 200 load /200 here 58 load fix -------------------------------------------------------------------------------- {block 57} p@ 2-byte port fetch p! 4-byte port store sector advance to 512-byte sector boundary org- address relative to start-of-sector 2ld 16-bit register load int fixed interrupt cli clear interrupts, henceforth disabled xor clear 32-bit register pop pop stack into register sub subtract number from register movsd move string of 32-bit words jmp to address with segment seg load segment register from eax 0ld load al with number out/in write/read fixed port from/to al 0and and al with number jnz jump back if non-zero ad compute port address toggle address of data-toggle state. unused word in bcb. zero after boot -------------------------------------------------------------------------------- {block 58} boot sector org 7c00 e9 1, 17a 2, cf 20206663 , 312e3420 , bcb 512 2, 1 1, 38 2, 2 1, 0 , f8 1, 0 2, 3f 2, ff 2, toggle 0 , 129024 , 993 , 0 , 2 , 1 2, 6 2, gdt 17 2, 38 , 0 2, 0 , ffff , cf9a00 , ffff , cf9200 , cbw 42535500 , 143 , 74e007f , a008000 , 28 , 2026 300ea07 2049 108 , 468 a7 3d 2, ? 0 2, 0 , 190 load video 4f02 0 2ld ati 4123 nvidia 4118 3 2ld 10 int cli 0 xor segment cb8c 2, db8e 2, c08e 2, relocate 6 xor 7 xor call0 6 rpop 6 sub 512 4 / 1 2ld movsd 5 jis 0 2, protect lgdt 16010f 3, 34 2, cr0 1 0ld c0220f 3, 5 jis 8 2, 10 0ld 3 seg 0 seg stacks 2 seg a0000 4 ld 9f400 6 ld boot 7 6 st 512 0 ld 7e88169 cbw wait sector eb 1, 21 44 + 1, 0 , 0 , 0 , 0 , 0 3, aa55 2, csw qh 1 td, 0 1888169 td wait ; 31 2 * -2 + for sector next drop csw e9 1, 6f , -------------------------------------------------------------------------------- {block 59} sectors 0 boot 1,2 each end with aa55 3-5 zero 6-11 copy of 0-5 12 code - ends with aa55 13-37 zero 38-1030 fat: 0ffffff8 ffffffff 0fffffff 4 1031-2023 copy of fat 2022 cluster 0 2024 root directory: +8 name +f start +f size 2025 colorforth org jmp, bios control block, global descriptor table, command-block wrapper video select mode 1024*768 565, clear interrupts segment clear segment registers move this code from 7c00 to 0 relocate jump into it protect establish protected mode, set segment registers and return stack pointer a20 enable address bit 20 boot from usb file boot+ continues in sector 1 -------------------------------------------------------------------------------- {block 60} format floppy empty 42 load hd 1 ad 152338 buffer 595 block ; array pop 2/ 2/ ; com align array 1202004d , 6c 2, word n ad @ ! 1 ad +! ; sectors cs-c buffer ad ! 18 for over hd @ 100 * + over 18 mod 1 + 10000 * + 2000000 + word 1 + next drop ; head ch-c dup hd ! 400 * 1202004d + com ! dup 2* - 1801 + sectors format ; cylinders n push com 0 pop for 0 head 1 head 1 + next stop drop drop ; bytes 4 * 64 + nc @ 18 * blocks 4 * -64 + crc ; format 30 cylinders archive 0 dup nc @ writes check 0 bytes 2000 block dup 0 nc @ reads bytes stop ; ati 10cd4123 17 ! ; setup for ati video card nvidia 10cd4118 17 ! ; for nvidia card then save -------------------------------------------------------------------------------- {block 61} format issue format command 30 cyl - in kernel hd disk head ad current address in buffer buffer usual floppy cylinder buffer array return word address com format command word store word into command string sectors build sector table head build sectors for selected head cylinders sectors advance 1 for each cylinder - to allow time for head step format only desired cylinders to save time bytes arguments for crc archive verify save: compute crc, save, read-back, recompute crc - first 64 bytes used by floppy read/write -- the two crc numbers should be the same ! -------------------------------------------------------------------------------- {block 62} timing empty macro out e1e6 2, ; forth tare time - 1000 for next time + ; tare+ time - push 1000 for dup next c pop time + ; test tare time + - 1000 for out next time + ; next 3 loop 5.7 /next 2 /swap 25 swap 7.2 macro c! c88b 2, drop here ; loop 49 1, 75 1, e2 here - + 1, ; forth try time - 1000 c! loop time + ; -------------------------------------------------------------------------------- {block 63} -------------------------------------------------------------------------------- {block 64} word search find 4 -find word + 18 block f nc @ 18 * block over negate + for over over @ or drop if 1 + *next drop drop ; then dup 1 u+ 100 /mod swap curs ! edit ; here ekt 22 + ! fk drop drop f blk @ dup ; def 3 -find ; yel 1 -find ; from n 4 word + swap block f ; lit 20 * 6 + 18 block f ; finds literal -------------------------------------------------------------------------------- {block 65} find following short compiled word. blocks 18 thru number of cylinders searched for 32-bit match that means first 8-bytes of name f find next occurrance fk key in edit keyboard. drops key and block number def find definition lit finds compiled literal from n like find but start from block number -------------------------------------------------------------------------------- {block 66} -------------------------------------------------------------------------------- {block 67} -------------------------------------------------------------------------------- {block 68} -------------------------------------------------------------------------------- {block 69} -------------------------------------------------------------------------------- {block 70} -------------------------------------------------------------------------------- {block 71} --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: CF05, Block 20 (USB), “free”Hi Nick,
First, sorry, that hyperlink in my email wasn’t supposed to be there (Thunderbird being too clever). Thanks for the listing. I think it might not be a specific USB point—it’s the command “ok” below (listing still right at bottom). ok show black screen white regs keyboard ; free 67106904 3fff800 free ! free is magenta 6706904 is green 3fff800 dark yellow free yellow ! yellow That 3fff800 is a bit smaller than 4000000, which is 64MB. But why that number? Is there a simple explanation of colorForth’s memory map anywhere? There is the following in Josh Grams source (the one I use): ; 100000 dictionary ; a0000 return stack (main) ; 9f400 data stack ; 9dc00 return stack (draw) ; 9d000 data stack ; 9b800 return stack (serve) ; 9ac00 data stack ; 99400 divider (bottom of rstack, top of floppy buffer) ; 94c00 floppy buffer ; 92c00 forth dictionary addrs (room for 2048 entries) ; 90c00 forth dictionary names ; 7c00 BIOS loads boot sector here; we immediately move it to 0 ; 4800 source ; 3000 icons ; 0 the colorforth kernel So this goes up to 100000h (1MB) I might be barking up entirely the wrong tree though. Maybe it is a peculiar USB–affected memory address. Thanks, Jason Nick Maroudas said the following on 11/10/2008 07:04: > Quoting Jason Kemp <jason.kemp@...>: > > >> ... " Hi, >> ... " >> ... " There is a variable, free, whose comment says >> ... " “current address in work >> ... " space” in this block. The initial value is >> ... " 3fff800 >> ... " <http://slug/colorforth/index.php?page=3fff800> >> ... " >> ... " Where does this address come from? >> ... " >> ... " Sorry, I can't point to an html listing of the >> ... " code on the Web >> ... " >> ... " Thanks, >> ... " Jason >> ... " >> > > Nick here: I can't help re USB, but here is an html > listing of CF05 in text form (original URL owner please > claim) > > > -------------------------------------------------------------------------------- > {block 20} > usb macro macro searched first > p@ a! dup ed 1, ; cyan macro compilation > bswap c80f 2, ; > b! ?lit 589 2, , drop ; forth > ad n-n 2* ff80 e800 8000e820 pci -1 + or ; > u@ n-n ad p@ ; > regs 12 for i u@ 4 h.n space i ad 4 h.n cr -next ; > ok show black screen white regs keyboard ; free 67106904 > 3fff800 free ! > toggle 7 ; > array pop + ; magenta variables > string align array 42535500 , 143 , 20000 , a008000 , 28 > , 0 , 1 , 0 , > +fr a-a 1 + > fr n-a dup 3ff and drop if ; then fffffc00 + ; > frame 4 u@ 2/ 2/ 1 + fr ; > td, free @ ffffff7f and free ! 22 load > move sd 128 for over @ over ! 1 dup v+ next drop drop ; > yellow variable in green is literal > rest 31 block 1055 486 -31 + read ; > cf 0 1024 nc @ 18 * write ; > gds 4096 swap 255 + 256 / write ; > bot 3000 block dup 0 16 read 2000 block over move 2000 > block over 128 6 * + move 0 16 write ; > > -------------------------------------------------------------------------------- > {block 21} > p@ read register > p! write register > bswap byte-swap eax > b! store eax into literal byte address > ad byte-address of usb 16-bit register > u@ read usb register > regs display usb registers > ok start register display > free current address in work space > frames initialize 1024 frame pointers to off > +fr increment frame address - wrap > frame address of first accessible frame > td, wrap free 1st word of transfer > t, compile word into work space > b read 1024-byte blocks offset by 2000 > > -------------------------------------------------------------------------------- > > --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: CF05, Block 20 (USB), “free”Quoting Jason Kemp <jason.kemp@...>:
>... " Hi Nick, [snip] >... " I think it might not be a specific USB >... " pointits the command ok below >... " (listing still right at bottom). >... " >... " ok show black screen white regs keyboard ; free >... " 67106904 >... " 3fff800 free ! >... " [snip] >... " >... " That 3fff800 is a bit smaller than 4000000, >... " which is 64MB. But why that >... " number? Is there a simple explanation of >... " colorForths memory map anywhere? >... " >... " There is the following in Josh Grams source (the >... " one I use): >... " ; 100000 dictionary >... " ; a0000 return stack (main) >... " ; 9f400 data stack >... " ; 9dc00 return stack (draw) >... " ; 9d000 data stack >... " ; 9b800 return stack (serve) >... " ; 9ac00 data stack >... " ; 99400 divider (bottom of rstack, top of >... " floppy buffer) >... " ; 94c00 floppy buffer >... " ; 92c00 forth dictionary addrs (room for 2048 >... " entries) >... " ; 90c00 forth dictionary names >... " ; 7c00 BIOS loads boot sector here; we >... " immediately move it to 0 >... " ; 4800 source >... " ; 3000 icons >... " ; 0 the colorforth kernel >... " >... " So this goes up to 100000h (1MB) >... " >... " I might be barking up entirely the wrong tree >... " though. Maybe it is a >... " peculiar USBaffected memory address. >... " >... " Thanks, >... " Jason >... " Nick here: Or "free" might be freeing some working space for usb? By analogy with CF's graphic screen memory, which tops at 2000000 (see GeneralGraphis.asm in Josh). Glad someone is trying to elucidate the usb in CF05; because there's a lot more of it waiting in CF2. Caritas, Nick **** We are but shaved monkeys with a good grasp of technology. - Guardian blogger Nick Maroudas --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: CF05, Block 20 (USB), “free”Tutorial: USB - step 1 The USB blocks are 20 & 22 in CF05 and 82-86 in CF2a. I use CF05. The USB device hangs on the PCI bus (block 46 in CF05, 50 in CF2a). A forth word 'device' has been predefined in the CFO5 core: given the class number of a certain device, it returns the PCI address. For example a graphics device is class code 3 and usb is c. So '46 load' (load pci block) '3000000 device' returns '80010000' 'c000000 device' >> '8000e800' which are the pci addresses of the Invidia graphic and Intel USB devices on my PC. Alternatively I could dump a list of devices by entering the word 'k' >> '8000e800 27c88086' (among others) To find the pci address of the usb io register, I first tell 'dev' that I want the usb device, then enter 'ok' thus '8000e800 dev ! ok' (dumps all the usb registers) Cell 20 of the resultant dump tells me that usb io base is 2080. (By the way, Linux words 'lspci' and 'setpci' confirm the forth addresses above, though the address system is a little different. Linux returns 00:1d so multiply 1d by 800 to get e800 in the CF system). So now I can move to the USB blocks, and try to understand what is going on there. Block 20 starts with macros 'p@' and 'b!' which are explained on block 21 as 'port fetch' and 'store EAX in literal byte address' respectively. So we are going to fetch something from a usb port and store it somewhere in memory. Forth words begin with 'ad' explained as 'byte address of usb 16 bit register'. n>>n : ad 8000e820 pci -1 + or ; Now I have learnt that e820 holds the base io register number of the usb device, and a previous tutorial explained the word 'pci' - it means fetch from a pci address. So 'ad' is going to fetch the uob io base 2080 from pci address e820, and 'or' it with n. The next word is 'u@' which explains itself, forth style: n>>n : u@ ad p@ ; So we are going to fetch numbers from 16 bit usb register base+n. The next word 'regs' contains a '12 for ... -next' which means that it is going to poll 13 registers including zero or base 2080. The next word 'ok' does just that. (I prefer to rename 'ok' as 'ko' to prevent confusion with the 'ok' in block 46). 'ko' dumps 13 wordsize regs, from byte addresses 2080 to 2098. I can confirm the value in any given reg n by 'n u@' The dump suggests that registers 3 and 4 are continually active, as shown by continual flickering. Significantly, a subsequent word 'frame' does fetch from one of these flickering registers: : frame ... 4 u@ ... ; The CF word 'frame' is explained in block 21 as "address of first accessible frame; and the USB word 'frame' is explained in a USB Protocol Specification - for instance in http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/14usb/FINAL%20VERSION/usb_protocol.html So I have moved beyond instructions that get usb io via pci bus, and am now trying to understand the USB protocol proper: a polled bus with frames and packets. A small step, but I hope to follow with step 2. Caritas, Nick Quoting Nick Maroudas <alice@...>: >... " Quoting Jason Kemp >... " <jason.kemp@...>: >... " >... " >... " Hi Nick, >... " [snip] >... " >... " I think it might not be a specific USB >... " >... " pointits the command ok below >... " >... " (listing still right at bottom). >... " >... " >... " >... " ok show black screen white regs keyboard >... " ; free >... " >... " 67106904 >... " >... " 3fff800 free ! >... " >... " >... " [snip] >... " >... " >... " >... " That 3fff800 is a bit smaller than >... " 4000000, >... " >... " which is 64MB. But why that >... " >... " number? Is there a simple explanation >... " of >... " >... " colorForths memory map anywhere? >... " >... " >... " >... " There is the following in Josh Grams >... " source (the >... " >... " one I use): >... " >... " ; 100000 dictionary >... " >... " ; a0000 return stack (main) >... " >... " ; 9f400 data stack >... " >... " ; 9dc00 return stack (draw) >... " >... " ; 9d000 data stack >... " >... " ; 9b800 return stack (serve) >... " >... " ; 9ac00 data stack >... " >... " ; 99400 divider (bottom of rstack, top >... " of >... " >... " floppy buffer) >... " >... " ; 94c00 floppy buffer >... " >... " ; 92c00 forth dictionary addrs (room >... " for 2048 >... " >... " entries) >... " >... " ; 90c00 forth dictionary names >... " >... " ; 7c00 BIOS loads boot sector here; >... " we >... " >... " immediately move it to 0 >... " >... " ; 4800 source >... " >... " ; 3000 icons >... " >... " ; 0 the colorforth kernel >... " >... " >... " >... " So this goes up to 100000h (1MB) >... " >... " >... " >... " I might be barking up entirely the wrong >... " tree >... " >... " though. Maybe it is a >... " >... " peculiar USBaffected memory address. >... " >... " >... " >... " Thanks, >... " >... " Jason >... " >... " >... " >... " Nick here: Or "free" might be freeing some >... " working >... " space for usb? By analogy with CF's graphic >... " screen >... " memory, which tops at 2000000 (see >... " GeneralGraphis.asm >... " in Josh). >... " >... " Glad someone is trying to elucidate the usb in >... " CF05; >... " because there's a lot more of it waiting in >... " CF2. >... " >... " Caritas, >... " >... " Nick >... " >... " **** >... " >... " We are but shaved monkeys - some of us with a - Guardian blogger" --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
What's new?I have not seen any posts on this list for a while. What has everyone
been up to? Any interesting new colorForth developments? --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?I haven’t touched colorForth since my last post. I’m trying to get to
grips with forth on a Z80, which is just now becoming really interesting as is has taken a great deal of time to set up an environment, learn a dead operating system (CP/M, which is far simpler than MS-DOS, but, none the less, it was difficult to find out what I needed) and master the Z80 instruction set (well, not all of it). Suddenly the terms direct and indirect threading make sense, and the pentium doesn’t look so terrible. Also I can see why people design their own Forth processors. Oh and I appreciate the beauty of CREATE DOES> It’s amazing. In addition I have built a little robot using a PICAXE micro controller with my son, but this chip uses BASIC and just feels hideous to program—it even has GOSUBs and forces a way of thinking that to me now seems unnatural. This is a perfect application for Forth and I am certain that Forth (ideally colorForth) would be a far better choice of a first programming language for children. I am looking forward to getting back with colorForth, and I hope that Nick has cracked the USB thing. Jason vaded@... said the following on 22/01/2009 20:23: > I have not seen any posts on this list for a while. What has everyone > been up to? Any interesting new colorForth developments? > > --------------------------------------------------------------------- > To unsubscribe, e-mail: colorforth-unsubscribe@... > For additional commands, e-mail: colorforth-help@... > Main web page - http://www.colorforth.com > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?Activity seems to have shifted to the Intellasys site, where CF
will be merely one of several Forths for programming the parallel chip. Ray StMarie is still managing a website, in spite of difficulties. Intellasys evaluation board looks interesting for music making, but priced around $500 which is twice the usual for an EV. My CF music program has about 60 blocks of code and 200 blocks of music score (first 124 bars of a string quartet). It does what I wanted ie, plays in Just Intonation through a 1 MHz DAC at higher sample rate than commercial synthesisers, so my interest is at a crossroads. Either put more programming effort into adapting my CF programme to normal AC97 soundcards (which now run at nearly 0.2 M Hz, much better than their 40k Hz when I started this project). Or buy the Intellasys EV and switch to parallel core programming; a daunting prospect to this aged hobbyist. But CF on PC has been fun, instructive and useful. Caritas, Nick Quoting vaded@...: >... " I have not seen any posts on this list for a while. >... " What has everyone >... " been up to? Any interesting new colorForth >... " developments? >... " >... " --------------------------------------------------------------------- >... " To unsubscribe, e-mail: >... " colorforth-unsubscribe@... >... " For additional commands, e-mail: >... " colorforth-help@... >... " Main web page - http://www.colorforth.com >... " >... " -- Dr Nicolas George Maroudas Avigdor Meiri 9/1 Sea View Haifa 3 55 00 Israel Tel +972 048 337 315 **************************** A better world is not only possible but on the way. On a quiet day you can hear her breathing. - Arundhati Roy **** --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?Hi Nick,
> Activity seems to have shifted to the Intellasys site, where CF > will be merely one of several Forths for programming the > parallel chip. Ray StMarie is still managing a website, in > spite of difficulties. Intellasys evaluation board looks > interesting for music making, but priced around $500 which is > twice the usual for an EV. > Is there a mail list or news group for that? I read the comp.lang.forth for a while but found there was too much spiteful hair-splitting and nothing of any real value so left that one (I wasn’t on it for long though so that might have been just a low season). Is there a group for Intellasys Forths and have colorForth folk migrated there? I’ve just skimmed the VentureForth Programmer’s Guide and it looks nice, but no colour! So VF is a Forth equivalent of OCCAM? Is there a colorForth for these chips? I can see these would be great for your synthesizer. For me, I still want to master USB and TCP/IP, so Pentium colorForth still seems the best educational approach, although I was getting bogged down in the Pentium machine code which wouldn’t be a problem on an Intellasys chip. > But CF on PC has been fun, instructive and useful. > So far I have found it fun and instructive too, but I haven’t yet managed the ‘useful’! Jason --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?Dear Jason,
Your account of Forth on Z80 brought back happy memories. In those cases where I knew enough about the hardware to replace Basic by Forth, the latter ran 10 times faster. I read somewhere about a Forth that was almost wholly constructed from BUILDS/DOES. Which reminds me: what is the CF equivalent? (Perhaps a compiled POP plus yellow/green instructions?) My replies to your comments are numbered below. Quoting Jason Kemp <jason.kemp@...>: >... " Hi Nick, >... " [snip] Intellasys evaluation board >... " > interesting for music making, but priced around $500 >... " which is >... " > twice the usual for an EV. >... " > >... " Is there a mail list or news group for that? Reply 1: For the EV board http://www.intellasys.net/index.php?option=com_content&task=view&id=61&Itemid=74 >... " [snip] . Is there a group for >... " Intellasys Forths and have colorForth folk migrated >... " there? Reply 2. There is a blog http://www.intellasys.net/phpBB/ >... " Ive just skimmed the VentureForth Programmers Guide >... " and it looks nice, >... " but no colour! So VF is a Forth equivalent of OCCAM? Reply 3. Jeff Fox said long ago that there was no color. >... " Is there a >... " colorForth for these chips? Reply 4. I believe (subject to correction) that Chuck has such a thing. >... " I can see these [EVB] would be >... " great for your >... " synthesizer. Reply 5. At that price and at my age, I have to consider. Perhaps the price will come down in the last quarter, when they start to manufacture in quantity; perhaps by then I'll have some more spare cash and enthusiasm for new project. >... " For me, I still want to master USB and >... " TCP/IP, so Pentium >... " colorForth still seems the best educational approach, >... " although I was >... " getting bogged down in the Pentium machine code which >... " wouldnt be a >... " problem on an Intellasys chip. Reply 6. CF now has very little machine code, once you have booted it. I guess that there is enough USB source code in CF2 to run native - once one understands the USB/BOOT & TCP/IP protocols. But I must confess that I have abandoned hope of doing this myself in the foreseeable future. >... " > But CF on PC has been fun, instructive and useful. >... " > >... " So far I have found it fun and instructive too, but I >... " havent yet >... " managed the useful! >... " >... " Jason Reply 7. I found CF useful because it gave me control of PCI bus and a 3 fold increase of speed - just what I needed to test my onesy notion of building a synth with high speed parallel DAC at a time when commercial soundcards were limited to 44-48k Hz. (See my reply to Mathew Vaded). Caritas, Nick **************************** Why rob a bank when you can own a bank? - US Proverb **** --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?would there be any interest in having a forum created for ventureforth,
colorforth, etc? I could throw one together pretty quick and put it on colorforth.net Intellasys had a nice forum going too bad about its fate On Sat, 24 Jan 2009 15:59:00 +0000, "Jason Kemp" <jason.kemp@...> said: > Hi Nick, > > Activity seems to have shifted to the Intellasys site, where CF > > will be merely one of several Forths for programming the > > parallel chip. Ray StMarie is still managing a website, in > > spite of difficulties. Intellasys evaluation board looks > > interesting for music making, but priced around $500 which is > > twice the usual for an EV. > > > Is there a mail list or news group for that? I read the comp.lang.forth > for a while but found there was too much spiteful hair-splitting and > nothing of any real value so left that one (I wasn’t on it for long > though so that might have been just a low season). Is there a group for > Intellasys Forths and have colorForth folk migrated there? > > I’ve just skimmed the VentureForth Programmer’s Guide and it looks nice, > but no colour! So VF is a Forth equivalent of OCCAM? Is there a > colorForth for these chips? I can see these would be great for your > synthesizer. For me, I still want to master USB and TCP/IP, so Pentium > colorForth still seems the best educational approach, although I was > getting bogged down in the Pentium machine code which wouldn’t be a > problem on an Intellasys chip. > > But CF on PC has been fun, instructive and useful. > > > So far I have found it fun and instructive too, but I haven’t yet > managed the ‘useful’! > > Jason > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: colorforth-unsubscribe@... > For additional commands, e-mail: colorforth-help@... > Main web page - http://www.colorforth.com > --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
|
|
Re: What's new?On Friday 23 January 2009, Jason Kemp wrote:
> I haven’t touched colorForth since my last post. I’m trying to get > to grips with forth on a Z80, which is just now becoming really > interesting as is has taken a great deal of time to set up an > environment, learn a dead operating system (CP/M, which is far > simpler than MS-DOS, but, none the less, it was difficult to find > out what I needed) and master the Z80 instruction set (well, not > all of it). Suddenly the terms direct and indirect threading make > sense, and the pentium doesn’t look so terrible. Also I can see why > people design their own Forth processors. Oh and I appreciate the > beauty of CREATE DOES> It’s amazing. > > In addition I have built a little robot using a PICAXE micro > controller with my son, but this chip uses BASIC and just feels > hideous to program—it even has GOSUBs and forces a way of thinking > that to me now seems unnatural. This is a perfect application for > Forth and I am certain that Forth (ideally colorForth) would be a > far better choice of a first programming language for children. far better, if only for the fact that once you u'stand forth, you u'stand the basics of e'thing else. > > I am looking forward to getting back with colorForth, and I hope > that Nick has cracked the USB thing. > > Jason > > vaded@... said the following on 22/01/2009 20:23: > > I have not seen any posts on this list for a while. What has > > everyone been up to? Any interesting new colorForth > > developments? > > > > ----------------------------------------------------------------- > >---- To unsubscribe, e-mail: > > colorforth-unsubscribe@... For additional > > commands, e-mail: colorforth-help@... Main web > > page - http://www.colorforth.com > > ------------------------------------------------------------------- >-- To unsubscribe, e-mail: colorforth-unsubscribe@... > For additional commands, e-mail: colorforth-help@... > Main web page - http://www.colorforth.com --------------------------------------------------------------------- To unsubscribe, e-mail: colorforth-unsubscribe@... For additional commands, e-mail: colorforth-help@... Main web page - http://www.colorforth.com |
| Free embeddable forum powered by Nabble | Forum Help |