Robert C. replied: >"Michael J. Mahon" wrote in message > >> All these issues caused me to prefer using an annunciator output >> and a pushbutton input for NadaNet--it is both simpler and more >> capable. > >The more I read about NadaNet, the more I think it is "the next best thing" >to true Ethernet. I'm glad you like what you've read. ;-) The practical bandwidth is about 8 kilobytes/sec, which is a lot lower than the peak bandwidth of Ethernet, but the latency is very low and Apple II's don't need screaming bandwidth. NadaNet delivers data at about the same rate as a 5.25" disk, which is quite practical for many purposes. And you can't beat the price... ;-) I've just written a Applesoft program "prun" which will do a "parallel run" of any Applesoft program on all networked machines running the service loop. The slaves complete their computation and return to the service loop by doing any input operation. I've been pretty busy reorganizing my lab area for the last few weeks, and expect that to go on for another few weeks, but my next NadaNet project is assembling the code to run at the top of RAM (at $B800 for AppleCrate slaves), so that HIMEM: can easily protect it, and all of low memory will be contiguous for program(s). I'll give some thought to self-relocation in the process... -michael Check out parallel computing for 8-bit Apples on my Home page: http://members.aol.com/MJMahon/ Robert C. replied: >"Michael J. Mahon" wrote in message >news:20040817220555.19157.00003638@mb-m06.aol.com... >> Robert C. replied: >> >> >"Michael J. Mahon" wrote in message >> > >> >> All these issues caused me to prefer using an annunciator output >> >> and a pushbutton input for NadaNet--it is both simpler and more >> >> capable. >> > >> >The more I read about NadaNet, the more I think it is "the next best >thing" >> >to true Ethernet. >> >> I'm glad you like what you've read. ;-) >> >> The practical bandwidth is about 8 kilobytes/sec, which is a lot >> lower than the peak bandwidth of Ethernet, but the latency is >> very low and Apple II's don't need screaming bandwidth. >> >> NadaNet delivers data at about the same rate as a 5.25" disk, >> which is quite practical for many purposes. >> >> And you can't beat the price... ;-) >> >> I've just written a Applesoft program "prun" which will do a >> "parallel run" of any Applesoft program on all networked >> machines running the service loop. The slaves complete >> their computation and return to the service loop by doing >> any input operation. >> >> I've been pretty busy reorganizing my lab area for the last >> few weeks, and expect that to go on for another few weeks, >> but my next NadaNet project is assembling the code to >> run at the top of RAM (at $B800 for AppleCrate slaves), >> so that HIMEM: can easily protect it, and all of low memory >> will be contiguous for program(s). >> >> I'll give some thought to self-relocation in the process... > >I have downloaded and read the documentation and code and am in the process >of entering the code one byte at at time. I know the files are available for >download too, but I figured: what better way to learn the code than to enter >it manually. Entering the code in the monitor is certainly an excercise in patience! At least you can "List" the code to verify that it is correct. (Errors in hand entry are a major issue.) > I will be using my 2 Apples as a "Master" / "Slave" setup, so I >was wondering, is there any parts of the code that should be changed? The >Applesoft program you wrote can be easily changed so that it does not use >"machine 2" as a message center, and the Slave polls the Master upon >completion of its job. Yes, it can be changed, but as written it requires at least three machines: the master, the message server, and at least one "worker" slave. The master initializes the system and puts "jobs" in a message queue, "workers" receive jobs from the message queue and place results in another message queue, and the master receives the results and prints them. As I note in the documentation, the primary function of the message server is to permit queued asynchronous communication between machines. If you don't use a message server, then any two communicating machines must "rendezvous", usually by one of them polling in its service loop. If you are only connecting two machines, then you may want to try some different things. The "parallel run" program would allow you to initiate an arbitrary Applesoft program on the slave machine from the master. I'll look at putting it up on the web in the next few days. (Although you can probably write your own using "PARALLEL.SIM" as a template.) You will not need the NadaBoot code, since you will not be running a "diskless" slave. That also helps with debugging, since you will be able to debug your slave machine(s) locally. (Some network debug capability is getting higher on my want list. ;-) (As I've been cleaning and reorganizing my lab, I discovered that it has a _floor_!! Amazing! ;-) -michael Check out parallel computing for 8-bit Apples on my Home page: http://members.aol.com/MJMahon/ Robert C. replied: >"Michael J. Mahon" wrote in message >news:20040820033332.26080.00002250@mb-m28.aol.com... >> Robert C. replied: >> > I will be using my 2 Apples as a "Master" / "Slave" setup, so I >> >was wondering, is there any parts of the code that should be changed? The >> >Applesoft program you wrote can be easily changed so that it does not use >> >"machine 2" as a message center, and the Slave polls the Master upon >> >completion of its job. >> >> Yes, it can be changed, but as written it requires at least three >> machines: the master, the message server, and at least one >> "worker" slave. The master initializes the system and puts >> "jobs" in a message queue, "workers" receive jobs from the >> message queue and place results in another message queue, >> and the master receives the results and prints them. >> >> As I note in the documentation, the primary function of the message >> server is to permit queued asynchronous communication between >> machines. If you don't use a message server, then any two >> communicating machines must "rendezvous", usually by one >> of them polling in its service loop. >I still do not quite understand the "machine 2 as the message server" part >of NadaNet: Is it the Applesoft part that dictates that Machine 2 will be >used as a message server, or is it NadaNet itself that requires this? The assignment of a machine 2 as the message server is arbitrary, as long as everyone agrees on which machine will have that role. In general, having the role of message server requires that a machine be dedicated, that is, doing little or nothing else, for reasons described below. NadaNet does not require anything, but the Applesoft program uses the message server to hold queues of incoming and finished work. The "NADANET" binary contains client and server code for the message server, but the server code is only actually used by the "designated" message server. An application could use more than one message server, but it is not often necessary, and therefore not desirable. Message classes are "qualified" by the server, so a message of class $0010 on server #2 is distinct from a message of class $0010 on server #6, for example. If the message server is to do its job, it must be distinct from the job creating machine(s) and the job processing machine(s). That is because it must spend almost all its time polling the network in its service loop, so that sending and receiving machines will not have to wait. This precludes having the message server machine do much "useful work". Because the message server provides a "store and forward" function, all other machines can send and receive messages whenever it is convenient for them, as opposed to only when their correspondent is ready to receive/send. Of course, the downside is that each message must traverse the network twice, but the benefit of asynchrony is usually well worth it. -michael Check out parallel computing for 8-bit Apples on my Home page: http://members.aol.com/MJMahon/