00:00:00 --- log: started forth/03.07.26 00:02:59 --- join: rO| (~rO|@pD9545EFB.dip.t-dialin.net) joined #forth 00:03:01 That's perfectly reasonable. 00:03:21 And that would give me a decent 40m dipole? 00:03:26 No. 00:03:27 :) 00:03:37 A good quality 40m dipole is 20m long. 00:04:11 I mean, it'd work as a 40m antenna, but because one of the elements is buried, it wouldn't have efficiency that a "fully exposed" antenna would. 00:04:27 But, still, you'll hear lots of shortwave stations with it. 00:04:37 I mean, I listen to 40m all the time with my indoor 10m antenna. :) 00:04:37 Only _hear_? 00:04:50 Do you have a 40m capable transmitter? 00:05:01 With the antenna described, would I not be able to transmit at 40m? 00:05:01 No. 00:05:05 (Not yet ;) 00:05:13 I'm talking theoretically now. 00:05:29 You would probably be able to transmit with it if you had an antenna tuner. Burying one of the elements will change its characteristic impedance severely. 00:06:16 Okay... btw, multiband solutions with these kind of antennas - is that just a matter of adding extra wires? 00:06:48 Robert: "only hear" :-) 00:06:49 Depends 00:07:07 Some employ traps in the single wire used to make the antenna with. 00:07:21 Robert: wanna become ham isp ;-) 00:07:40 But would simply adding one or more extra wires do? 00:08:41 rO|: ..? 00:09:26 Robert: ppp over ham..? 00:09:53 What? 00:10:54 Do you want to do that? 00:12:02 rO|: Not necessary; ham radio uses a networking protocol called AX.25 00:12:29 Robert: To a limited extent, yes. 00:13:29 kc5tja: y, wasn't a precise technical terminus.. 00:13:53 kc5tja: OK.. thanks :) 00:16:15 Robert: just thought that would be interesting.. 00:18:05 OK 00:19:24 Well, when the average speed of a ham radio digital link is 1200bps still, or 9600bps depending on your area, PPP over ham radio is a bit excessive. :) 00:19:54 And unlike PPP, AX.25 is a true networking protocol -- it is currently the very foundation of any ham radio LAN on the air. 00:20:19 Goodness, I need to get to bed. 00:20:46 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 00:20:47 Good night. 00:20:50 Bleh.. 01:13:49 --- quit: w1k1 ("rO|") 01:14:56 --- join: w1k1 (~w1k1@pD9545EFB.dip.t-dialin.net) joined #forth 01:40:35 --- quit: rO| ("!") 01:46:50 --- quit: w1k1 (Read error: 104 (Connection reset by peer)) 01:52:09 --- quit: onetom (Read error: 110 (Connection timed out)) 01:54:25 --- join: onetom (~root@cab.bio.u-szeged.hu) joined #forth 02:04:32 --- join: w1k1 (~w1k1@pD9545EFB.dip.t-dialin.net) joined #forth 02:20:16 --- join: rO| (~rO|@pD9545EFB.dip.t-dialin.net) joined #forth 05:13:44 --- join: mur (murr@baana-62-165-186-178.phnet.fi) joined #forth 06:51:58 --- join: rO|_ (~rO|@pD9E59A66.dip.t-dialin.net) joined #forth 06:52:20 --- join: w1k1_ (~w1k1@pD9E59A66.dip.t-dialin.net) joined #forth 07:10:06 --- quit: w1k1 (Read error: 110 (Connection timed out)) 07:10:07 --- nick: w1k1_ -> w1k1 07:10:15 --- quit: rO| (Read error: 110 (Connection timed out)) 07:23:28 --- quit: mur ("MURR! save the http://rainforest.care2.com/") 07:47:41 --- join: gNoam (trilluser@bc-van-reg-a53-01-64.look.ca) joined #forth 07:48:38 --- part: gNoam left #forth 08:41:19 --- join: wossname (wossname@HSE-QuebecCity-ppp81015.qc.sympatico.ca) joined #forth 09:04:17 --- join: mur (murr@baana-62-165-186-178.phnet.fi) joined #forth 09:06:33 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp251178.sympatico.ca) joined #forth 09:06:44 hi 09:07:01 i think i know now what my eltorrito pmode switch code failed 09:07:40 not every bios follow the segment specifier when loading in no emu 09:07:53 so the lgdt fails 09:08:14 i tried changing org 7c00h to org 0 in vmware, it crashed it 09:08:41 at "runlevel4", when i outputted 4 to the screen 09:09:12 hey 09:13:30 supr: and on the real unvirtualized machine? 09:15:25 --- nick: rO|_ -> rO| 09:15:50 im trying right now with code that will 09:16:07 display current address with segement 09:16:34 i wrote a dword display routine a while ago, im gonna use it 09:16:50 number to textmode ascii conversion 09:17:16 and i put an int 16h 09:17:21 to wait for kb output 09:17:29 so i have to look at it before it triplesfault ;p 09:22:15 ok in vmware i got 7c180000 meaning seg 0 address 7c18 09:23:09 so that means i got loaded in segment zero even if i specified 7c0 as segment in nero when burning the rom... 09:24:15 actually, I didn't even know you could specify a load address other than the standard one (0:7c00) with eltoritto 09:24:52 in no emulation you can, its in the specification but not implemented on all bioses correctly 09:25:01 ill check with my machine brb 09:25:07 --- quit: suprdupr ("brb with some results!") 09:27:40 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp250799.sympatico.ca) joined #forth 09:27:45 viva hibernate mode 09:27:54 it stops at runlevel1 09:28:19 and ints are disabled 09:28:39 which means it crashes on my nmi interrupt disabling routine 09:28:48 since runlevel2 is just after that 09:33:50 from linux I/O programming mini-howto 09:34:37 they say that one can delay with i/o on ports 0-3ff, any access should take about 1ms 09:38:07 delay? 09:38:22 the descent into comamode or, ??? 09:38:52 ?? 09:39:02 19:33 < suprdupr> they say that one can delay with i/o on ports 0-3ff, any access should take about 1ms 09:39:26 i use out 80, al to delay fast a20 enabling 09:40:00 i dont understand the descent into comamode thing 09:40:11 im talking about assembly-level delay ;p 09:40:29 I thought you were talking about postponing APM bios action with i/o which made no sense 09:41:22 kk, i know nothing about apm 09:42:20 anyway i commented out the supposedly offensing code, brb! 09:42:25 --- quit: suprdupr ("brb") 09:45:16 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp251282.sympatico.ca) joined #forth 09:45:43 i start in segment 07c0 09:45:48 at 0 09:45:53 so my bios's doing his job 09:46:03 after i hit a key it crashed miserably 09:48:45 the only code i got between that and runlevel 2 is cli cld 09:48:53 strange 09:49:08 ill had a kb entry delay 09:50:14 * suprdupr is putting back his NMI code between runlevel 2 and three and add a kb delay, comented cli and disable them after putting the gdt in, just before pmode switch 09:51:42 kc5tja suggested he always seen the i/o delay by a write to e1h instead of 80 09:53:27 --- quit: suprdupr ("brb, viva hibernate and cd/rws") 09:55:28 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 09:55:29 --- mode: ChanServ set +o kc5tja 10:01:21 --- join: suprdupr (CrowKilr@Ottawa-HSE-ppp3654073.sympatico.ca) joined #forth 10:01:37 re 10:01:43 good news is that out 80h, al isnt causing the bug 10:01:44 hi 10:01:56 * suprdupr is in extensive eltorrito->pmode testing 10:02:02 * kc5tja is getting ready to go to a wedding today. 10:02:26 family or friend's relative? 10:02:45 friend's 10:04:07 roman catholic wedding? 10:04:23 I dunno 10:04:50 But as far as I've seen, all Christian weddings appear to be the same, regardless of denomination. 10:04:51 * suprdupr couldn't stand the priest at the one he went to at the beginning of the month 10:07:12 --- join: a7r (~a7r@206.72.82.135) joined #forth 10:07:46 a7r: My car is going to be very, very happy later today. 10:08:09 * kc5tja is going to drive 45 miles on the freeway at rather high rates of speed. :) 10:09:22 And that's on the way down. It'll be another 45 on the way back home too. 10:10:38 I feel stupid though -- I'll be the only person showing up at the wedding without a gift. 10:10:46 I mail ordered the gift for them, and it still hasn't arrived. :/ 10:13:06 ;p 10:21:00 why oh why it doesnt work on the real machine 10:22:23 maybe i found something 10:22:43 i placed in the test code only a cli just after an int 16h 10:22:44 kc5tja: cool 10:23:07 ill try with a couple of mov ax,ax 10:23:50 suprdupr: "I placed in the test code ..." -- ?? This sentence doesn't make sense. 10:23:57 Anyway, I'm taking a shower. back in a bit. 10:25:27 --- quit: ChanServ (niven.freenode.net irc.freenode.net) 10:25:52 --- join: ChanServ (ChanServ@services.) joined #forth 10:25:52 --- mode: niven.freenode.net set +o ChanServ 10:28:17 s/test code/code ive written for test purposes 10:48:29 * suprdupr just discovered that his code didnt worked when booting from eltorrito 10:48:35 * suprdupr in vmware 10:48:45 it was the floppy 10:48:50 thatw as booting.. 10:49:18 That still doesn't help me. 10:49:27 maybe its in v86 mode... 10:49:31 The sentence itself is malformed. 10:50:05 I don't know where one concept begins and another ends. 10:50:31 The code that boots off the floppy or harddrive is definitely NOT in v86 mode. 10:50:36 I can guarantee you that much. :) 10:50:48 lol ok... well i meant that in in the code i used to test, there was a cli just after an int16 instruction 10:51:00 i mean the eltorrito thing 10:51:03 I don't know what int 16h does. 10:51:10 kb delay 10:51:20 when ah =0 it wait for you to press a key 10:51:28 OK 10:51:42 Was there an sti instruction somewhere before the int 16h? 10:51:46 I assume cli disables interrupts. 10:52:08 int 16h, working correclty, the cli is after 10:52:19 so sti is somewhere before in bios i guess ;p 10:52:35 You're positive that the int 16h is working correctly? 10:52:38 damn my syntax is ugly 10:52:45 yes since it waits before crashing 10:52:53 I ask because if you disable interrupts and then call int 16h, it will hang the system. 10:53:11 even the lgdt instruction doesnt crash the thing 10:53:18 its when the pmode switch occur 10:53:49 mov cr0, eax jmp 8:Protected 10:53:51 If it's right at the far jump, then the problem must lie in the code selector value used, or in the code segment descriptor. 10:53:57 8 being the descriptor adress in the gdt 10:54:01 * kc5tja nods 10:54:08 I would suspect the fault to lie in the descriptor then. 10:54:14 What does the descriptor look like? 10:54:18 then the most likely problem is the GDT address 10:54:26 its the right thing, it boots from floppy 10:54:35 it just reboot under eltorrito 10:54:46 GDT can be placed anywhere in conventional memory. 10:55:03 It doesn't even have an address alignment restriction. 10:55:14 (though it's much faster in operation if it's aligned on an 8-byte boundary) 10:55:14 k great! 10:55:40 hmmm that why I used align 8, now i remember ;p 10:55:44 Can you post the code segment descriptor values? 10:56:08 GDT: ;flat memory GDT 10:56:09 dw 0017h ;length: (8*3)-1 10:56:09 dd GDT ;No need for blank null descriptor 10:56:09 dw 0000h ;here it holds the 6 bytes pointer 10:56:09 dw 0FFFFh,0000h,9A00h,00CFh ;code 10:56:09 dw 0FFFFh,0000h,9200h,00CFh ;data 10:57:28 thats waht follows that table 10:57:30 use32 10:57:30 Protected: ;Now in 32 bit protected mode 10:57:30 mov EAX, 10h ;Data descriptor pointer 10:57:30 mov DS, EAX ; 10:57:30 mov ES, EAX ; Initialize crucial descriptors 10:57:31 mov SS, EAX ; 10:57:33 mov ESP, 7C00h ;Initialize the Return Stack 10:57:35 xor EDI, EDI 10:57:37 mov word [0b8000h], 0f00h+'5' 10:57:39 i cant get a five on screen 10:58:08 even that, the code after the five, the actual IDE port I/O dont work correctly under 16 bits 10:58:33 * suprdupr cant even program his own machine :( 10:59:53 question: could i write 10h to the segment registers in 16 bit mode??? 11:00:19 BTW, the reason the operand size prefix appeared with mov DS,EAX is because you're assembling 32-bit code. It is a (harmless) bug in the assembler -- any moves to a segment register should not use a 66h prefix byte, regardless of operand size. 11:00:49 yeah it sucks there 11:00:51 suprdupr: No. You must be in protected mode to load the segment registers first. 11:01:05 i corrected iton the FASM board version 11:01:06 Otherwise, it'll load the segment base address only with 00100h -- not what you want. 11:02:40 What is the value of DS and ES before jumping to Protected? 11:04:02 hmmm 11:04:42 es is b800, ds is unknown ;p 11:04:53 OK, I would try executing this: 11:04:55 use32: 11:04:57 Protected: 11:05:14 mov word es:[0000h],0F35h ; the number '5' 11:05:18 jmp Protected 11:05:30 This test is *just* to see if the jump into protected mode is working. 11:05:38 And yes, it will hang. :) 11:05:50 OOH!! Are you disabling interrupts before jumping into protected mode? 11:06:46 yep 11:06:49 nmi too 11:07:16 mov word [0b8000h], 0f00h+'5' 11:07:23 i used this instead 11:07:32 But that requires DS to be established. 11:07:43 We don't know if jumping into protected mode or loading the segment registers is what's crashing it. 11:07:59 kk 11:08:05 By using the descriptor values already loaded into ES from when it was running in protected mode, we can write to the screen to see what is happening on a finer level. 11:08:22 s/protected/real/ 11:09:06 i doubt it will work, since protected is in pmode, es will not be valid 11:09:18 Yes, my dear friend, it will be. 11:09:18 :) 11:09:19 its will not point to an actual descriptor 11:09:23 It doesn't need to. 11:09:32 why? 11:09:37 Only the act of loading a segment register will cause the CPU's internal descriptor values be changed. 11:09:52 If you do not change a segment register, it's existing descriptor values will be retained between mode switches. 11:09:56 This is how "flat real-mode" works. 11:10:16 Drop into protected mode, load DS, ES, FS, and GS with 32-bit, 4GB segments, then drop into real-mode, WITHOUT reloading the segment registers. 11:10:26 so in 16bit heres already a 16bit compliant descriptor value loaded? 11:10:32 Yes. 11:10:34 There must be. 11:10:53 k i thought the circuit just "switched on" 11:11:03 thanks for the precision ;p 11:12:12 mov word [es:0000], 0f00h+'5' 11:12:17 fasm syntax ;o) 11:12:29 I don't bother with the +'5' part -- I just add the numbers in my head. 11:13:02 its about the es here, i know about the 30h offset and also the 7h offset 11:13:15 i wrote code for number to ascii conversion 11:13:59 i copy pasted the code (removed the ret and set es) to get actual loading address, followed by int16h 11:14:09 so iknew my biod was doing the trick 11:14:21 *bios 11:14:32 ??? 11:14:34 What's about the es? 11:14:41 Where did 30h offset and 7h offset come from? 11:14:54 --- join: Serg_Penguin (~z@ts18-a81.Moscow.dial.rol.ru) joined #forth 11:14:56 Ooh, for converting numbers. 11:14:58 hi 11:15:00 re Serg_Penguin 11:15:08 just few mins from home modem 11:15:37 hi 11:16:01 --- quit: a7r (Read error: 110 (Connection timed out)) 11:16:09 doing the trick of loading my eltorrtio image at the specified segment, that is 11:16:28 i would have to test for multiple segment load though 11:16:41 suprdupr: I have a question for you. 11:17:12 What is the value of CS when you're running your boot code? 11:18:01 --- quit: Serg_Penguin (Client Quit) 11:19:39 7c0h 11:20:13 since my routine was meant to operate on eax 11:20:30 i shl the result from the call/pop and i diplayes cs too 11:22:32 multiple segment load was meant to look like multiple SECTOR load ;p 11:23:01 And the origin of your boot code is therefore 0000h, right? 11:23:33 yes 11:23:38 I know why your code is crashing. 11:23:44 In the GDT table, you have: 11:23:45 gdt: 11:23:46 GDT address 11:23:49 dw 0017h 11:23:51 dd gdt 11:24:08 ^^^ -- that value is relative to the code's origin, and thus, is NOT a physical address. 11:24:23 You need to add 7C00h to that value to get the physical address. 11:24:36 k but i used org 7c00h at the start 11:24:48 and that org is supposed to act like NASM 11:24:58 but ill try it 11:25:01 You just said that your org is 0 11:25:02 it must be that 11:25:28 the origin, where it gets loaded ;pp 11:25:35 Wrong 11:25:35 i use a org 7c00 directive 11:25:45 but i will look at it 11:25:47 The origin is where the assembler thinks it'll go. 11:25:49 under nasm listing output 11:26:04 Is your code online at all? 11:26:29 ide boot project at board.flatassembler.net 11:26:33 under os construction 11:27:03 Looking at it 11:28:45 But you also said that the value of CS is 07C0h too. 11:29:02 when booting from eltorrito, yes 11:29:03 If this is true, then I can't fathom how your code is working at all. 11:29:11 You need to set that code segment to 0! 11:29:23 cli 11:29:24 xor ax,ax 11:29:41 hmmm....how to set CS... 11:29:45 It'd require a far call. 11:30:00 Beginning: 11:30:01 cli 11:30:02 cld 11:30:04 fajmp is what's used in bootloaders 11:30:11 far jumps 11:30:20 jmp far 0000:beginning_two 11:30:24 beginning_two: 11:30:27 ...etc.. 11:30:52 You use LGDT [CS:GDT] in your code, but if CS is 07C0h, then you're loading the wrong GDT table into memory. :) 11:31:10 Because GDT, according to the assembler, is already pre-biased by 7C00h. 11:31:11 damn i knew it lol 11:31:26 i knew that this trick would bring me bugs 11:31:27 lol 11:31:34 it was suggested on this very board 11:31:53 before i was doing mov ax,cs mov ds, ax lgdt [GDT] 11:31:57 Well, it's a good trick, as long as you remember to set CS to zero. :) 11:32:12 No, I would have done this: 11:32:14 xor ax,ax 11:32:15 mov ds,ax 11:32:17 lgdt [GDT 11:32:19 :) 11:32:37 yep in this case 11:32:40 :) 11:33:08 Otherwise, the CPU will expect to read the GDT values from somewhere in 0F???h land. I have no idea what code is placed there. :) 11:33:51 when i boot from floppy, code goes into 0:7c00 11:34:03 so it would also work 11:34:08 Yes, but BIOS sets CS to 07C0h IIRC. 11:34:25 After loading the sector, BIOS does a JMP 07C0:0000h 11:34:39 You need to undo that. 11:35:02 think about it, my code display the address AFTER being jumped to ;p 11:35:07 Actually, upon entry to the boot sector, every reference I've seen to writing them clearly state: do NOT depend on the value of CS. Not all BIOSes call the code with the same segment. 11:35:20 yeah yeah k ill use a far jump 11:35:30 You're giving me mixed signals here. 11:35:44 You said, in no uncertain terms, that when you printed CS, it came back with 07C0h. 11:35:47 :) 11:37:19 with eltorrito, yes, with floppy no 11:37:25 * kc5tja has to admit, setting the assembler origin to 7C00h will strip away 90% of the cruft that my old code used to do. I had to constantly add offsets and whatnot to get proper physical addresses. 11:37:32 under vmware for the floppy, since i dont have any floppy on my laptop 11:37:48 Again, this is a case of BIOSes not setting CS consistently. 11:37:57 So use the far jump to force CS to the value you expect when you lgdt. 11:38:11 i would rather change the dd gst statement, since it will be in the gdt 11:38:17 in the cs i mean 11:38:28 But again, you can't guarantee the value of CS. :( 11:38:46 The value in the GDT *must* be a physical address. 11:38:59 better to do a far jump than patch dd GDT t runtime 11:39:01 It MUST be relative to 00000000h as seen by the RAM chips themselves. 11:39:05 * kc5tja nods 11:39:07 Yes. :) 11:39:10 Much easier too. 11:39:25 with listing output, its easier both ways 11:39:39 i wish for an assembler 11:39:45 How do you know my PC doesn't use a code segment of 06C0h instead? 11:39:46 with REALTIME listing output 11:39:59 You'd have to do code like this: 11:40:01 mov ax,cs 11:40:04 shl ax,4 11:40:15 neg add 11:40:15 add ax,[GDT+2] 11:40:19 i know i know ;p 11:40:43 And that's assuming IP will be 0000h -- which it won't in my case. :D 11:40:49 It gets ugly. 11:40:58 Your approach combined with the far jump is SO much easier. 11:41:02 I wish I'd thought of it myself years ago. 11:41:07 realtime listing in an assembler would be THE killer feature of the century 11:41:15 hehe ;p 11:41:46 kc5tja: its written everywhere on the net, i took it from Daniel's NASM bootstrapping tutorial ;p 11:42:05 along with times 510-$ db 0 dw 0aa55h 11:42:18 this is a nice footer when playing with sectors 11:42:39 especially one that requires magic numbers ;p 11:43:21 suprdupr: When I first started to write Dolphin, this code simply didn't exist on the net. 11:43:31 kk 11:43:32 In fact, the 'net' wasn't even a house-hold word. 11:44:16 I would have done times (512-$)/2 dw 0AA55h 11:44:16 :) 11:44:19 But that's just me. 11:44:35 Your way works as well. 11:44:50 one liner ;p 11:44:58 but 11:45:07 you have to land on even byte 11:45:12 True 11:46:43 ill burn the image and ill be back with results from the trenches 11:47:00 --- quit: suprdupr ("brb! as I said earlier, viva hibernate and cdrws") 11:56:27 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp250913.sympatico.ca) joined #forth 11:56:33 yhahiou! 11:56:37 it works =) 11:56:47 thanks for the help;p 11:58:08 No problem. :) 11:58:15 * kc5tja still has it, after all these years. :) 12:00:17 now real fun can begin: getting a cdrom read word written 12:02:01 after that, getting a network boot word written 12:02:12 --- quit: wossname ("_-==-=-;.:`'-==_-*_-=") 12:34:03 host protected area 12:34:05 LOLLLLLLLLLLLLLLLLLLLLL 12:34:31 from the ata/atapi-6 spec 12:34:34 --- join: a7r (~a7r@206.72.82.135) joined #forth 12:34:39 yoh 12:35:56 hi 12:36:15 * suprdupr discovered something nasty about our everyday IDE harddrives 12:36:25 that they suck? 12:36:28 you can take an hard-drive in hostage 12:36:41 how? 12:36:47 host protected area 12:37:04 with commands like 12:37:19 read native max address 12:37:24 set max address 12:37:33 Modern IDE drives actually don't suck anymore. 12:37:42 and set max set password 12:37:46 They're just a hair's breath away from topping SCSI speeds. 12:38:25 kc5tja: did you ever heard of that feature? 12:38:39 kc5tja: that's true if you look at the spec sheets,.. but they still aren't as 'good' for 'real' use. 12:38:54 Apple has them in the server environment, but they have to devote one IDE controller per drive. :P 12:40:51 i'll try interfacing my hd in depth i think, just to see if there's some hidden space at the end of it 12:41:01 a bootable cdrom could set up an untouchable swap space 12:41:37 well the secutiry depends upon bruteforce attacks fesability; after 5 missed attempt, the hard drive need a reset 12:41:56 on the xbox they sniffed the password, but that doesnt count ;o) 12:48:52 neat features for compact flash cards: theres a command returning the numbers of time a sector has been written too 12:49:14 the cfa translate sector command 12:54:36 Yep 12:55:08 a7r: Of course, because IDE is basically a point-to-point link. 12:55:20 The fact is that two drives per bus is a hack. 12:56:06 Anyway, I need to finish getting ready. 12:56:15 * kc5tja spent most of this morning reading a comic strip. 12:56:28 lol 12:57:53 * suprdupr spent most of his morning getting rid of a tiny little bug 12:59:48 now before fiddling with the atapi packets i should get read running on my drive at least 13:02:26 Providing you don't use DMA, reading and writing via IDE is dead simple. 13:02:49 I don't know how to do IDE DMA personally -- it seems to be chipset specific. 13:03:48 there's some commands 13:03:51 in the reference 13:04:19 ill try to read from harddrive again, brb 13:04:22 --- quit: suprdupr ("brb") 13:08:50 hrm 13:09:32 hrm.. 13:10:09 can anyone think of an automated way to get the offset into a C structure, of a given element? 13:11:15 I don't want to write accessor functions for all these data structures to hook into Ficl. 13:11:48 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp251630.sympatico.ca) joined #forth 13:12:03 tssss doesnt work ... hang in the reading code 13:12:16 * suprdupr gotta get info on pio mode 4 13:15:12 When in this state, the host shall read the device Status register. When entering this state from the HI4 state, 13:15:12 the host shall wait 400 ns before reading the Status register. When entering this state from the HPIOI2 state, 13:15:12 the host shall wait one PIO transfer cycle time before reading the Status register. The wait may be 13:15:12 accomplished by reading the Alternate Status register and ignoring the result. 13:15:21 one source of problems 13:15:51 similar to the RTC code postd on colorforth mailing list: chuck's code didnt take into account some timing issue iirc 13:28:35 a7r: working w/ ficl, nice. what are you doing? 13:29:51 rO|: writing a video game. 13:30:51 hobby? 13:34:25 yah 13:34:41 I'm helping some friends with the technicals. 13:44:00 --- quit: suprdupr (niven.freenode.net irc.freenode.net) 13:44:00 --- quit: w1k1 (niven.freenode.net irc.freenode.net) 13:44:00 --- quit: rO| (niven.freenode.net irc.freenode.net) 13:44:00 --- quit: TreyB (niven.freenode.net irc.freenode.net) 13:44:00 --- quit: Robert (niven.freenode.net irc.freenode.net) 13:44:00 --- quit: skylan (niven.freenode.net irc.freenode.net) 13:45:21 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 13:45:21 --- join: skylan (sjh@vickesh01-4504.tbaytel.net) joined #forth 13:46:02 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp251630.sympatico.ca) joined #forth 13:46:02 --- join: w1k1 (~w1k1@pD9E59A66.dip.t-dialin.net) joined #forth 13:46:02 --- join: rO| (~rO|@pD9E59A66.dip.t-dialin.net) joined #forth 13:46:02 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 13:47:41 --- quit: suprdupr ("brb") 14:15:39 --- join: TheBlueWizard (TheBlueWiz@207.111.96.124) joined #forth 14:15:39 --- mode: ChanServ set +o TheBlueWizard 14:15:42 hiya all 14:16:32 mio 14:16:33 moi 14:16:58 Hi :) 14:17:00 hei mur! :) 14:17:04 hiya Robert 15:31:37 --- quit: mur ("MURR! save the http://rainforest.care2.com/") 15:31:38 --- quit: a7r (Read error: 104 (Connection reset by peer)) 15:42:49 --- join: akp (~rance@pD9537C45.dip.t-dialin.net) joined #forth 15:45:41 --- join: suprdupr (CrowKilr@HSE-Windsor-ppp251630.sympatico.ca) joined #forth 15:45:47 hi 15:46:12 hiya suprdupr 15:46:16 i went a while ago on a french channel on undernt, trying to get people involved in my project 15:46:34 nonetheless, they were relunctant ;p 15:46:46 what project? 15:51:08 board.flatassembler.net 15:51:16 the YATF and the the ide bootloader 15:52:24 * TheBlueWizard is looking at those 15:54:12 --- quit: akp (Read error: 60 (Operation timed out)) 15:54:18 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 15:54:37 um...I suppose YATF and IDE bootloader are found in OS construction, right? 15:54:40 hiya tathi 15:54:48 hey TBW 15:56:41 TBW: yep 15:59:42 tathi: did you had a look at this? http://board.flatassembler.net/viewforum.php?f=11 16:00:19 the ide bootloader and the YATF project 16:02:05 * TheBlueWizard is reading the bootloader stuff..."interesting that it uses the unused portion in head 0 area...I thought the partitions start right after the MBR...will have to review my stuff" 16:02:43 it gives in my case about 30kb to play with, more than enough 16:04:13 useful for stuffing in some GRUB like OS manager 16:05:29 suprdupr: I was just looking at it 16:05:49 sounds interesting 16:06:01 its the best tokenizing scheme 16:06:06 convenience of ascii 16:06:11 with small source 16:06:20 whole words can be stuffed in a byte 16:06:28 but not interesting enough to make me go back to x86 ;) 16:06:42 implement the scheme on powerpc! 16:06:51 i wish i could program for my gamecube 16:07:03 i let it go to my brother 16:07:20 but as soon as a community start coding for it im in! 16:07:24 does Linux run on that yet? 16:07:49 nope, but through phantasy star online some people managed to download ISOs 16:07:57 the StarCube hacking group 16:08:01 iirc 16:08:17 thats the first game tu use the broadband adapter 16:10:55 anyway look at the tokenizing scheme 16:11:10 im thinking right now of buidling an interactive prompt 16:11:30 would need some thoughtful words but would be feasible 16:12:23 i could debug code on real hardware real faster 16:12:41 im gonna test my code with my usb stick 16:12:43 brb 16:12:53 --- quit: suprdupr ("hibernate, reboot...") 16:14:41 --- join: suprdupr (CrowKilr@Ottawa-HSE-ppp3653797.sympatico.ca) joined #forth 16:15:01 hmm my read word still hangs 16:16:17 suprdupr: what is your tokenizing scheme exactly? 16:16:51 3 counted strings and 2 indexes type 16:16:55 it uses byte tokens 16:16:56 * TheBlueWizard is now looking at YATF 16:17:01 look at the detoken word 16:17:04 its all there 16:18:23 oh, as an index. 16:18:24 ok 16:18:39 my x86 asm is really really rusty 16:18:41 you got definitions, theyre skipped like comments by the compiler, except that when they are encountered, the current position is written in the Index 16:18:53 yup 16:18:59 ok i use edi to do +! primitives 16:19:13 its where the compiled code ends 16:19:45 so definitions and comments are almost the same 16:19:55 1 to 16 bytes of text + the token 16:20:07 little counted strings 16:20:24 the middle token is the bincopy token, its a 1 to 32 counted string 16:20:50 when its encoutered, it copis the following n bytes at [EDI] 16:21:06 i called the token once binary citation 16:21:26 look at the colorcode in the second post, not all the listings are there 16:21:42 and maybe the colors sucks but its colorcode 16:22:02 each index is resolved at edit time: theres two type 16:22:26 one with a range of 64 and the other with a rnage of 128 words, spanning the whole Index 16:22:54 the first is a macro token: when encoutered, the compiler jump to the position written in the index. 16:23:04 yeah, I get the idea now. 16:23:25 x86 stuff is coming back to me 16:23:28 so by combining def, binary and macro i cant extent the compiler like i want, and the other index compiles a relative jump 16:23:42 ; is intelligent, so if its preced by a call 16:23:47 right 16:23:50 it converts the call to a jump 16:24:02 and if the jump is also followed by a call 16:24:05 thats the pushopt word 16:24:07 that, unfortunately, is not such a simple optimization on PPC 16:24:30 call1 jump2 becomes push2 jmp1 16:24:38 why? 16:24:54 it's a RISC architecture, you have to worry about saving the return address yourself 16:25:23 k no hardware stack 16:25:28 so some words have a prolog/epilog that saves/restores the return address, some don't 16:25:49 it can be done, just it's a nuisance, because you have to check, and I haven't bothered yet. 16:25:54 why some do not? 16:26:07 well, they could all 16:26:14 but it's like 6 instructions 16:26:22 so for the primitives, which are written in asm 16:26:46 They could be 3 instructions, or they could be 9 instructions 16:27:10 (written in asm and don't call any other words) 16:27:25 you mean inlined or not? 16:27:44 no 16:27:57 hmm... 16:28:26 words like + - dup drop etc. 16:28:39 they're written in asm, they don't call any other words. 16:29:01 so they don't need to have the code that pushes the return address on the stack 16:29:17 Don't know if you're familiar with PPC at all? 16:30:13 It has what they call the Link Register. A "bl" instruction (branch and set link register, basically a "call"), sticks the "return address" in the link register. 16:30:48 if you don't call any subroutines, you can just do a BLR (branch to link register, basically a RET) 16:31:27 if you do call subroutines, you have to grab the link register value and put it on a stack, then restore it so you can return to it. 16:31:55 but that takes 6 instructions, so I don't do it if I don't have to. 16:33:06 kk 16:33:27 so then when you're trying to do the tail-call optimization, you have 4 possibilities 16:33:28 but the compiler im doing try to do just that, compiling primitives inline 16:33:40 it looks like the arm architecture 16:33:54 i looked forward programming the gb advance but i sold it 16:33:56 yeah, most RISC-ish architectures are fairly similar 16:34:15 what are the possibilities? 16:34:19 compiling primitives inline makes much more sense on x86 than PPC. 16:35:01 both the word you're in/word you're calling can have/not-have those 6 instructions. 16:35:43 kk i get it 16:35:59 yeah 16:36:15 if they both don't you can just turn the call (bl) into a branch 16:36:37 if they both do, you can turn the call into a branch if you branch past the prolog at the beginning of the word you're calling. 16:36:41 etc. 16:37:02 * TheBlueWizard doesn't quite grok YATF 16:37:13 grok == understand? 16:37:49 suprdupr: yeah...grok == *really* understand (Hacker's Jargon has a definition for grok) 16:38:20 ok... you can do many things with it, since its at most without source code a tokenizing scheme 16:38:36 * tathi has to go deal with chickens, brb 16:38:51 are you fluent in assembly?, or just question the utility of doing it this way? 16:39:30 I'm fairly fluent in x86...just trying to figure out exactly how it is supposed to work 16:39:56 with the goal in mind, that is...I haven't played with ColorForth, so that might be an impediment 16:40:05 kk! 16:40:40 I am not asking you to explain everything ;) 16:41:04 do you understand the tokens and how they work? 16:41:28 from there, its a program unpacker, much like zip compression 16:41:39 but it can be extended through macros 16:41:54 to build intelligent ; ?dup or ?lit 16:42:05 one can code a program or a compiler 16:42:16 I understand the idea of token....so you're saying they are compressed using bit flags? 16:42:21 the goal is to keep ascii and shrink down the code even more than chuck did 16:42:34 look at the detoken word 16:42:40 they are shifted to the right 16:42:54 so when a carry is detected, the processed number is in eax already 16:43:04 yes, I already looked at the detoken...obviously there are 5 possible actions 16:43:14 huffamn encoding enable to have differnt range for different types of token 16:43:25 definitions and comments are the same 16:43:34 they are skipped by the compiler, they dont do anything 16:43:48 except that defintions stack the current HERE 16:43:52 in the Index array 16:44:05 wich is 128*4 bytes large 16:44:10 *which 16:44:18 so after ward the compiler 16:44:22 dont search for words 16:44:32 he use the book's index to get the exact location ;p 16:45:15 what invokes detoken? 16:45:25 tokens can be made larger, to have a larger dictionary, but ill try to get code before judging about the limitation of 64 macros and 128 words total 16:45:31 ExecuteToken? 16:45:33 the compiler word at the bottom 16:45:43 its called from runtime 16:46:09 where esi is the pointer to the datastack, eax the TOS, edi the A register and esp the return stack pointer 16:46:46 ok...and the source is all ASCII, mainly the hex codes? 16:46:50 right? 16:47:02 definitions are ascii 16:47:12 bincopy are translated into numbers 16:47:26 and macros and call are 1 byte long 16:47:32 so when looking inside an hex editor 16:47:41 one will ee words pop at some places 16:48:07 so even if you have just the raw image, its easier to know what it is about 16:48:20 than just shannon encoded words like Chuck used 16:48:34 hmm...interesting 16:48:49 so once you defined a word, every other reference to that word in source 16:48:53 will be one byte long 16:49:23 so that doesnt make a big difference putting ret macro at the end of a word or c3 at the end of the binarycopy token 16:49:29 c3h=ret opcode 16:49:42 only execution will be slowed down 16:49:54 I see...of course problem will appear when you have more than 128 words 16:49:56 im also thinking about using only tokens for lookback optimizations 16:50:14 suprdupr: IME, 64 macros is plenty, but 128 words is awfully tight. 16:50:25 * TheBlueWizard nods 16:50:32 just use 16 bits tokens 16:50:39 rewrite the compiler into your app 16:50:41 and youre set ;p 16:50:46 its almost the same code 16:51:11 very scalable 16:51:15 but 16:51:19 it compiles so fast 16:51:26 yup yup 16:51:33 no need for compiled binaries ;) 16:51:36 one could establish a linking mechanism between source blocks 16:51:39 =) 16:51:58 i thought of go 16:52:01 GO! word 16:52:07 but something better could be made 16:52:19 like GO! (greenwordhere) 16:52:42 go! macro would exit the compiler and jump to the green word index 16:52:51 it can truly be anything 16:53:48 the editor would be token centered 16:53:54 cursor token-wide 16:53:59 --- join: I440r (~x@dialup-67.29.221.233.Dial1.Cincinnati1.Level3.net) joined #forth 16:54:06 hi!! 16:54:10 hi 16:54:10 --- nick: suprdupr -> CrowKilr 16:54:13 hiya I440r!!!!!!!!!! LTNS!!!!!! 16:54:14 --- nick: CrowKilr -> suprdupr 16:54:18 :) 16:54:30 ive made an 8051 forth AND assembler 16:54:33 how's life? 16:54:42 but i need to make a mini terminal proggie for it 16:54:46 board.flatassembler.net, under os construction, thats my baby ;o) 16:54:55 and i know jack shit about uarts 16:55:02 look at this maybe youll find some ideas interesting for your embedded forth 16:55:34 :) 16:56:58 * TheBlueWizard prods I440r about his question: "How's life? Still struggling?" 16:57:11 oh hehe 16:57:17 kinda 16:57:25 but i just did some temp BS work 16:57:34 two 12 hour shifts 16:57:56 Hi! 16:58:00 you're working day-n-night? ouch! :) 16:58:20 no 16:58:26 8 am to 8 pm 16:58:30 but its over 16:59:50 ok :) 17:02:16 anyone got any uart code for dos? 17:02:24 Yeah. 17:02:26 something that can handle 38400 17:02:35 and full duplex 17:02:36 In Pascal and asm (NASM). 17:02:43 Full duplex? What's that? :) 17:02:47 thatll do L) 17:03:21 I440r: what OS are you targeting? DOS? 17:03:32 yes 17:03:42 http://robert.zizi.org/pub/lame 17:03:48 Check asmser.zip and paser.zip 17:03:59 Remember I wrote that code a looong time ago :P 17:04:47 I believe Simtel may have some stuff related to UART banging...go look into DOS section 17:05:40 simtel is a pile of SHIT 17:05:49 99% of the stuff there is broken links 17:05:52 fuck simtel 17:06:04 I once used that code to transfer a system to a computer with no floppy, just a HD with ONLY command.com (and DOS kernel) on it, and a serial port. :) 17:06:18 Using copy con > transfer.com :P 17:06:20 I440r: hehe 17:06:44 hehe 17:06:53 can it do 38400 ? 17:07:00 or is 1200 its max 17:07:10 38400 should be fine. 17:07:30 k 17:16:49 well, I need to go...bye all! 17:17:11 nite! 17:17:32 nite, I440r! hope to chat again soon :) 17:17:53 --- part: TheBlueWizard left #forth 17:18:43 i got to go too, im really sleepy 17:18:56 see ya, glad to know you're alive I440r ;p 17:19:06 :) 17:19:14 im only partially alive heh 17:19:37 --- quit: suprdupr ("take care of yourself!") 17:46:30 --- join: Gnomon (~Gnomon@CPE000103c34069-CM014300001653.cpe.net.cable.rogers.com) joined #forth 17:47:45 Hullo? I was wondering if some kind souls could point me in the right direction. 17:48:25 for what? 17:48:35 to learn forth ? 17:49:01 I440r, well, I'm not doing too badly in that respect - I'm reading all the Brodie and Koopman material I can find - but actually I was looking for applications. 17:49:23 Specifically, I was looking for anything to do with ZCode interpreters or other interactive-fiction codebases in Forth. 17:49:26 what OS are you running ? 17:49:46 have you searched ftp://ftp.taygetta.com? 17:49:52 ive no knowledge of zcode 17:49:59 Win98/2K, various Linuces, some others... take your pick ;) 17:50:30 Ah, actually no, I had not - I only ever associated Taygetta with ANS Forth and the Scientific Forth libraries. I'll have a look now. Thanks for the pointer. 17:51:15 I440r, ZCode is a very, very simplistic virtual machine. It is mostly targetted by interactive-fiction programs; Zork, for example, was written for a variant of the ZCode engine. 17:52:27 aha 17:52:50 well if interested in forth you can try my linux x86 forth :))) 17:52:54 isforth.clss.net 17:53:14 Aha! /You/ wrote isForth! I actually have your page loaded in the background already ;) 17:53:23 (I thought your nick was familiar) 17:53:26 heh 17:53:42 ive not worked on it in a few weeks, i just wrote an 8051 forth and assembler 17:53:53 ill be releasing that as free for non commercial use soon 17:54:01 Ah, nifty! I'll have to remember to take a look! 17:54:09 but i need to write a mini terminal for it 17:54:21 something that runs in dos, supports full duplex at 38400 17:54:27 and i dunno shit about the uarts heh 17:54:29 lol 17:54:34 Right now I'm trudging through the depths of colorForth, specifically the newer TCP/IP implementation... but I'm more interested in slightly less extreme projects. 17:55:00 There's actually some good serial control code in the ~100 blocks of colorForth - hang on a sec. 17:55:05 chuck is still developing color forth ? 17:55:08 (wait, have you already read through it?) 17:55:13 for the PC? 17:55:24 Heck yes, it's still in active development. He's planning on updating the site and releasing a new code dump soon. 17:55:45 He gave a working block dump to someone on the mailing list and allowed it to be posted online. It makes for quite the interesting reading. 17:55:54 cool. he just sold the house he has been living in since forever and moved... 17:56:05 Seriously?? I didn't know that! 17:56:13 yup. 17:56:18 he has been in here you know 17:56:24 The mailing list post was at http://www.strangegizmo.com/forth/ColorForth/msg01034.html 17:56:31 I440r, I know, I read the logs ;) 17:56:35 jeff fox comes in every now and then too 17:56:41 Wow, big names... 17:56:50 ya :) 17:57:03 Something tells me I should start hanging out here more often ;) 17:57:04 i would realy like tom zimmer in here every now andthen too 17:57:15 Pardon my ignorance, I know not the name. 17:57:40 --- quit: Gnomon (Read error: 54 (Connection reset by peer)) 17:57:54 --- join: Gnomon (~Gnomon@CPE000103c34069-CM014300001653.cpe.net.cable.rogers.com) joined #forth 17:57:58 he did FOC 17:57:59 erm 17:58:03 FPC 17:58:06 Ack, pardon me - system crash. 17:58:07 FPC? 17:58:11 mental note, must learn to type 17:58:17 Err... the acronym rings a bell, but that's all. 17:58:21 Heh, you and me both ;) 17:58:21 a dos based forth compiler 17:58:25 Ah, of course, yes. 17:58:47 Yokay, there we go - the colorForth serial code is in block 54. My bad. The link is at http://www.geocities.com/eleks_76/ether-udp-3.html#54 17:59:08 im glad you noticed that cuz i couldnt find it heh 17:59:48 Yes, googling forth-related topics is often an exercise in frustration >_< I've resorted to finding mailing-list archives and versioning information, then manually spidering from there. 18:00:12 :) 18:00:45 i generally just write what im not able to find 18:00:49 btw i dont code colorforth 18:01:36 Neither do I - my favourite environment at the moment is GForth. 18:01:51 I have not yet achieved that facility with Forth, though I aspire to it. 18:01:56 Pardon me for a moment. 18:02:00 --- nick: Gnomon -> GnomonAFK 18:02:17 k 18:03:01 --- nick: GnomonAFK -> Gnomon 18:03:11 wb :) 18:03:13 Sorry - doors to be unlocked, dogs to be petted, etc. 18:03:16 so where are you located ? 18:03:21 oh - i dont like gforth 18:03:30 lol - i got 2 dogs :) 18:03:47 my whole reason for writing isforth is because i dont like ANY existing linux forths 18:03:53 i HATE c 18:04:25 Near 45.45N, 75.70W - Ottawa, Canad. 18:04:29 Canada, even. 18:04:31 tho ill code it for you if im making a minimum of $40 per hour 18:04:33 heh 18:04:41 aha. im in indiana :) 18:05:02 usa 18:05:04 that is 18:05:31 (chuckle) Yes, I answer phone calls from the USA all day long - I know American geography better than Canadian ;) 18:05:35 (or at least the area codes) 18:05:51 Interesting - I know that many people hate ANS Forth because of its bloat, but I find Paysan's and Ertl's optimizations to be interesting. 18:06:14 Why do you hate GForth? I haven't yet developed tastes discriminating enough to differentiate between different implementations. 18:06:28 dont get me wrong, i dont HATE gforth heh 18:06:31 i just dont LIKE it 18:06:32 (you hate C? Join the club - I'm more of a Schemer myself) 18:06:54 im a jobless asn/forth/c coder 18:06:57 asm 18:06:58 even 18:07:36 Don't take a job in a call center. The pay is better than minimum, but the work is terrible. 18:07:53 I'm an aspiring coder, though mostly I just read research papers and dream ;) 18:07:54 i dont intend to 18:08:01 nor will i take a job doing testing 18:08:05 black OR white box testing 18:08:07 If I may ask, why do you /dislike/ GForth? What's so unattractive about it? 18:08:23 its ans 18:08:33 if i remember correctly its c 18:08:34 And what's so awful about testing? I'd imagine that I might even enjoy the minutiae... 18:08:41 Guilty on both counts. 18:08:51 no. testing is BORING 18:09:25 someone gives you a program or a gizmo and you push buttons and twiddle knobs to see if it performs as expected 18:09:38 and if it doesnt you write a 278458547 page report on it 18:09:46 no thanx 18:09:52 Oh, oog. That last sounds unappealing - I see your point. 18:10:00 heh 18:10:05 exactly 18:10:41 i learned forth with tom zimmers FPC. i wrote isforth to be similar in look and feel to fpc 18:10:43 i gotta go 18:10:57 cu :) 18:10:58 Farewell, and thanks for everything. 18:11:14 np :) 18:11:17 bye 18:11:18 --- quit: I440r () 18:11:23 --- quit: Gnomon ("Client exiting") 18:34:20 --- quit: tathi ("leaving") 19:40:19 --- join: Herkamire (~jason@h0030657bb518.ne.client2.attbi.com) joined #forth 19:42:12 howdy folks :) I'm back from vacation 21:30:19 --- quit: TreyB () 23:59:59 --- log: ended forth/03.07.26