Re: CF05, Block 20 (USB), =?windows-1255?Q?=93free=94?=
Jason Kemp <[email protected]> Sat, 11 Oct 2008 11:47:06 +0100
| Newsgroups | gmane.comp.lang.forth.colorforth |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]>: > > >> ... " 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 > > -------------------------------------------------------------------------------- > >