text:
Wikibooks:Reading room/Proposals/2020/December

Suppress redirect feature
Hello folks, so I just came up with a thought. Yesterday I was performing some botched moved and damn they were many. The redirects which were created were unnecessary therefore I had to tag them all for speedy deletion. This is really tedious and sometimes causes a lot of inconveniences in editing especially when no admin is online. I hereby propose the following:
 * Proposal one A creation of a user group similar to the “page movers” user group on Wikipedia. The user right should make an editor:
 * Be able to suppress redirects when making a move
 * Move a page/books and its subpages with an increased limit of 100 pages/minute
 * Note Requests for this permission to be made at RFP similar to other permissions and only granted to users with experience in page moves

 * Proposal two The suppress redirect feature and 100 pages/minute feature be introduced into the reviewer toolset.

Comments

 * Proposal two --Synoman Barris (discuss • contribs) 11:23, 14 September 2020 (UTC)
 * While I appreciate your frustration in this case, honestly I'm inclined to extending the suppress-redirects priv.  Some various thoughts:
 * Renaming pages always has the capacity to get things tangled up, but suppressing redirects has the potential to make this even worse, by losing track of various associated tasks that need to be untangled as part of the larger operation. When drawing down the list of requested speedy-deletions just now, there was a bunch of untangling to do that would have been significantly harder if redirects had been suppressed.  When things get significantly snarled (a rare occurrence, but something I've seen happen a few times), it typically would have been worse without redirects, and, seems to me, usually the user who got tangled up learns from the incident more elegant ways to handle similar situations thereafter.
 * When a whole book has to be moved, please ask an admin to do it. Admins can move a page and all of its subpages in a single action, and can suppress redirects and handle other associated subtasks at the same time.
 * --Pi zero (discuss • contribs) 14:00, 14 September 2020 (UTC)

 * On the English Wikipedia, when I move a page, I see a checkbox labeled "Leave a redirect behind" that is selected by default. I could swear this feature existed before I became a Wikipedia admin, although I was a reviewer and don't know if this feature was part of a reviewer's toolset. I would support making this feature available the same way it is made available on Wikipedia. Anachronist (discuss • contribs) 14:03, 14 September 2020 (UTC)

 * proposal one, weak proposal two. I'm not hugely active here, but the page mover right works quite well on the English Wikipedia. I'm not exactly comfortable with granting reviewers too many additional rights though, because then they would become sysops without sysop functionality, especially since this right should be granted automatically. However, on Wikidata, autoconfirmed users automatically have the ability to patrol pages, move pages without leaving redirects, and have their pages marked as autopatrolled. Then again, maybe it's because there isn't much demand for rights there, and most users need just autoconfirmed access to use one of Magnus Manske's semi-automated tools, so most (autoconfirmed) users can be trusted with these flags. Maybe it's also because the rules there are more tolerant and lenient. Reviewers are selected to clean up vandalism, not clean up page moves and other adminny stuff. Otherwise they'd be called "subadmins" or something of the like. Prahlad balaji (discuss • contribs) 04:38, 15 September 2020 (UTC)
 * proposal 1 because that would just clutter the permissions toolkit (and I am not a big fan of the demarcation of permissions that Wikipedia does). proposal 2 because while I can see Pi zero's opposition, on the other hand we currently have to give reviewer permission manually, so I don't see adding two permissions as a big problem, given that reviewers by default are supposed to have a degree of experience already. Leaderboard (discuss • contribs) 15:06, 14 September 2020 (UTC)
 * requesting reviewer at rfp is only a temporary solution. Would you support proposal one and/or oppose proposal two if the bug fixed itself? Thank you. Regards, Prahlad balaji (discuss • contribs) 04:39, 15 September 2020 (UTC)
 * I'll stay opposed to the first one, and probably be neutral for the second - because I don't see a mistake with it, just a bit risky. After all, those who are automatically granted reviewer do have some experience, similar through less rigorous than Wikipedia's Extended Confirmed permission. Leaderboard (discuss • contribs) 13:33, 15 September 2020 (UTC)
 * ok, thanks for the explanation. --Prahlad balaji (discuss • contribs) 14:42, 15 September 2020 (UTC)
 * autopromotion has started working again. --Prahlad balaji (T / C) 02:28, 19 September 2020 (UTC)

 * Alt proposal, leave them. Redirects are cheap, so cheap that it really isn't worth wasting time over them unless they are pejorative or misleading. So rather than make it easier to delete or not create redirects, I would suggest just accepting that there are going to be lots of redirects from typos of names. OK each individual typo may be so rare that in some cases they won't recur. But across thousands of redirects there is a real value in keeping them, even if only hundreds are ever used by someone making the same typo, while there is zero gain in deleting them, and time spent reviewing them and deciding which are likely to be of some value and which should be kept is bound to be more valuable than any possible gain from deleting them. WereSpielChequers (discuss • contribs) 15:11, 14 September 2020 (UTC)
 * It’s not just about redirects, you realize that only an admin can move subpages and pages in a book at a go. For a normal user, we have to move them one by one. It really becomes tedious --Synoman Barris (discuss • contribs) 15:18, 14 September 2020 (UTC)
 * It's not something to do casually, though, and when occasionally needed an admin can help. --Pi zero (discuss • contribs) 15:49, 14 September 2020 (UTC)
 * WikiBooks started with a dozen administrators. There are now only 8. Rather than create a new usergroup why not appoint some more admins? MrJulesd below is quite correct to note that unbundling on EN WP has led to fewer RFAs, if you appoint more trusted users as admins it spreads the load more evenly. another way of thinking of it is to ask yourself, are there people here who you would trust to move pages but not trust with the block button? WereSpielChequers (discuss • contribs) 19:21, 14 September 2020 (UTC)
 * It's not that we get a lot of applications to begin with... Leaderboard (discuss • contribs) 13:33, 15 September 2020 (UTC)
 * If adminship were bundled I'd be happy to learn the ropes and help out with admin work here, as I do already on en-wiki. I'm just not inclined to endure another RFA. One was enough. Anachronist (discuss • contribs) 22:17, 15 September 2020 (UTC)
 * Wikibooks' RFA is significantly less gruesome than Wikipedia's (in fact, one could argue that being a steward is easier). Leaderboard (discuss • contribs) 07:51, 16 September 2020 (UTC)
 * I can concur with Leaderboard. Our RFAs aren't as bad as the RFAs up at WP. I've seen the RFAs there, it's quite long and exhausting. —Atcovi (Talk - Contribs) 17:09, 8 October 2020 (UTC)

 * I think the big problem with unbundling is that, every time you do it, you create yet another reason to oppose at RFA. Now I haven't actually seen an RFA during my time here, but I think it's obvious that it would be beneficial if it happened more often. Now at en.wp, RfA has more or less dried up, despite the huge number of editors there. And I think unbundling is one of the major contributors to that, as most tasks can now be performed by non-admins. If this did pass I would prefer option 2, and I feel it is unlikely that it would create many problems, but I can't support it at this time per my comments.-- Jules (Mrjulesd) 15:58, 14 September 2020 (UTC)
 * proposal two. I think that reviewers are mature enough to handle suppressing redirects, especially when they're adopting books. --Prahlad balaji (T / C) 17:41, 18 September 2020 (UTC)
 * #2. Sensible. —Justin ( koavf ) ❤T☮C☺M☯ 23:42, 5 October 2020 (UTC)
 * Oppose proposal 1 - Not an entirely big fan of "copying" rights from Wikipedia, especially with proposal 2 being put on the line, which I support proposal 2. Although I understand Pi zero's input, I believe that reviewers are experienced enough to perform an action like this. On another note, we could increase the requirements if this new permission becomes an issue in the future. The frustration from the OP is evident. —Atcovi (Talk - Contribs) 17:09, 8 October 2020 (UTC)
 * Oppose 1 per no need for new groups. Support 2, but the 100pages/min is practically no ratelimit, so the phab ticket needs to be as such. And as we are here, GR/GS have these rights already, should we be allowed to use beyond basic countervandalism. Camouflaged Mirage (discuss • contribs) 18:49, 14 November 2020 (UTC)
 * Proposal 2. Seems sensible and if it doesn't work then we can go back to how things were.--ЗAНИA [[Image:Flag_of_the_Isle_of_Mann.svg|15px]]talk 12:53, 17 November 2020 (UTC)
 * Proposal 1. I have pagemover at and it would be nice to have something similar here. I am not against lifting the 100 pages/minute limit for reviewers but I would rather see either more admins or an unbundled "pagemover" group here than dump the ability to suppress redirects during page moves into our autogranted reviewer group here. —Uzume (discuss • contribs) 20:13, 21 November 2020 (UTC)
 * All in all, I think there is enough support for Proposal 2 and I've filed T268849 for its implementation. Leaderboard (discuss • contribs) 20:08, 26 November 2020 (UTC)

Automatically credit images.
"Note that many "free" images require an attribution to their authors. In online wikibooks this requirement is fulfilled by the link from each image to its description page. In printed books, however, you have to add an explicit attribution for these images." - Help:Print versions

Is it possible to automate this process in the footer/references section? This would really help with maintainability of print versions.

Mbrickn (discuss • contribs) 07:43, 5 December 2020 (UTC)


text: Template:Noprint/top

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Template:Noprint/top


text: Template:Noprint/bottom

title: Template:Noprint/bottom


text:
Comparison of crank based leg mechanism/Jansen linkage Modifications

Wrong Angle / Missing measurement / Tilt
(There are elven rods, but the two fixed points are a and l apart from each other)

Triangle
Traditionally, the leg is formed by just using rods:

A fully-parametric strandbeest implemented in OpenSCAD, with assembly instructions, is available for 3D printing.

Using Rod of the same length
f=39,4 and c=39,3 are so close in length, that using rods of the same length can simplify the assembly without affecting the gait to much.

Note that in practice, the whole mechanism as play and flex, undergrounds are not perfectly flat and lengths and holes have manufacturing inducted errors.


text:
Oberon/ETH Oberon/FTP.Mod

(* ETH Oberon, Copyright (c) 1990-present Computer Systems Institute, ETH Zurich, CH-8092 Zurich. License at https://en.m.wikibooks.org/wiki/Oberon#ETH_Oberon_License . *) MODULE FTP; (** portable *)	(* ejz, 02.04.21 07:57:37 *) IMPORT Files, Strings, Input, Display, Fonts, Texts, Oberon, NetSystem; (** A simple single session FTP Tool using commands. Useful for transfering many files to or from the 		same server. *) CONST MaxLine = 1024; BufLen = MaxLine; Tab = 9X; Esc = 01BX; BreakChar = Esc; Done = 0; NotReady = 1; NotConnected = 2; WrongUser = 3; WrongPassword = 4; TimedOut = 5; LocFileNotFound = 6; Interrupted = 7; Disconnected = 8; Failed = MAX(INTEGER); MinDataPort = 1100; MaxDataPort = 1500; Unknown = -1; UNIX = 0; VMS = 1; DefConPort = 21; TYPE Session = POINTER TO SessionDesc; SessionDesc = RECORD C: NetSystem.Connection; dataC: NetSystem.Connection; reply: ARRAY MaxLine OF CHAR; usr, passw, host, portIPAddress: ARRAY 64 OF CHAR; dataIP: NetSystem.IPAdr; dataPort, status, system, res: INTEGER; ack: BOOLEAN END; EnumProc = PROCEDURE (entry: ARRAY OF CHAR); VAR S: Session; W: Texts.Writer; log: Texts.Text; line: ARRAY MaxLine OF CHAR; buffer: ARRAY BufLen OF CHAR; timeOut: LONGINT; dataPort, col: INTEGER; PROCEDURE Connected(C: NetSystem.Connection; mode: INTEGER): BOOLEAN; VAR state: INTEGER; BEGIN state := NetSystem.State(C); RETURN state IN {mode, NetSystem.inout} END Connected; PROCEDURE Disconnect(VAR C: NetSystem.Connection); BEGIN IF C # NIL THEN NetSystem.CloseConnection(C) END; C := NIL END Disconnect; PROCEDURE Connect(VAR C: NetSystem.Connection; port: INTEGER; host: ARRAY OF CHAR): BOOLEAN; VAR adr: NetSystem.IPAdr; res: INTEGER; BEGIN NetSystem.GetIP(host, adr); IF adr = NetSystem.anyIP THEN C := NIL; RETURN FALSE END; NetSystem.OpenConnection(C, NetSystem.anyport, adr, port, res); IF res # NetSystem.done THEN C := NIL END; RETURN res = NetSystem.done END Connect; PROCEDURE UserBreak: BOOLEAN; VAR ch: CHAR; BEGIN IF Input.Available > 0 THEN Input.Read(ch); IF ch = BreakChar THEN Texts.WriteString(W, "interrupted"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); RETURN TRUE END END; RETURN FALSE END UserBreak; PROCEDURE ReadResponse(S: Session; VAR sline: ARRAY OF CHAR); VAR time, i, j, cpos: LONGINT; code: ARRAY 8 OF CHAR; line: ARRAY MaxLine OF CHAR; BEGIN IF ~Connected(S.C, NetSystem.in) THEN COPY("Connection closed by server.", sline); COPY(sline, S.reply); S.status := 0; S.res := Disconnected; RETURN END; time := NetSystem.Available(S.C); NetSystem.ReadString(S.C, line); IF log # NIL THEN Texts.WriteString(W, line); Texts.WriteLn(W); Texts.Append(log, W.buf) END; Strings.StrToInt(line, time); S.status := SHORT(time); Strings.IntToStr(time, code); cpos := 0; WHILE code[cpos] # 0X DO 			INC(cpos) END; i := cpos+1; j := 0; WHILE line[i] # 0X DO 			sline[j] := line[i]; INC(j); INC(i) END; sline[j] := 0X; time := Input.Time; IF line[cpos] = "-" THEN LOOP IF NetSystem.Available(S.C) > 0 THEN line[cpos] := 0X; NetSystem.ReadString(S.C, line); IF log # NIL THEN Texts.WriteString(W, line); Texts.WriteLn(W); Texts.Append(log, W.buf) END; IF line[cpos] # "-" THEN line[cpos] := 0X; IF line = code THEN EXIT END END; time := Input.Time ELSIF (Input.Time-time) >= timeOut THEN S.res := TimedOut; RETURN ELSIF UserBreak THEN S.res := Interrupted; RETURN END END END; S.ack := TRUE END ReadResponse; PROCEDURE SendString(C: NetSystem.Connection; str: ARRAY OF CHAR); VAR i: LONGINT; BEGIN i := 0; WHILE str[i] # 0X DO 			INC(i) END; NetSystem.WriteBytes(C, 0, i, str) END SendString; PROCEDURE SendLine(C: NetSystem.Connection; VAR str: ARRAY OF CHAR); BEGIN SendString(C, str); NetSystem.WriteBytes(C, 0, 2, Strings.CRLF) END SendLine; PROCEDURE SendCmd(S: Session; str: ARRAY OF CHAR); BEGIN IF ~S.ack THEN ReadResponse(S, line) ELSE S.ack := FALSE END; SendLine(S.C, str) END SendCmd; PROCEDURE CloseS(S: Session); BEGIN S.ack := TRUE; SendCmd(S, "QUIT"); ReadResponse(S, S.reply); Disconnect(S.dataC); Disconnect(S.C); S.res := Done END CloseS; PROCEDURE Close2(S: Session); BEGIN S.ack := TRUE; SendCmd(S, "QUIT"); Disconnect(S.dataC); Disconnect(S.C) 	END Close2; PROCEDURE QuerySystem(S: Session); VAR pos: LONGINT; BEGIN S.system := UNIX; SendCmd(S, "SYST"); ReadResponse(S, line); IF (S.status >= 200) & (S.status < 300) THEN pos := 0; Strings.Search("VMS", line, pos); IF pos >= 0 THEN S.system := VMS END END END QuerySystem; PROCEDURE QueryString(key: ARRAY OF CHAR; VAR s: ARRAY OF CHAR): BOOLEAN; VAR S: Texts.Scanner; lKey: ARRAY 32 OF CHAR; BEGIN lKey := "NetSystem."; Strings.Append(lKey, key); Oberon.OpenScanner(S, lKey); IF S.class IN {Texts.Name, Texts.String} THEN COPY(S.s, s) 		ELSE COPY("", s) 		END; RETURN s # "" END QueryString; PROCEDURE GetLogin(VAR host, usr, passw: ARRAY OF CHAR); BEGIN IF (usr = "ftp") OR (usr = "anonymous") OR (usr = "") THEN IF ~QueryString("EMail", passw) OR (passw[0] = "<") THEN COPY("anonymous@host.nowhere", passw) END; IF usr = "" THEN COPY("anonymous", usr) END ELSIF passw = "" THEN NetSystem.GetPassword("ftp", host, usr, passw) END END GetLogin; PROCEDURE OpenS(server, user, passwd: ARRAY OF CHAR; port: INTEGER; VAR S: Session); BEGIN NEW(S); S.dataC := NIL; COPY(server, S.host); S.dataPort := -1; COPY(user, S.usr); COPY(passwd, S.passw); GetLogin(server, S.usr, S.passw); IF NetSystem.hostIP = NetSystem.anyIP THEN S.C := NIL; S.reply := "invalid NetSystem.hostIP"; S.res := Failed; RETURN END; S.system := Unknown; S.reply := "connecting failed"; S.portIPAddress := ""; S.ack := TRUE; IF (S.usr = "") OR (S.passw = "") THEN S.res := Failed; S.reply := "no password or username specified"; RETURN END; IF Connect(S.C, port, server) THEN ReadResponse(S, S.reply); IF (S.status >= 200) & (S.status < 300) THEN line := "USER "; Strings.Append(line, S.usr); SendCmd(S, line); ReadResponse(S, line); IF (S.status = 330) OR (S.status = 331) THEN line := "PASS "; Strings.Append(line, S.passw); SendCmd(S, line); ReadResponse(S, line); IF (S.status = 230) OR (S.status= 330) THEN S.res := Done ELSE S.res := WrongPassword; COPY(line, S.reply); Close2(S) END ELSIF S.status # 230 THEN S.res := WrongUser; COPY(line, S.reply); Close2(S) ELSE S.res := Done END; IF S.res # Done THEN NetSystem.DelPassword("ftp", S.usr, server) END ELSE S.res := NotReady; Close2(S) END ELSE S.res := NotConnected END; IF S.res = Done THEN SendCmd(S, "TYPE I"); ReadResponse(S, line); IF S.status # 200 THEN (* should not happen *) END; QuerySystem(S); S.res := Done END END OpenS; PROCEDURE ChangeDirS(S: Session; newDir: ARRAY OF CHAR); BEGIN S.reply := "CWD "; Strings.Append(S.reply, newDir); SendCmd(S, S.reply); ReadResponse(S, S.reply); IF S.status = 250 THEN S.res := Done ELSE S.res := Failed END END ChangeDirS; PROCEDURE SetDataPort(S: Session); VAR str: ARRAY 4 OF CHAR; p0, p1: LONGINT; i, j, k: INTEGER; done: BOOLEAN; BEGIN SendCmd(S, "PASV"); ReadResponse(S, line); IF (S.status >= 200) & (S.status < 300) THEN S.res := Interrupted; i := 0; WHILE (line[i] # 0X) & ~Strings.IsDigit(line[i]) DO INC(i) END; j := 0; k := 0; WHILE (line[i] # 0X) & (k < 4) DO 				IF line[i] # "," THEN S.portIPAddress[j] := line[i] ELSE S.portIPAddress[j] := "."; INC(k) END; INC(i); INC(j) END; IF (j <= 0) & (k < 4) THEN RETURN END; S.portIPAddress[j-1] := 0X; NetSystem.ToHost(S.portIPAddress, S.dataIP, done); IF ~done THEN RETURN END; WHILE (line[i] # 0X) & ((line[i] <= " ") OR (line[i] = ",")) DO INC(i) END; Strings.StrToIntPos(line, p0, i); WHILE (line[i] # 0X) & ((line[i] <= " ") OR (line[i] = ",")) DO INC(i) END; Strings.StrToIntPos(line, p1, i); S.dataPort := SHORT(256*p0+p1); S.res := Done ELSE S.dataIP := NetSystem.anyIP; S.dataPort := dataPort; REPEAT IF S.dataPort >= MaxDataPort THEN S.dataPort := MinDataPort END; INC(S.dataPort); (* not 100% safe *) NetSystem.OpenConnection(S.dataC, S.dataPort, NetSystem.anyIP, NetSystem.anyport, S. res) UNTIL (S.res = NetSystem.done) OR UserBreak; IF S.res = NetSystem.done THEN dataPort := S.dataPort; S.res := Failed; NetSystem.ToNum(NetSystem.hostIP, S.portIPAddress); i := 0; WHILE S.portIPAddress[i] # 0X DO IF S.portIPAddress[i] = "." THEN S.portIPAddress[i] := "," END; INC(i) END; Strings.AppendCh(S.portIPAddress, ","); Strings.IntToStr(S.dataPort DIV 256, str); Strings.Append(S.portIPAddress, str); Strings.AppendCh(S.portIPAddress, ","); Strings.IntToStr(S.dataPort MOD 256, str); Strings.Append(S.portIPAddress, str); line := "PORT "; Strings.Append(line, S.portIPAddress); SendCmd(S, line) ELSE Disconnect(S.dataC); S.dataC := NIL; S.reply := "Interrupted"; S.res := Interrupted END END END SetDataPort; PROCEDURE WaitDataCon(S: Session): NetSystem.Connection; VAR C1: NetSystem.Connection; time: LONGINT; BEGIN IF S.dataIP = NetSystem.anyIP THEN time := Input.Time; REPEAT UNTIL NetSystem.Requested(S.dataC) OR ((Input.Time-time) > timeOut) OR UserBreak; IF NetSystem.Requested(S.dataC) THEN NetSystem.Accept(S.dataC, C1, S.res); Disconnect(S.dataC); IF S.res = NetSystem.done THEN S.res := Done; RETURN C1 				ELSE S.res := Failed END ELSIF (Input.Time-time) > timeOut THEN S.res := TimedOut ELSE S.res := Interrupted END; Disconnect(S.dataC) ELSE NetSystem.OpenConnection(C1, NetSystem.anyport, S.dataIP, S.dataPort, S.res); IF S.res = Done THEN RETURN C1 END END; RETURN NIL END WaitDataCon; PROCEDURE EnumDir(S: Session; enum: EnumProc); VAR C: NetSystem.Connection; len: LONGINT; BEGIN S.reply := ""; SetDataPort(S); C := NIL; IF S.res = Interrupted THEN RETURN END; IF S.dataIP = NetSystem.anyIP THEN ReadResponse(S, line) ELSE C := WaitDataCon(S); IF S.res = Done THEN S.status := 200 END END; IF S.status = 200 THEN IF S.system = VMS THEN SendCmd(S, "NLST") ELSE SendCmd(S, "LIST") END; ReadResponse(S, S.reply); IF (S.status = 150) OR (S.status = 250) THEN IF S.dataIP = NetSystem.anyIP THEN C := WaitDataCon(S) END; IF S.res = Done THEN S.res := Done; len := NetSystem.Available(C); WHILE ((len > 0) OR Connected(C, NetSystem.in)) & ~UserBreak DO 						IF len > 0 THEN NetSystem.ReadString(C, line); enum(line) END; len := NetSystem.Available(C) END END; Disconnect(C);	(* before ReadResponse *) ReadResponse(S, S.reply) ELSE S.res := Failed END END; IF C # NIL THEN Disconnect(C) END; IF S.dataC # NIL THEN Disconnect(S.dataC) END END EnumDir; PROCEDURE GetCurDir(S: Session; VAR curdir: ARRAY OF CHAR); VAR i, j: INTEGER; BEGIN SendCmd(S, "PWD"); ReadResponse(S, S.reply); IF S.status = 257 THEN IF S.system = VMS THEN COPY(S.reply, curdir); i := 0; WHILE curdir[i] > " " DO 					INC(i) END; curdir[i] := 0X ELSE i := 0; WHILE (S.reply[i] # 0X) & (S.reply[i] # 22X) DO 					INC(i) END; j := 0; IF S.reply[i] = 22X THEN INC(i); WHILE (S.reply[i] # 0X) & (S.reply[i] # 22X) DO 						curdir[j] := S.reply[i]; INC(j); INC(i) END END; curdir[j] := 0X END; S.res := Done ELSE COPY("", curdir); S.res := Failed END END GetCurDir; PROCEDURE MakeDirS(S: Session; newDir: ARRAY OF CHAR); BEGIN S.reply := "MKD "; Strings.Append(S.reply, newDir); SendCmd(S, S.reply); ReadResponse(S, S.reply); IF S.status = 257 THEN S.res := Done ELSE S.res := Failed END END MakeDirS; PROCEDURE RmDirS(S: Session; dir: ARRAY OF CHAR); BEGIN S.reply := "RMD "; Strings.Append(S.reply, dir); SendCmd(S, S.reply); ReadResponse(S, S.reply); IF S.status = 250 THEN S.res := Done ELSE S.res := Failed END END RmDirS; PROCEDURE DeleteFile(S: Session; remName: ARRAY OF CHAR); BEGIN S.reply := "DELE "; Strings.Append(S.reply, remName); SendCmd(S, S.reply); ReadResponse(S, S.reply); IF S.status = 250 THEN S.res := Done ELSE S.res := Failed END END DeleteFile; PROCEDURE ReadData(S: Session; C: NetSystem.Connection; VAR R: Files.Rider); VAR len, rlen: LONGINT; BEGIN len := NetSystem.Available(C); WHILE (len > 0) OR Connected(C, NetSystem.in) DO 			IF len > BufLen THEN rlen := BufLen ELSE rlen := len END; NetSystem.ReadBytes(C, 0, rlen, buffer); Files.WriteBytes(R, buffer, rlen); DEC(len, rlen); IF len <= 0 THEN IF UserBreak THEN RETURN END; len := NetSystem.Available(C) END END END ReadData; PROCEDURE GetF(S: Session; remName: ARRAY OF CHAR; VAR R: Files.Rider); VAR C: NetSystem.Connection; BEGIN S.reply := ""; SetDataPort(S); C := NIL; IF S.res = Interrupted THEN RETURN END; IF S.dataIP = NetSystem.anyIP THEN ReadResponse(S, line) ELSE C := WaitDataCon(S); IF S.res = Done THEN S.status := 200 END END; IF S.status = 200 THEN line := "RETR "; Strings.Append(line, remName); SendCmd(S, line); ReadResponse(S, line); COPY(line, S.reply); IF (S.status = 150) OR (S.status = 250) THEN IF S.dataIP = NetSystem.anyIP THEN C := WaitDataCon(S) END; IF S.res = Done THEN ReadData(S, C, R) 				END; Disconnect(C);	(* before ReadResponse *) ReadResponse(S, S.reply); IF S.res = Interrupted THEN ReadResponse(S, line) END; ELSE S.res := Failed END END; IF C # NIL THEN Disconnect(C) END; IF S.dataC # NIL THEN Disconnect(S.dataC) END END GetF; PROCEDURE GetFile(S: Session; remName, locName: ARRAY OF CHAR); VAR F: Files.File; R: Files.Rider; BEGIN F := Files.New(locName); IF F # NIL THEN Files.Set(R, F, 0); GetF(S, remName, R); IF (S.status >= 200) & (S.status < 300) THEN Files.Register(F); IF log # NIL THEN Texts.WriteString(W, "Received: "); Texts.WriteString(W, locName); Texts.WriteString(W, " "); Texts.WriteInt(W, Files.Length(F), 1); Texts.WriteString(W, " bytes"); Texts.WriteLn(W); Texts.Append(log, W.buf) END ELSE Texts.WriteLn(W)	(* error message on new line *) END ELSE S.reply := "Bad file name" END END GetFile; PROCEDURE WriteData(C: NetSystem.Connection; VAR R: Files.Rider); BEGIN Files.ReadBytes(R, buffer, BufLen); WHILE ~R.eof DO 			NetSystem.WriteBytes(C, 0, BufLen, buffer); Files.ReadBytes(R, buffer, BufLen) END; IF R.res > 0 THEN NetSystem.WriteBytes(C, 0, BufLen-R.res, buffer) END END WriteData; PROCEDURE PutFile(S: Session; remName, locName: ARRAY OF CHAR); VAR C: NetSystem.Connection; F: Files.File; R: Files.Rider; BEGIN S.reply := ""; C := NIL; F := Files.Old(locName); IF F # NIL THEN SetDataPort(S); IF S.res = Interrupted THEN RETURN END; IF S.dataIP = NetSystem.anyIP THEN ReadResponse(S, line) ELSE C := WaitDataCon(S); IF S.res = Done THEN S.status := 200 END END; IF S.status = 200 THEN line := "STOR "; Strings.Append(line, remName); SendCmd(S, line); ReadResponse(S, S.reply); IF (S.status = 150) OR (S.status = 250) THEN IF S.dataIP = NetSystem.anyIP THEN C := WaitDataCon(S) END; IF S.res = Done THEN Files.Set(R, F, 0); WriteData(C, R) 					END; Disconnect(C);	(* before ReadResponse *) ReadResponse(S, S.reply) ELSE S.res := Failed END END ELSE COPY(locName, S.reply); Strings.Append(S.reply, " not found"); S.res := LocFileNotFound END; IF C # NIL THEN Disconnect(C) END; IF S.dataC # NIL THEN Disconnect(S.dataC) END END PutFile; PROCEDURE ReadText(C: NetSystem.Connection; VAR W: Texts.Writer); VAR len, rlen, i: LONGINT; ch: CHAR; exit: BOOLEAN; BEGIN len := NetSystem.Available(C); exit := FALSE; WHILE (len > 0) OR Connected(C, NetSystem.in) DO 			IF len > (BufLen-2) THEN rlen := BufLen-2 ELSE rlen := len END; NetSystem.ReadBytes(C, 0, rlen, buffer); i := 0; WHILE i < rlen DO 				ch := buffer[i]; IF ch = Strings.CR THEN (* ignore CR *) ELSIF ch = Strings.LF THEN Texts.WriteLn(W) ELSE ch := Strings.ISOToOberon[ORD(ch)]; Texts.Write(W, ch) END; INC(i) END; DEC(len, rlen); IF len <= 0 THEN len := NetSystem.Available(C) END END END ReadText; PROCEDURE GetText(S: Session; remName: ARRAY OF CHAR; VAR W: Texts.Writer); VAR C: NetSystem.Connection; BEGIN S.reply := ""; C := NIL; SendCmd(S, "TYPE A"); ReadResponse(S, line); SetDataPort(S); IF S.res = Interrupted THEN SendCmd(S, "TYPE I"); ReadResponse(S, line); RETURN END; IF S.dataIP = NetSystem.anyIP THEN ReadResponse(S, line) ELSE C := WaitDataCon(S); IF S.res = Done THEN S.status := 200 END END; IF S.status = 200 THEN line := "RETR "; Strings.Append(line, remName); SendCmd(S, line); ReadResponse(S, line); COPY(line, S.reply); IF (S.status = 150) OR (S.status = 250) THEN IF S.dataIP = NetSystem.anyIP THEN C := WaitDataCon(S) END; IF S.res = Done THEN ReadText(C, W) 				END; Disconnect(C);	(* before ReadResponse *) ReadResponse(S, S.reply); IF S.res = Interrupted THEN ReadResponse(S, line) END ELSE S.res := Failed END END; IF C # NIL THEN Disconnect(C) END; IF S.dataC # NIL THEN Disconnect(S.dataC) END; SendCmd(S, "TYPE I"); ReadResponse(S, line) END GetText; PROCEDURE WriteText(C: NetSystem.Connection; T: Texts.Text); VAR R: Texts.Reader; ch: CHAR; BEGIN Texts.OpenReader(R, T, 0); Texts.Read(R, ch); WHILE ~R.eot DO 			IF R.lib IS Fonts.Font THEN IF ch = Strings.CR THEN NetSystem.WriteBytes(C, 0, 2, Strings.CRLF) ELSIF ch # Strings.LF THEN ch := Strings.OberonToISO[ORD(ch)]; NetSystem.Write(C, ch) END END; Texts.Read(R, ch) END END WriteText; PROCEDURE PutText(S: Session; remName: ARRAY OF CHAR; text: Texts.Text); VAR C: NetSystem.Connection; BEGIN S.reply := ""; C := NIL; SendCmd(S, "TYPE A"); ReadResponse(S, line); IF (S.status < 200) OR (S.status >= 300) THEN RETURN END; SetDataPort(S); IF S.res = Interrupted THEN SendCmd(S, "TYPE I"); ReadResponse(S, line); RETURN END; IF S.dataIP = NetSystem.anyIP THEN ReadResponse(S, line) ELSE C := WaitDataCon(S); IF S.res = Done THEN S.status := 200 END END; IF S.status = 200 THEN line := "STOR "; Strings.Append(line, remName); SendCmd(S, line); ReadResponse(S, S.reply); IF (S.status = 150) OR (S.status = 250) THEN IF S.dataIP = NetSystem.anyIP THEN C := WaitDataCon(S) END; IF S.res = Done THEN WriteText(C, text) END; Disconnect(C);	(* before ReadResponse *) ReadResponse(S, S.reply) ELSE S.res := Failed END END; IF C # NIL THEN Disconnect(C) END; IF S.dataC # NIL THEN Disconnect(S.dataC) END; SendCmd(S, "TYPE I"); ReadResponse(S, line) END PutText; PROCEDURE ShowRes; BEGIN Texts.WriteString(W, S.reply); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END ShowRes; PROCEDURE OpenScanner(VAR S: Texts.Scanner); VAR beg, end, time: LONGINT; text: Texts.Text; BEGIN Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S); IF (S.class = Texts.Char) & (S.c = "^") THEN time := -1; text := NIL; Oberon.GetSelection(text, beg, end, time); IF (text # NIL) & (time >= 0) THEN Texts.OpenScanner(S, text, beg); Texts.Scan(S) END END END OpenScanner; PROCEDURE SplitFTPAdr(VAR url, host, path, user, passwd: ARRAY OF CHAR; VAR type: CHAR; VAR port: INTEGER): BOOLEAN; VAR i, j, l: LONGINT; service: ARRAY 8 OF CHAR; PROCEDURE Blanks; BEGIN WHILE (url[i] # 0X) & (url[i] <= " ") DO 				INC(i) END END Blanks; BEGIN type := 0X; port := DefConPort; COPY("", user); COPY("", passwd); i := 0; Blanks; FOR j := 0 TO 5 DO service[j] := url[i+j] END; service[6] := 0X; IF Strings.CAPPrefix("ftp://", service) THEN INC(i, 6) END; (* look ahead for @ *) j := i; 		WHILE (url[j] # 0X) & (url[j] # "@") & (url[j] # "/") DO 			INC(j) END; IF url[j] = "@" THEN (* get user *) l := LEN(user)-1; j := 0; WHILE (url[i] # 0X) & (url[i] # ":") & (url[i] # "@") DO 				IF (j < l) THEN user[j] := url[i]; INC(j) END; INC(i) END; user[j] := 0X; DEC(j); WHILE (j >= 0) & (user[j] <= " ") DO 				user[j] := 0X; DEC(j) END; IF url[i] = ":" THEN (* get password *) l := LEN(passwd); INC(i); Blanks; j := 0; WHILE (url[i] # 0X) & (url[i] # "@") DO 					IF j < l THEN passwd[j] := url[i]; INC(j) END; INC(i) END; passwd[j] := 0X; DEC(j); WHILE (j >= 0) & (passwd[j] <= " ") DO 					passwd[j] := 0X; DEC(j) END END; INC(i); Blanks END; (* get host *) l := LEN(host); j := 0; WHILE (url[i] # 0X) & (url[i] # ":") & (url[i] # "/") DO 			IF j < l THEN host[j] := url[i]; INC(j) END; INC(i) END; host[j] := 0X; DEC(j); WHILE (j >= 0) & (host[j] <= " ") DO 			host[j] := 0X; DEC(j) END; IF url[i] = ":" THEN port := 0; INC(i); WHILE (url[i] # "/") & (url[i] # 0X) DO 				IF Strings.IsDigit(url[i]) THEN port := port*10+ORD(url[i])-ORD("0") END; INC(i) END; IF port <= 0 THEN port := DefConPort END END; (* get path *) l := LEN(path); j := 0; IF url[i] # 0X THEN path[j] := url[i]; INC(j); INC(i); IF url[i] = "~" THEN j := 0 END END; WHILE (url[i] # 0X) & (url[i] # ";") DO 			IF j < l THEN path[j] := url[i]; INC(j) END; INC(i) END; path[j] := 0X; DEC(j); WHILE (j >= 0) & (path[j] <= " ") DO 			path[j] := 0X; DEC(j) END; IF url[i] = ";" THEN INC(i); Blanks; IF CAP(url[i]) # "T" THEN type := CAP(url[i]) ELSE WHILE (url[i] # 0X) & (url[i] # "=") DO 					INC(i) END; IF url[i] = "=" THEN INC(i); Blanks; type := CAP(url[i]) ELSE type := "T" END END END; RETURN (host # "") & (port > 0) END SplitFTPAdr; (** FTP.Open (server | "^") 		Open an ftp connection to server using username and password set with FTP.SetUser. *) PROCEDURE Open*; VAR Sc: Texts.Scanner; host, path, user, passwd: ARRAY 64 OF CHAR; port: INTEGER; type: CHAR; BEGIN IF S = NIL THEN OpenScanner(Sc); IF Sc.class IN {Texts.Name, Texts.String} THEN IF SplitFTPAdr(Sc.s, host, path, user, passwd, type, port) THEN OpenS(host, user, passwd, port, S); ShowRes; IF S.res # Done THEN S := NIL END END END ELSE Texts.WriteString(W, "already connected"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END END Open; PROCEDURE Con: BOOLEAN; BEGIN IF S = NIL THEN Texts.WriteString(W, "not connected"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); RETURN FALSE ELSE RETURN TRUE END END Con; (** FTP.Close 		Close an previously opened FTP connection. *) PROCEDURE Close*; BEGIN IF Con THEN CloseS(S); ShowRes; IF S.res = Done THEN S := NIL END END END Close; (** FTP.ChangeDir (newdir | "^") 		Change the current directory on the FTP server to newdir. *) PROCEDURE ChangeDir*; VAR Sc: Texts.Scanner; BEGIN IF Con THEN OpenScanner(Sc); IF Sc.class IN {Texts.Name, Texts.String} THEN ChangeDirS(S, Sc.s); ShowRes END END END ChangeDir; PROCEDURE *ShowEntry(entry: ARRAY OF CHAR); BEGIN Texts.WriteString(W, entry); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END ShowEntry; (** FTP.Dir 		List the contents of the current directory on the FTP server. *) PROCEDURE Dir*; BEGIN IF Con THEN EnumDir(S, ShowEntry); ShowRes END END Dir; PROCEDURE *ShowCompactEntry(entry: ARRAY OF CHAR); VAR i: INTEGER; BEGIN i := 0; WHILE entry[i] # 0X DO 			INC(i) END; IF i > 0 THEN DEC(i) ELSE RETURN END; WHILE (i > 0) & (entry[i] > " ") DO 			DEC(i) END; IF entry[i] <= " " THEN INC(i) END; WHILE entry[i] # 0X DO 			INC(col); Texts.Write(W, entry[i]); INC(i) END; INC(col); IF col >= 50 THEN Texts.WriteLn(W); col := 0 ELSE INC(col); Texts.Write(W, Tab) END; Texts.Append(Oberon.Log, W.buf) END ShowCompactEntry; (** FTP.CompactDir 		List the contents of the current directory on the FTP server in a more 		compact form. *) PROCEDURE CompactDir*; BEGIN IF Con THEN col := 0; EnumDir(S, ShowCompactEntry); IF col > 0 THEN Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END; ShowRes END END CompactDir; (** FTP.CurDir 		Display the current path on the FTP server *) PROCEDURE CurDir*; VAR curdir: ARRAY 256 OF CHAR; BEGIN IF Con THEN GetCurDir(S, curdir); ShowRes END END CurDir; (** FTP.MakeDir (server | "^") 		Create a new directory. *) PROCEDURE MakeDir*; VAR Sc: Texts.Scanner; BEGIN IF Con THEN OpenScanner(Sc); IF Sc.class IN {Texts.Name, Texts.String} THEN MakeDirS(S, Sc.s); ShowRes END END END MakeDir; (** FTP.RmDir (server | "^") 		Remove an existing directory. *) PROCEDURE RmDir*; VAR Sc: Texts.Scanner; BEGIN IF Con THEN OpenScanner(Sc); IF Sc.class IN {Texts.Name, Texts.String} THEN RmDirS(S, Sc.s); ShowRes END END END RmDir; (** FTP.DeleteFiles ({remname} | "^") 		Delete the files remname on the FTP server. *) PROCEDURE DeleteFiles*; VAR Sc: Texts.Scanner; beg, end, time, pos: LONGINT; text: Texts.Text; BEGIN IF Con THEN end := Oberon.Par.text.len; Texts.OpenScanner(Sc, Oberon.Par.text, Oberon.Par.pos); pos := Texts.Pos(Sc); Texts.Scan(Sc); IF (Sc.class = Texts.Char) & (Sc.c = "^") THEN time := -1; text := NIL; Oberon.GetSelection(text, beg, end, time); IF (text # NIL) & (time >= 0) THEN Texts.OpenScanner(Sc, text, beg); pos := Texts.Pos(Sc); Texts.Scan(Sc) ELSE end := Oberon.Par.text.len END END; Texts.WriteString(W, "FTP.DeleteFile"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); WHILE (Sc.class IN {Texts.Name, Texts.String}) & (pos < end) & (S.res = Done) DO 				Texts.Write(W, Tab); Texts.WriteString(W, Sc.s); Texts.Write(W, Tab); Texts.Append(Oberon.Log, W.buf); DeleteFile(S, Sc.s); ShowRes; pos := Texts.Pos(Sc); Texts.Scan(Sc); Oberon.Collect END END END DeleteFiles; PROCEDURE ScanPair(VAR S: Texts.Scanner; VAR name1, name2: ARRAY OF CHAR): BOOLEAN; BEGIN (* while loop from pieter *) Oberon.Collect; WHILE ~(S.class IN {Texts.Name, Texts.String}) & ((S.class # Texts.Char) OR (S.c # "~")) & ~S.eot DO 			Texts.Scan(S) END; IF S.class IN {Texts.Name, Texts.String} THEN COPY(S.s, name1); Texts.Scan(S); IF (S.class = Texts.Char) & (S.c = "=") THEN Texts.Scan(S); IF (S.class = Texts.Char) & (S.c = ">") THEN Texts.Scan(S); IF S.class IN {Texts.Name, Texts.String} THEN COPY(S.s, name2); Texts.Scan(S); RETURN TRUE END END ELSE COPY(name1, name2); RETURN TRUE END END; RETURN FALSE END ScanPair; (** FTP.GetFiles ({remname "=>" locname} | "^") 		Get files remname from the FTP server and store them as locname. *) PROCEDURE GetFiles*; VAR Sc: Texts.Scanner; loc, rem: ARRAY LEN(Sc.s) OF CHAR; BEGIN IF Con THEN OpenScanner(Sc); Texts.WriteString(W, "FTP.GetFiles"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); WHILE ScanPair(Sc, rem, loc) & (S.res = Done) DO 				Texts.Write(W, Tab); Texts.WriteString(W, rem); Texts.WriteLn(W); (* ple, 2004-03-10 *) Texts.WriteString(W, " => "); Texts.WriteString(W, loc); (* Texts.Write(W, Tab); *) Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); GetFile(S, rem, loc); ShowRes END END END GetFiles; (** FTP.GetTexts ({remname "=>" locname} | "^") 		Get text-files remname from the FTP server and store them as locname. *) PROCEDURE GetTexts*; VAR Sc: Texts.Scanner; loc, rem: ARRAY LEN(Sc.s) OF CHAR; T: Texts.Text; F: Files.File; len: LONGINT; Wr: Texts.Writer; BEGIN IF Con THEN OpenScanner(Sc); Texts.WriteString(W, "FTP.GetTexts"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); WHILE ScanPair(Sc, rem, loc) & (S.res = Done) DO 				Texts.Write(W, Tab); Texts.WriteString(W, rem); Texts.WriteLn(W); Texts.WriteString(W, " => "); Texts.WriteString(W, loc); (* Texts.Write(W, Tab); *) Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); Texts.OpenWriter(Wr); GetText(S, rem, Wr); NEW(T); Texts.Open(T, ""); Texts.Append(T, Wr.buf); IF (S.status >= 200) & (S.status < 300) THEN F := Files.New(loc); IF F # NIL THEN Texts.Store(T, F, 0, len); Files.Register(F); IF log # NIL THEN Texts.WriteString(W, "Received: "); Texts.WriteString(W, loc); Texts.WriteString(W, " "); Texts.WriteInt(W, Files.Length(F), 1); Texts.WriteString(W, " bytes"); Texts.WriteLn(W); Texts.Append(log, W.buf) END ELSE S.reply := "Bad file name" END ELSE Texts.WriteLn(W)	(* error message on new line *) END; ShowRes END END END GetTexts; (** FTP.PutFiles ({locname "=>" remname} | "^") 		Put files locname as remname on the FTP server. *) PROCEDURE PutFiles*; VAR Sc: Texts.Scanner; loc, rem: ARRAY LEN(Sc.s) OF CHAR; BEGIN IF Con THEN OpenScanner(Sc); Texts.WriteString(W, "FTP.PutFiles"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); WHILE ScanPair(Sc, loc, rem) & (S.res = Done) DO 				Texts.Write(W, Tab); Texts.WriteString(W, loc); Texts.WriteLn(W); Texts.WriteString(W, " => "); Texts.WriteString(W, rem); (* Texts.Write(W, Tab); *) Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); PutFile(S, rem, loc); ShowRes END END END PutFiles; (** FTP.PutTexts ({locname "=>" remname} | "^") 		Put text-files locname as remname on the FTP server. *) PROCEDURE PutTexts*; VAR Sc: Texts.Scanner; loc, rem: ARRAY LEN(Sc.s) OF CHAR; text: Texts.Text; BEGIN IF Con THEN OpenScanner(Sc); Texts.WriteString(W, "FTP.PutTexts"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); WHILE ScanPair(Sc, loc, rem) & (S.res = Done) DO 				Texts.Write(W, Tab); Texts.WriteString(W, loc); Texts.WriteLn(W); Texts.WriteString(W, " => "); Texts.WriteString(W, rem); (* Texts.Write(W, Tab); *) Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); NEW(text); Texts.Open(text, loc); PutText(S, rem, text); ShowRes END END END PutTexts; (** Open a separate log text for FTP. *) PROCEDURE OpenLog*; BEGIN IF (log = Oberon.Log) OR (log = NIL) THEN NEW(log); Texts.Open(log, "") END; Oberon.OpenText("FTP.Log", log, Display.Width DIV 8 * 3, Display.Height DIV 3) END OpenLog; BEGIN S := NIL; log := NIL; Texts.OpenWriter(W); timeOut := 5*60*Input.TimeUnit; dataPort := MinDataPort END FTP. System.Free FTP ~ Configuration.DoCommands FTP.Open muller@ice ~ FTP.ChangeDir "~muller/ftp.inf/pub/ETHOberon/Native/Update/Alpha/" FTP.PutFiles Oberon0.Dsk=>Temp.Dsk ~ FTP.PutFiles Temp.Dsk ~ FTP.Close ~ System.Directory *.Dsk\d System.CopyFiles Oberon0.Dsk => Rfs:Temp.Dsk ~

title: Oberon/ETH Oberon/FTP.Mod


text:
User:Roastedpepper

Hi. I'm roastedpepper. I edit things sometimes.

title: User:Roastedpepper


text:
User:Abraham8

hii.. i am abraham and i a writer from ij cannon site,,

title: User:Abraham8


text:
High School Biology/Meiosis

Mitosis,a process whereby one cell(mother cell)gives rise to two cells(daughter cell's)with the identical genetic make-up as the original(mother cell).This is possible due to a process called DNA replication,where an identical copy of the DNA material is made just before the cell starts to divide.Once DNA replication has occurred,each chromosome appears as two chromotids,which are held together at the centromere.Mitosis takes place in the body cell's (somatic cell's)of both plants and animals.The process of mitosis can be divided into 4phases which are continues.The cell cycle refers to a series of phases through which a cell progresses when it is actively dividing. Phase 0 is the Interphase,it is the longest phase during which growth occurrs

title: High School Biology/Meiosis


text:
History of wireless telegraphy and broadcasting in Australia/Topical/Biographies/Robert John Beatson

Robert John Beatson
A comprehensive biography of Robert John "Bob" Beatson has not yet been prepared for this Wikibook, however the following resources have been assembled in preparation:

 * Research - Robert John Beatson - Summary of research to date

 * Transcriptions and Notes - Robert John Beatson - 40 transcriptions as at 5 April 2021

 * Photos, QSL cards and other graphics - Robert John Beatson - Nothing uploaded as yet, but many relevant QSLs held

 * Incubator of Wikipedia Article on Robert John Beatson - Coming real soon now!

Key internet links:

Maxwell Hull, VK3ZS, Federal Historical Section WIA: biography "Walter Francis Maxwell Howden" in "Amateur Radio" of October 1983

Neville Williams' biography in "When I think Back . . ." section of Electronics Australia of December 1996

Tribute page by Andrew (current 3BQ callsign holder) "A3BQ (VK3BQ) a Very Historic callsign." (includes several other links)

Wonderful 41 minute recording of an oral history interview with Max "Maxwell Howden interviewed by Mel Pratt for the Mel Pratt collection"

Pending further progress on the foregoing, the following lovely article from Melbourne's Table Talk, summarising Max's life to 1927, and accompanied by a wonderful caricature touches briefly on how much Max contributed to the development of wireless in Australia in the 1920s "Prominent Personalities."


text:
History of wireless telegraphy and broadcasting in Australia/Topical/Biographies/Robert John Beatson/Notes

1925 06
Bob already involved in Wooloowin Radio Club, designated to lead one side of a debate the following month "CLUB ACTIVITIES. . . . WOOLOOWIN RADIO CLUB, BRISBANE. Another very satisfactory meeting was held at the club's headquarters on 25th instant. Following on recent correspondence from the Ipswich Radio Society, it is expected that the members of the Wooloowin Club will visit that centre on Saturday, July 4, to make the acquaintance of the Ipswich enthusiasts. Matters in connection with the issue of a club-badge are well in hand, and the technical committee announced that it hoped to put 4WN on the air in a fortnight's time. A social evening to augment the club funds has been approved for Thursday evening, July 16, and Messrs. Jiear, Love, and Anderson have been appointed a committee to further the arrangements. During the evening Mr. J. P. Love gave an excellent discourse on 'B Batteries,' and subsequently a keen discussion took place. Mr. Love was accorded a hearty vote of thanks. On Thursday, July 9, six members of the club, under the leadership of Messrs. Ryan and Beatson, will meet in debate. Thursday, July 2, will be an informal night for general wireless discussion. Inquiries from friends and intending members should be addressed to the hon. secretary (Mr. H. A. Jiear), Lisson Grove, Wooloowin."

1925 07
As previous, the debate takes place "CLUB ACTIVITIES. . . . WOOLOOWIN RADIO CLUB. The usual Thursday meeting of the Wooloowin Radio Club attracted a large attendance of members. One new member was enrolled. Correspondence was received from the Ipswich Radio Society, and at that club's request the visit of the Wooloowin Club to Ipswich was postponed till the return of their president; on July 23. The secretary announced that at the instance of the Wooloowin Radio Club and the Queensland Wireless Institute arrangements had been made to stage a big 'all club night,' in August, when the wireless film, 'The Wizardry of Wireless,' and associated attractions will be screened. The Wooloowin Club is to hold a social and dance on July 23, and invitations are being forwarded to all nearby radio clubs. Arrangements are well in hand for the annual meeting of the club, to be held early in August, and radio enthusiasts of the district are cordially invited to attend. This year the Wooloowin Radio Club will again stage a cup exhibition at the forthcoming Windsor show. It is hoped that this event will increase the interest of the Windsor townspeople in their district club, which by the show date will be of more than twelve months standing. The remainder of the evening was devoted to a keen debate between teams consisting of Messrs. C. Ryan, V. Homan, and J. Faber, R. Beatson, and H. Stephenson. Next Thursday an examination evening will be held. All inquiries on cup matters should be addressed to the secretary. Mr. H. A. Jiear, Lisson Grove, Wooloowin."

As previous, another report in the Brisbane Daily Standard includes the great Vern Kenna in the debating team, and notes that Beatson's team lost "WOOLOOWIN RADIO CLUB. The monthly business meeting of the Wooloowin Radio Club was held last Thursday night. Among the correspondence received was a letter from the Ipswich Radio Society, with reference to the proposed visit of this club, stating that it would not be suitable to receive members on the date mentioned on account of the absence of the president. It was decided to postpone the visit till the return of their president on July 23. The secretary reported that the Wireless Institute at the instance of the Wooloowin Club had decided to hold an all clubs night in August next, when the wireless film, 'The Wizardry of Wireless,' and supporting attractions would be shown. The social committee reported that arrangements had been made to hold a social and dance in the Guild Hall, Wooloowin, on July 23. Invitations will be forwarded to all nearby radio clubs. Arrangements have been made to stage an exhibit at the forthcoming Windsor Show, the same as last year, by which it is hoped the interest of the people of the district in this club will be aroused. The annual meeting will take place early in August. One new member was enrolled. The remainder of the evening was devoted to a debate between teams, consisting of Messrs. C. Ryan, V. Kenna, B. Homan, and W. Faber, R. Beatson, and H. Stephenson, which was won by the former by a substantial majority."

1929 01
In review of 1928 amateur radio activities by Australian Radio Transmitters' League, 4BB acknowledged for 28 MHz activities "Amateur Wireless. Transmitters' League Review of 1928 Activities. In a review of the activities of the Australian Radio Transmitters' League in 1928 specially written for the radio columns of 'The Telegraph,' Major Leo J. Feenaghty (Federal Secretary) refers to the amalgamation of the league with the Wireless Institute of Australia in an effort to bring about co-operation among all amateur transmitters and experimenters. Major Feenaghty writes:— The year was one of varied interests and activities for the Australian Radio Transmitters' League. At the beginning of 1928 there were two States which had inaugurated the league movement 'of, by, and for the amateur' — namely, Queensland (ever pioneers in advancement) and New South Wales. Before Father Time had spun his wheel more than a few rounds the Victorians joined in, and later Western Australia threw in its lot with the league. With great foresight the Western Australians named their league the A.R.T.L. (Western Australian division), and within a few weeks the Q.R.T.L., the N.S.W.R.T.L., and the V.R.T.L. became the A.R.T.L. and respective divisions. Thus four of the six radio districts had definitely thrown in their lot with the league movement. TRIBUTE TO QUEENSLAND. Following this move, Federal headquarters were established, and it is a tribute to Queensland that this State, by a unanimous vote, was selected as the first Federal headquarters of the league. Mr. M. M. O'Brien, the originator of the league idea, and president of the Queensland division, was selected as the first Federal president. Mr. O'Brien is the owner and operator of experimental station VK4MM. The training he received in the Australian Corps of Signallers, in which he holds the commission of lieutenant, stands him in good stead. Major Leo J. Feenaghty, of experimental station VK4LJ, was elected Federal secretary-treasurer, and Mr. C. J. Grant, B.A., B.Com., was made the third member. The closet co-operation was maintained among all divisions, and twice weekly the league H.O. station, VK4LJ, kept schedules with the Victorian and Western Australian divisions. On one notable occasion the Federal committee at VK4LJ controlled by radio a meeting of the Victorian division at VK3JR, contact being maintained for nearly three hours during which much urgent, and important business was transacted. The amendment of the wireless regulations caused great activity in the ranks of the A.R.T.L. and the requests of the league were incorporated in a most complete and comprehensive document which was presented to the Federal authorities. The membership of the Queensland division (then the Q.R.T.L.) at the beginning of 1928 was 28, and at the close of the year 40 transmitters were in the ranks, with three more awaiting admission. AMALGAMATION SCHEME. Realising that the needs of the transmitter could not be best served by two bodies the A.R.T.L. approached the Wireless Institute of Australia with a proposal for a total merger. To enable a full discussion of this proposal to be held the Federal secretary (Major Feenaghty) visited Melbourne to confer with W.I.A. headquarters. The conference was successful and a satisfactory scheme for amalgamation was drawn up. So far as Queensland is concerned the result will be that the A.R.T.L. will take control of A.R.T.L.-W.I.A. combine under the name of the Wireless Institute of Australia (Queensland division). Membership will be open to all transmitters and those holding equivalent qualifications, while all interested in the scientific side of the science of radio will be eligible for associate membership. Those who find fulfilment of their desires in listening to broadcasting only and are not keenly interested In the higher frequencies will be sufficiently catered for by the local radio clubs since the re-established institute is to be a scientific association essentially. 'THE Q.T.C.' The official organ of the league, 'The Q.T.C.,' which is published by the Queensland division under the editorship of Major Feenaghty, continues to thrive. Its mailing list covers every continent and 13 countries, while the list of foreign correspondents reads like the membership roll of the League of Nations. From India, Burmah, Czechoslovakia, Japan, the United States of America, England, and all over Australasia views and notes are received, all of which are incorporated in what may with all justification be called the most phenomenally successful amateur venture in Australia. The publication is the product of gratuitous amateur labour right throughout, and arrangements are now in hand to have it printed before long. NOTEWORTHY RECORDS. Several noteworthy records have been established by A.R.T.L. members on the 10 metre wave band, an A.R.T.L. man, Mr. S. C. Austin (Perth) being the first to work across Australia on this traffically high frequency when he established contact with Max B. Howden, of Melbourne. Several Queensland members have worked distant stations on this wave band, principally VK4BB, VK4AW, and VK4NW. A test on 85 metres was conducted in September, and the pennant winner for Australia was VK3WH owned and operated by the Traffic Manager of the Victorian Division. The Queensland Pennant was awarded to Arthur E. Walz (VK4AW). NEW WAVE BANDS. All members at present are experimenting on the new frequency bands allowed by the Washington Conference. Instead of using 32 metres as heretofore Australians now operate on 41-42 metres. Already America has been worked on the new band and further records are awaited. Any inquiries regarding the A.R.T.L. or the forthcoming amalgamation should be addressed to the Federal Secretary, Major Leo. J. Feenaghty, Desmond Chambers, Adelaide Street, Brisbane."

1929 07
4BB one of the four lecturers for the AOCP course run by the WIAQ "Wireless Institute. Course of Instruction. The Coming Conference. By 'LISTENER.' The Queensland division of the Wireless Institute of Australia has inaugurated a course of instruction for those desirous of sitting for the amateurs' transmitting license. Four members of the division — Messrs. M. M. O'Brien, A. E. Walz, R. J. Beatson, and C. H. Gold — are serving as lecturers. For the time being the classes are being conducted at the residence of Mr. W. A. Young, Granville Street, West End, on Monday evenings. Fourteen persons at present are attending the lectures, and several others have signified their intention of taking the course, which will cover the theory and practice of radio transmission, together with tuition in Morse code. It is anticipated that the course will extend over a period of 16 weeks. The lectures will be typed and copies will be given to each candidate as soon as possible after the lectures have been delivered. The typed copies will form a valuable addition to the amateur literature of Australia. These books will be issued to any country candidate at a fee. The division is reserving all rights in connection with these typed lectures. Each Tuesday evening station VK4CG is transmitting slow morse on 77 metres for the benefit of candidates. At the end of the course candidates will be advised whether the lecturers consider that they are competent enough to submit themselves for examination, and arrangements will be made with the Radio Inspector for the holding of the examination. If candidates desire to submit themselves for examination even though the lecturers hold the opinion that they are not quite up to the mark no obstacle will be placed in their way, and they will be included with others to go before, the Radio Inspector. THE ANNUAL CONFERENCE. Major L. J. Feenaghty, organising secretary of the annual conference of the Wireless Institute of Australia, which is to be held in Brisbane during September, says that the agenda paper, on which will appear many matters of the utmost importance to the amateurs of Australia, is nearing completion. Word had been received, that Tasmania will be unable to send a delegate, and therefore a Victorian representative has been asked to act as a proxy for the Tasmanian division of the institute. The delegates will be entertained at a round of social functions by the members of the Queensland division, a civic reception will be accorded to them, and they will be driven round the beauty spots of Brisbane during the several days they will be here. Everything, said Major Feenaghty, points to a most successful conference. It would be a unique conference, inasmuch that it would be the first occasion that one had been held by the Institute in Queensland. Members of the Queensland division were gratified that Brisbane had been chosen as the meeting place for this year. Some of the most prominent amateur transmitting men of the Commonwealth would be in attendance at the conference and the discussions promised to be of a most interesting nature."

1929 12
The recently renamed WIA (Qld) holds public meeting, 4BB is appointed publicity director "WIRELESS INSTITUTE. NEW SYSTEM OF GOVERNMENT. The Wireless Institute of Australia (Queensland Division) called a public meeting of those interested in wireless to further the interests of the institute, and a band of amateur wireless enthusiasts assembled in the State Service Union rooms, Elizabeth-street, last night. The president of the institute (Mr. M. O'Brien) was in the chair. The secretary (Mr. L. J. Feenaghty) said that the object of the meeting was to inaugurate a new system of government of the institute by a council and sections, to put into effect a more comprehensive set of rules governing the institute, and to elect members of the council and sectional representatives. Each section, he said, would be governed by a president and a secretary. He also mentioned that it was the intention of the institute to embark upon a publicity campaign to attract members and public interest. It was intended to hold lectures, meetings, &c. The meeting decided to initiate a country section. Pending consideration by that section, Mr. A. E. Walz (VK4AW) was elected to represent the country section on the council, pro tem. On the motions of Mr. W. Young and O. E. Alder, it was decided that, in order to encourage country members, 'This meeting takes a ballot of town members to reduce the fees of country members from 20/ to 15/,' and also 'That the council agrees to act as buying agent to purchase gear for country members at the best terms.' The new council was elected as follows:— President, Messrs. M. O'Brien (VK4MM); secretary, L. Feenaghty (VK4LJ); technical director, R. Browne (VK4RB); publicity director, R. Beatson (VK4BB); key section representative, W. Young (VK4WA); country section representative, A. E. Walz (VK4AW), pro tem.; and associate members' section representative, G. Payne. The selection of a representative for the 'phone section was postponed until the section met. In the key section Messrs. W. A. Young and G. Oxlade were appointed president and secretary respectively, and in the associate members' section Messrs. G. Payne and R. Rose were elected president and secretary pro tem, respectively. The various sections will meet monthly, the country fortnightly, and a general meeting will be held monthly."

1930 04
At WIAQ annual meeting, 4BB continues as publicity director "SPLENDID ZEAL. WIRELESS AMATEURS. AUSTRALIAN INSTITUTE. The outstanding feature of the annual meeting of the Queensland division of the Wireless Institute of Australia, held last night in the Public Service House rooms, was the enthusiasm of the members, and their desire to assist associates to a higher degree of efficiency. Several speakers asserted that Queensland amateurs had attained a standard which bore favourable comparison with those in other parts of the world. The annual report revealed a membership of 28 town members, two honorary members, 12 country members (including the first lady transmitter in Queensland, Miss D. Harris [sic, Harriss] Longreach), three junior members, and 41 associate members. Reference was made to the work of outstanding merit performed by the two honorary members, Messrs. Leighton Gibson (VK4AN), and Andrew Couper (VK4BW), who three years ago maintained communications between Southern and Northern Queensland, when floods had isolated the North. The sixth annual convention of the Wireless Institute of Australia was held in Brisbane in September, 1929, when business of a Federal nature was decided. During the year the rules of the division were amended to bring them into conformity with those of other divisions. Appreciative reference was made to the generosity of Mr. J. B. Chandler, who donated apparatus for the official station (VK4WI), at Wooloowin, and to Mr. J. H. Hills, of Philips' Lamps, for a similar donation. PRESENTATION OF TROPHIES. Trophies won during the year were presented by the president as follows: — VK4CG cup, for best all-round station, to Mr. R. J. Browne (VK4RB); VK4LJ cup, for 250 metre telephony, to Mr. T. W. Starkie (4NW); VK4PN cup, for 20 metre work, to Rev. R. J. Delbrldge (VK4RJ); Hutchinson trophy, for experimental work, to Messrs. W. A. Young (VK4WA) and C. H. Gold (VK4CG). ELECTION OF OFFICERS. The election of officers resulted: President, Mr. M. M. O'Brien (VK4MM); secretary and treasurer, Major L. J. Feenaghty (VK4LJ); assistant secretary, Mr. A. E. Walz (VK4AW); technical director, Mr. R. J. Browne (VK4RB); publicity director, Mr. R. J. Beatson (VK4BB); key and 'phone section's councillor, Mr, W. A. Young (VK3WA [sic, VK4WA]); country section, Mr. A. E. Walz (VK4AW); deputy chairman, Mr. W. A. Young (VK4WA) ; secretary of associate section, Mr. Les. Williams; honorary legal adviser, Mr. H. Walsh."

As previous, further detail including mention of 4BB coming second in 4PN Cup "RADIO. Wireless Institute. Telephony Transmissions Members' Schedules. The Wireless Institute of Australia (Queensland division) recently held its third annual meeting which was well attended by members and those interested. The presidential address was delivered by Mr. M. M. O'Brien, VK4MM, and he traversed the policy of the division, mentioning the outstanding events of the previous year. The report of the secretary showed that the division was in a flourishing condition there being 28 town members, 12 country members, three junior members, two honorary members, and 41 associate members. In the ranks of the country members is included Queensland's first lady transmitter — Miss D. Harriss, of Longreach. During the year the outstanding event was the sixth annual convention of the Wireless Institute of Australia held in Brisbane in September. This was the first time a convention was held in this State. It was gratifying to members to read the opinions of other divisions regarding the convention which they stated was the most successful yet held. As the Queensland divisions is the youngest recruit to the institute this is all the more pleasing. The amendment of the rules towards the end of last year provided for the government of the division being vested in a council and for the establishment of various sections, in which men interested in particular branches, of the science would congregate. The council government has had the effect of expediting business and the attendances at meetings have been extremely high. The officers elected for the ensuing year were: President, Mr. M. M. O'Brien (VK4MM); secretary and treasurer, Major Leo J. Feenaghty (VK4LJ); key and phone section councillor, Mr. W. A. Young (VK4WA); country section councillor, Mr. A. E. Walz ( VK4AW); technical director, Mr. R. J. Browne (VK4RB); publicity director, Mr. R. J. Beatson (VK4BB); associate member section, Mr. G. H. Payne; deputy chairman, Mr. W. A. Young (VK4WA). WINNERS OF TROPHIES. Opportunity was taken to present the trophies which were won during the year. The VK4CG Cup and blue pennant for the best all-round private experimental station in Queensland were awarded to Mr. R. J. Browne (VK4RB) who has done some noteworthy work, particularly in connection with high frequency transmission. Mr. Browne has made four contacts with the United States of America on 56000 KC (10 metres) (sic, 5 metres) this representing a record for the Commonwealth. The runnerup for this trophy was Mr. R. J. Beatson (VK4BB), who was presented with a red pennant. The VK4LJ Cup and blue pennant for the best 250 metre telephony station were awarded to Mr. T. W. Starkie (VK4NW) and Mr. C. R. Morris (VK4LW) was awarded a special blue pennant in view of the excellence of his transmission and the fact that considerable difficulty was experienced by the committee in deciding which of the two should receive the cup. The Hutchinson trophy for experimental work was awarded jointly to the stations owned by Messrs. Young (VK4WA) and Gold (VK4CG). The VK4PN Cup and Blue Pennant for Transmissions on 14 MC and higher were awarded to the Rev. R. J. R. Delbridge of Childers (VK4RJ) and a red pennant was awarded to Mr. R. J. Beatson as runnerup. TELEPHONY TRANSMISSIONS. In connection with telephony transmissions, it is interesting to note that the following schedule is adhered to by the leading amateur phone transmitters in Brisbane. VK4NW: Sundays, 9 a.m. to 10 a.m. and 8.15 p.m. to 10 p.m. Week nights, except Wednesday and Saturday, 7 p.m. to 8 p.m. Wave length 248 metres. VK4LW: Sundays, 9 a.m. to 10.30 a.m. and 10 p.m. to 11 p.m. Wave length 224 metres. VK4GO: 6.30 p.m. to 7.15 p.m. nightly. Sundays, 9.30 a.m. to 10.30 a.m. 6 p.m. to 7.30 p.m. Wave length, 227 metres. VK4PG: Sunday, 9 a.m. to 11 a.m. Wave length, 222 metres. VK4WN: Sunday, 9.30 a.m. to 11 a.m. Wave length, 240 metres. VK4JU and VK4BH occasionally transmit on the band between 200 and 250 metres. This schedule will be subject to re-vision when the new regulations are in force as a result of the establishment of a B class station in this district. Any inquiries, regarding the institute should be addressed to the secretary, Major Leo J. Feenaghty (VK4LJ), Box T1412, G.P.O., Brisbane."

1930 05
4BB reported silent, either preparing for shift to Maryborough or already there "Amateur Notes. . . . VK4PN, VK4MF, VK4AW, VK4JG, VK4GR, VK4CG, VK4BB, VK4WA, VK4RO, VK4RJ, VK4GA, Silent."

1930 07
4BB now in Maryborough, but no amateur transmissions "Amateur Notes. . . . VK4BB must be very busy at Maryborough. He has not been heard of for months."

1930 08
4BB returns to Brisbane for a week's leave "Amateur Notes. . . . VK4BB is in town for a week's holiday, and is looking very well indeed."

1930 11
4BB, now with the local Radiola agent (Wynne's Music?) consulted on interference to broadcast of Melbourne Cup "DISAPPOINTED LISTENERS. As announced, a description of the Melbourne Cup race was broadcast from Melbourne through all the 'A' class stations yesterday at 3.30 p.m. Probably nearly all of the receiving sets in Maryborough were tuned in. The Queensland station, 4QG, was heard perfectly and without static. The station switched over to 3LO, Melbourne, and again the description of the horses as they went through their preliminary gallops, and the announcements concerning owners and jockeys were all heard with clarity, punctuated by mild little chirps as neighbouring sets tuned in. As soon as the race started, however, fierce whistling caused by excessive oscillation debarred listeners from the pleasure of following the race. Mr. R. J. Beatson, of the Radiola Depot, spoken to yesterday, suggested that the trouble was caused by deliberate interference locally. The trouble lasted only whilst the race was in progress, even the chattering of the crowds at Flemington being heard before that. As soon as the description had ended the trouble, too, ceased. Many persons gathered at the Radiola Depot and other wireless houses were naturally disappointed as were those in private homes with sets. As so many persons unfamiliar with radio were listening in the trouble may give a wrong impression of the modern receiving set. If, as Mr. Beatson suggests, the trouble was deliberately caused, the matter should be investigated in the interests of those who pay their heavy license fees."

1931 05
Concurrent with the announcement that Wynne's Music has secured the AWA agency for Maryborough and district, 4BB appointed their wireless expert "NEW RADIOLA DEPOT. Mr. A. P. Wynne, the well-known music dealer, has been fortunate in securing the appointment as distributor in Maryborough and district for Amalgamated Wireless of Australasia Limited. The products of Amalgamated Wireless Ltd. are famous throughout the world and Mr. Wynne should find an excellent opening in this district for trade in the wireless sets and contrivances which he will stock. Mr. Wynne has a name that is at once coupled with everything musical and as wireless is recognised to be the coming means of hearing the best music possible he should have no regrets for having taken on the agency. Wireless opens up many avenues of entertainment and forms a most interesting and amusing hobby. Mr. Wynne's stocks of both electric and battery model wireless sets will arrive and may be heard at his music showrooms in Kent-street on Monday. In connection with the agency Mr. Wynne has secured the services of Mr. R. Beatson, a thoroughly competent wireless expert. Customers may therefore be assured of perfect installation and Radiola owners will also be pleased to know that they can depend on getting any service required. Besides the instruments, Mr. Wynne's comprehensive stocks will include batteries, valves, and all other requirements of wireless enthusiasts to get the best out of their sets."

1931 06
First recorded broadcast on Sunday morning 28 June 1931 by 4BB (Beatson likely would have been continuing his amateur radio operations soon after relocating to Maryborough) "ON THE AIR. Maryborough's experimental broadcasting station, VK4BB, was on the air yesterday morning, the volume and clarity of the music from selected records being all that could be desired, in the city, at all events. We understand that the station, now located in Wynne's music store, has everything in readiness for regular programmes, and that they will be announced very shortly. Mr. R. Beatson is supervising the broadcasting."

Maryborough Advertiser announces 30 June 1931 that VK4BB Maryborough will operate to a regular schedule with Bob superintending "'VK4BB, MARYBOROUGH, CALLING!' Experimental broadcasts from a station VK4BB, situated in Mr. A. P. Wynne's premises, Kent-street, will be carried out on Tuesday, Friday and Sunday evenings on a wave length of about 245 metres. Reports of the reception will be appreciated and may be phoned to 452 or written to Mr. A. P. Wynne, Radiola distributor, Maryborough, Mr. R. J. Beatson will superintend the station."

1931 07
Advertisement of 1 July for VK4BB regular broadcasting on 245 metres (1225 kHz) "STATION V.K. 4.B.B CALLING FROM — WYNNE'S MUSIC STORE. Experimental Broadcasts under the supervision of our Wireless Expert, Mr. R. J. Beatson, will be carried out on — TUESDAY, FRIDAY AND SUNDAY EVENINGS on about 245 metres. Reports of the Reception will be appreciated. 'Phone 452 or write to — A. P. WYNNE, RADIOLA DISTRIBUTOR, KENT STREET, MARYBOROUGH."

Bob's broadcasts just one of 4 classified advertisements for Wynne's in the Maryborough Chronicle "WYNNE'S RADIOLA 45. FITTED WITH FULL DYNAMIC SPEAKER. Free installation; no extras to buy. Battery Model .. .. .. £37/15/-Electric Model .. .. .. £40/15/-Guaranteed to pull in as far as Perth and New Zealand. WRITE FOR CATALOGUE. Easy Terms Arranged. WYNNE'S RADIOLA DISTRBUTORS, KENT-STREET, MABYBOBOUGH. . . . ALL Radio Valves can be purchased from Wynne's, at Brisbane prices. . . . EXPERIMENTAL Radio Broadcast by Mr. Beatson from Wynne's on Tuesday and Friday from 7 p.m. and on Sundays 6.30 p.m. . . . PICTURES make an ideal birthday gift or wedding present. Wynne's have an excellent stock to select from."

Some background on the experimental broadcast station VK4BB "RADIO VK4BB. The novelty of an experimental radio station in Maryborough coupled with the excellent programme of records being broadcast has been responsible for great numbers of letters from enthusiasts pouring in to Mr. R. Beatson and Mr. A. P. Wynne, in whose music shop the station is situated and conducted by Mr. Beatson who holds the license and is a member of Mr. Wynne's staff. One letter of appreciation came from Mount Bauple. The station is only an experimental one and will take some time to bring it to a standard comparable with other low-powered stations. The power is low and therefore the range of the transmitter is limited and interference is experienced from stations with similar wave lengths. The mechanism has been entirely built locally by Mr. R. Beatson. For the present, experimental transmissions will be on Tuesdays, Fridays and Sundays on a wave length varying between 200 and 250 metres."

1931 08
Detailed report of the wedding of Bob's sister Marge "FLANAGAN — BEATSON. A nuptial mass was celebrated at St Columbia's, Wilston, on August 12, when Rev. Father F. Burton officiated at the marriage of Miss Marge Beatson (only daughter of Mr. and Mrs. T. Beatson, First-avenue, Wilston) and Mr. Tom Flanagan (son of Mrs. F. Flanagan, and the late Mr. W. Flanagan, Body's Bay, Tweed Heads). The bride, who was given away by her father, wore a frock of shell pink mariette over white satin, made on classical lines, the fully flared skirt falling to the ankles. Her veil of pink tulle fell from a Juliet cap of silver lace, finished with orange blossoms. The bride carried a sheaf of arum lilies. Miss Kath Fallon and Miss Mollie Carroll (Nambour) attended their cousin as bridesmaids. They were frocked alike in Persian gowns of apple green organdie, ankle length, and appliqued with pink roses. Their picture hats of pink tulle were trim-med with pink posies and streamers of black velvet. They carried posies of pink sweet peas, set in silver holders. Mr. P. O'Donoghue was best man, and Mr. C. Beatson, groomsman. Mrs. M. Carew presided at the organ. The bride's mother wore a frock of wool crepe de Chine in plum shade, relieved with trimmings and scarf of brown and mastic, and a brown and mastic Baku hat. Mrs. Flanagan choose black satin and white trimmings with her hat of black and white, and a posy of red roses. The wedding breakfast was held at the home of the bride's parents. The honeymoon is being spent at Southport, the bride travelling in a frock of wine-colored crepe de Chine, relieved with white, and a white hat."

1951 11
Overview of Wynne's at time on conversion to proprietary company, credits 4BB role with the firm and itial experimental broadcasts of 4BB in lead up to establishment of 4MB "BIG FORWARD MOVE: WYNNES A COMPANY. THE business and commercial world of Maryborough has seen many changes and affiliations since the war, and the well known business conducted by Mr. A. P. Wynne, in Kent-street has now joined those who have felt the need for expansion. To cope with the increased business, resulting from representation of the leading brands of radio and electrical goods, the firm has been formed into a limited company, to be known as Wynne Pty. Ltd. In making this announcement, yesterday. Mr. A. P. Wynne stated that the business will remain at the same address, and he would continue to be closely associated with it. Commencing business in July, 1919 at the Chronicle buildings in Adelaide-street in a small shop (now occupied by Mr. R. Skennerton, well-known barber), it was soon evident that the humble beginning was no bar to progress, and growing pains demanded larger space. This was acquired in Kent-street at the present address of Hansen's, the jewellers, but once more Mr. Wynne found himself restricted for space, and a further move was made in 1924 to the present premises of W. Adam & Sons in Kent-street. Whilst located at this address in May, 1931, Mr. Wynne was awarded the Radiola franchise by Chandlers Pty. Ltd., the Queensland distributor, and at that time Mr. R. J. Beatson joined the staff. PROGRESSIVE MOVES. The first regular transmission of radio programmes in Maryborough was commenced, using Mr. Beatson's experimental license and call sign 'V.K. 4B.B.' It is now past history how commercial broadcasting developed from this beginning, and today is represented by 4MB, formed in 1932 with Mr. Wynne as managing director since its inception. The final move to be made by the growing firm occurred in 1937 when the present premises in Kent-street were occupied. With the advent of the Wide Bay Regional Electricity Board, and expanded power services, the demand for radio electrical goods has been increased to such an extent that capital expansion was rendered necessary, and the new company has been formed to offer even better service to the public, and new lines not previously carried. Mr. Wynne gives the public, which has been so loyal and generously supported him in the past, an assurance that the present policy of fair dealing and service will be maintained. The staff has been retained and will continue to foster that good will which already exists between itself and its many friends, the customers."

1954 10
Bob sells a second property located at Mt Morgan "I HEREBY withdraw from sale from all agents my property situated at East St, Mt Morgan, same having been sold by Millar, Grieve & Jolly. (Signed) R. J. BEATSON."


text:
History of wireless telegraphy and broadcasting in Australia/Topical/Biographies/Robert John Beatson/Research

To date all research has been very largely limited to NLA's Trove, and further to Trove, Newspapers & Gazettes

In the National Library of Australia's Trove website, 217 articles (Newspapers & Gazettes) as at 6 April 2021 have been tagged as "4BB - Robert John Beatson" (search publictag:4BB - Robert John Beatson)

The main searches used to identify articles for tagging are as follows:
 * With word "VK4BB" (about 50 hits)
 * With word "Beatson", category "Family Notices" (not yet fully researched)
 * With phrase "Robert John Beatson" and without "Publictag:4BB" (less than 10 hits)
 * With phrase "R. J. Beatson", State "Queensland" (about 100 hits)
 * With phrase "Bob Beatson", State "Queensland", from 1920 (about 80 hits)
 * With words "Beatson" and "Wireless", State "Queensland", from 1920 (about 200 hits)

Key articles relating to Watkins and wireless, also Watkins' family history, have been identified for text correcting and inclusion in Transcriptions and Notes - Robert John Beatson. Articles transcribed for Notes are tagged: "!Wikibooks Beatson" (10+ articles). Articles reviewed and considered either duplicates of other articles or not of sufficient importance for inclusion are tagged: "!Wikibooks Beatson Not" (10+ articles).


text:
User:Crowley666/sandbox

其他语言

 * en
 * ja
 * zh
 * de
 * wen
 * wja
 * wzh
 * wde

title: User:Crowley666/sandbox


text:
User talk:Crowley666

Welcome, EdwardAlexanderCrowley!

If you have any questions, you can ask in the assistance reading room or possibly contact me personally. EdwardAlexanderCrowley (discuss • contribs) 04:06, 3 April 2021 (UTC)

 * Indeed, welcome from the Wikibooks team. -- Jules (Mrjulesd) 11:19, 3 April 2021 (UTC)

title: User talk:Crowley666


text:
User:Crowley666/common.js

//mw.loader.load('//ko.wikipedia.org/wiki/%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Gadget-CollapsibleSidebar.js?action=raw&ctype=text/javascript');//折叠左边栏 //不适用于wikibook. ..

title: User:Crowley666/common.js


text:
User:Crowley666/common.css

 * 1) pt-mytalk { display:none; }

title: User:Crowley666/common.css


text:
History of video games/Consoles

The First Generation of Video Game Consoles
Home game consoles as they are known today have to start somewhere and this is it. Though there are a number of definitions of which generation a console belongs to from here on out, most at least agree that the home consoles here belong to the first generation. After this definitions quickly get out of sync with each other Keep in mind that people classify game console generations as more of an art than a science, and there is no formal industry or academic organization which classifies consoles by their generation. While console generations are arbitrary, they still help with understanding consoles historically, so this book uses them.

Going forward in this book this book will generally share its console classification system with the system used by Wikipedia. This is because the system used by Wikipedia is widely used casually by the general public and news outlets. However it's important to note that this system is by no means the only one, and it definitely isn't the correct one in many academic contexts. As stated previously, console generations are fairly arbitrary. However they aren't entirely baseless either. Besides time of release, generations are typically classified using factors such as the technologies used, social factors, economic conditions, and other influences. When a generation is mentioned in this book, prevailing industry movements will be brought up under Trends. Though these are not always universally true for a generation, they help give a big picture impression of what the industry valued at the time, and how things were changing.

The Bare Minimum
As an emerging technology, designers struggled to simply make an interactive device that plugs into a television, let alone design complex games for them. Systems this generation are often capable of drawing just a few lines or dots on a television screen, and little more. Systems often made more with less by asking players to attach overlays to their television sets, and other tricks to make the most out of limited hardware capabilities.

Features many would consider fundamental today, such as automatically keeping scores, are not a given and are frequently left for the player to keep track of. Other features such as color graphics, single player modes, and the ability for a console to generate even a simple beep for audio were sometimes included, but were by no means universal. Keep in mind that this console generation started less than two decades after the first consumer color television broadcast. In fact, in 1972, when the Magnavox Odyssey kicked off the first generation of home video game consoles, Color Television adoption had only just reached over 50% in the United States of America, and many important nations had yet to launch color TV broadcasts.

Dedicated systems
Most first generation consoles were only able to play the games built into them, with the Magnavox Odyssey being the primary semi-exception by using jumper cards used to manipulate console internals for desired results. Other consoles such as those in the PC-50x family, were simply adapters for cartridges which effectively contained the entire console. Proper cartridges used as game software media would not appear until the second generation with the Fairchild Channel F.

Late in this generation, the industry also saw the first TV-Game console combination unit, in the 1977 ITT Schaub-Lorenz Programmable Television. This trend of integrating consoles and displays would continue in following generations as a niche market.

Battery power
Most home game consoles this generation were powered by batteries, despite needing a television to play games. This reduced the upfront cost and complexity of the system because an AC adapter was not needed and consistent DC power would be supplied by the batteries. Some consoles did have an optional power adapter available for purchase.

It is important to note that during the 1970's power supply technology was undergoing rapid advancements, and efficient switching power supplies were only starting to see adoption in consumer products by the end of the decade.

Home Consoles
There were a staggering number of console in the first generation with over 900 models of them sold across the globe. What's even more staggering is that most of them were based on standardized "pong on a chip" designs, playing almost the exact same games as a result. Furthermore, the gaming industry is notoriously bad at preserving its history, and many of these consoles are known by little more than their names. Therefore this part of the book lists only the most notable among these multitude of consoles, for which substantial references still exist.

Flooded Market
A huge number of consoles and video games flooded the market. Many of these consoles and games were low quality, and made it difficult for consoles offering innovative features or quality games to compete. This was one factor which lead to the video game crash of 1983.

Digital programmable computers
This generation, many game consoles contained basic 8-bit computers. Rarely 4-bit and 16-bit computers would be used, like in the Game & Watch platform (4-bit) or the Intellivision (16-bit), though this had minimal impact on console graphics which were primarily constrained by other factors. Cartridge based systems became normal during this generation, and the introduction of digital programmable computers allowed game consoles to run software, which permitted more varied games than what the console designers originally intended.

Representative Graphics
This generation saw increased graphical capabilities of home game consoles, leading to less reliance on simple squares and rectangles in conjunction with overlays, and evolving to simple pixel artwork and rarely vector art. The pivotal choice between industry support for raster or vector graphics technology would hugely affect the industry going forward, with many genres of games favoring one or the other. The ultimate success of the use of raster graphics this generation would lead to their dominant use until the fifth generation of consoles. While these graphics would quickly be considered quite outdated by the mid to late 1980's, this step was a huge leap in quality and allowed more arcade style games to be played on home consoles.

This generation saw the first handheld consoles with basic screens. The displays were typically not visible in the dark and were monochrome only, but they still offered an improvement over the previous approach of using a few basic single color lights as output.

Improved hardware
By this point home console graphics became more capable, and were able to more easily represent characters and believable locations with colorful 2D graphics. Music began to take a bigger role in home game consoles.While consoles were still limited in their audio capabilities, many classic game soundtracks have their origins in this generation.

By this point, most home consoles contained most of their computer hardware in the console itself rather than in the cartridges, allowing for cheaper cartridges to be made. This freed up resources to either make cheaper cartridges, or to place enhancements in cartridges such as specialty chips that enhanced features such as audio. This generation also saw increased adoption of save game functionality, which was typically achieved with battery backed RAM located on the cartridge. Still, many games required gamers to save their progress by writing down a password which indicated their progress, and then re entering it when loading the game, which was a tedious endeavor.

VHS consoles
A few companies attempted to leverage the audio visual capabilities of Video Home System (VHS) analog cassettes to improve the gaming experience, though no VHS consoles saw huge levels of success. By the fourth generation, companies pursing the same strategy would elect for the digital focused CD-ROM drives instead, though it would take till the fifth generation to see successful game consoles capable of full motion video.

Improved hardware
During this generation pixel art in games becomes more much more advanced, often adopting the pointillism art style to the medium to great effect. Sprite based 2D graphics were essentially a solved problem by this generation, which lead to companies to look for ways to differentiate their graphics.

Game consoles also began using pre-rendered 3D Graphics and graphical techniques to give the impression of real 3D graphics running on hardware. Games using simple real time 3D polygons became popular, though they often required enhancement chips to draw just a few hundred polygons a second.

This generation audio improved drastically, with much more advanced audio systems.

CD capable consoles
This generation some companies attempted to release high end consoles with built in CD support, while others tried to launch CD add ons. Both strategies saw lukewarm adoption at best. CD-ROM technology was appealing because they could be used to add recorded video to games, recorded soundtracks, and other features. Furthermore, a high capacity CD-ROM was much cheaper to make ($2 for disk and packaging in 1993) compared to cartridges which held far less and cost far more. As a result CD based games saved significant amounts of money for developers.

Yet CD-ROMs in consoles were not a fully ready technology this generation. Game Developers often used the extra space for enhanced graphics or audio, but often did not use the extra space to further gameplay in a way that could not be done on a cartridge. CD-ROM drives were still quite expensive, despite rapidly declining prices. They were also quite slow compared to cartridges, with long loading times compared to the near instant access allowed by a cartridge.

3D Gaming
Polygonal 3D gaming was supported by all major home consoles this generation. However real time 3D graphics on consumer level hardware was still a new concept, and there were many different wildly different approaches to how a 3D system should work in a console. This lead to some consoles being much better at 3D graphics performance and ease of use by developers, and some with performance much less than their at the time impressive specifications would indicate.

Many game series failed to make effective 3D versions of their traditionally 2D games. Crafting a believable 3D environment on the hardware available was difficult. Furthermore, developers not only had to design good controls for a 3D game, they had to explain them to players used to playing 2D games exclusively. All these issues were exasperated by a lack of developers familiar with 3D gaming, even within major development companies. Even developers that were able to competently make 3D games struggled somewhat, with large improvements in 3D game control schemes occurring within the generation as developers figured out ways to improve the player experience.

Display technology
Display technology improves rapidly during this time with the final major refinements in CRT displays, and the emergence of new technologies. In 1996 Sonys Trinitron (Aperture grille CRT) patents expire, allowing other manufacturers to produce similar quality television sets and improving the gaming experience. In 1998 Phillips introduces the first consumer plasma TV for $15,000. Such TVs would become common in the mid 2000's with improving technology and price drops.

This generation more portable consoles adopted color screens, though monochrome screens were still common.

Home console improvements
This generation sees home consoles with enough power to render decent 3D graphics in real time in a variety of realistic and cartoony styles. Furthermore, the common use of optical media and audio compression allows home consoles to regularly play orchestral soundtracks, and enhance narration and immersion with rich voice acting.

Consoles in this generation had to contend with a changing living room, with the beginning of semi-common adoption of flat screen televisions in consumer households this generation. Major consoles attempted to add DVD playback, higher resolution output, or other multimedia features to take advantage of these improved displays.

This generation was the first to make online play a serious option, though it would not truly take off across all major platforms till the seventh generation.

Handheld improvements
Sixth generation handheld game consoles generally have enough horsepower to match fourth generation home console graphics and audio. Some talented developers on lower spec systems and developers for high end handhelds are able to achieve 3D graphics comparable to early fifth generation home console games - an impressive feat at the time.

Many higher end handhelds begin offering efficiently lit color displays, allowing these systems to finally be played in the dark without too huge of a battery life trade off. Furthermore, many high end handhelds also offer built in rechargeable batteries, allowing for more economical long term ownership of such devices. At the start of the generation rechargeable AA batteries were rapidly growing their previously small marketshare, allowing for those on handhelds without internal batteries to effectively have rechargeable systems.

Home Consoles
A common occurrence early on in the generation was for gamers to acquire both an Xbox 360 and a Wii. This phenomenon was commonly called the Wii60 effect.

The Xbox 360 and the PlayStation 3 both supported HD outputs, but often rendered games below 720p internally, then upscaled to match the output resolution. Many games used bloom and other graphical techniques in a way that created games had washed out and drab colors.

The three major home consoles of this generation each attempted to launch a motion control scheme, to varying degrees of success.

As systems became more linked to gamers personal data, incidents of personal information exposure often occurred when hapless consumers sold their used systems without first wiping their data.

Handhelds
Handheld consoles commonly adopted built in rechargeable batteries by this generation, though some gamers still preferred swappable standardized batteries.

Major handhelds commonly featured graphics comparable to home consoles of the fifth generation. This made portable 3D gaming common.

Higher end handhelds adopted Wi-Fi and other wireless communication standards.

HD Rendering
This generation saw more games rendered at 720p or higher resolutions, compared to the previous generation, which often upscaled from sub HD resolutions.

To increase performance, many developers resorted to duplicating assets multiple times, which helps during seek operations on rotational media at the cost of ballooning game sizes.

Major handheld consoles generally attempted to match the graphical capabilities of home consoles from the sixth or seventh generations.

Improved online
This generation saw the home consoles ease restrictions on cross platform play, allowing people on different consoles to compete when playing the same games with multiple versions across console and PC.

Many Eighth generation home consoles and handhelds supported social media features in the console operating system. Furthermore many consoles began easily allowing screenshots and recordings of gameplay to be shared from the console itself. Later on in the generation, a button was often included on controllers to facilitate this.

With increased online support, this generation saw a corresponding decrease in local multiplayer support.

Opening Up
This generation saw major platforms become much more accessible for small and indie developers. For example, it was during this generation around 2013 that Nintendo eliminated the requirement for developers to own a dedicated office space to possess a developer kit.

A number of minor, "Open" consoles were released this generation. Some consoles were fully open source or open hardware, having well documented hardware, software, or CAD files under a free or open license. Others used the term to simply mean the console was an open platform, meaning anyone could publish for it. Some would use the term open simply to refer to specific subsystems that were open, like case designs, or the fact that a piece of open source software was used for a core system. The most egregious examples simply labeled their platform as open, without giving any clear explanation as to how it was open. As a result this term became somewhat of marketing puffery, similar to the bit wars of the 1990's on a smaller scale, where the term was sometimes meaningful and sometimes not.

Audio Video improvements
This generation saw the debut of hardware raytracing support on major home consoles. Major home consoles also offered 3D audio support.

title: History of video games/Consoles


text:
User:উজ্জ্ব্ল সিকদার/Collections/MATHEMATICS CLASSES

Pythagorean Theorem

 * INTRODUCTION TO MATHEMATICS
 * Trigonometry/The Pythagorean Theorem
 * Rolle's Theorem
 * https://www.youtube.com/watch?v=REuv0Eop_vY

UJJAL SIKDAR Trigonometry Formulas

authors: উজ্জ্ব্ল সিকদার


text:
Wikibooks Stacks/Adding books

This page describes the rudiments of adding books to Wikibooks Stacks. If you are still uncertain, ask at Reading room/Assistance.

Adding books to Wikibooks Stacks

 * 1) Add the CCO Resources to the title page of the book, for example named Example book
 * 2) Name all the pages of the book in accordance with the naming policy; pages of the book must be named Example book/Subpage name, with Example book and Subpage name replaced with the correct names. Add the template BookCat at the bottom of all the pages of the book, except for the title page.
 * 3) Create the category page for the book. For example, for the book Example book, the category page would be titled Category:Book:Example book
 * 4) Add the templates Book category header and BookCat to the category page for the book.
 * 5) Any subcategories should be subpages of this category, for example Category:Book:Example book/Subcategory name, with Example book and Subcategory name replaced with the correct names.

Adding book-specific templates

 * 1) See Help:Templates for an introduction to templates, and Templates for a list of general templates. But you may wish to create a book-specific templates, that will only be used in your particular book. For an example, see the Calculus book templates.
 * 2) Book-specific templates should be named Template:Example book/Template name, with Example book and Template name replaced with the correct names.
 * 3) Add  to the template page to categorize. If the template is incorrectly named, /Templates will be needed instead, with Example book replaced with the correct name.
 * 4) Create the page Category:Book:Example book/Templates, replacing Example book with the book name, and add Book item category header to this page.

title: Wikibooks Stacks/Adding books


text:
User talk:JCPod

Welcome!
Welcome to Wikibooks, JCPod!

 First steps tutorial Wikibooks is for collaborative development of free textbooks.

You do not need technical skills to contribute. You can easily change most books. Please introduce yourself, and let us know what interests you.

If you already contribute at other Wikimedia projects, our Wikimedia Orientation should quickly get you started. (Would you like to provide feedback on this message?)

  Getting help   Made a mistake?   Goodies, tips and tricks
 * Read the Using Wikibooks book for a friendly introduction to the project, or our help pages for more information.
 * You can get friendly help from the community in the user assistance room or our IRC channel.
 * Upload freely licensed files to Wikimedia Commons. You may request permission to upload fair use files locally. Please include author and source information and a non-free use rationale for non-free files.
 * You can restore a previously saved version.
 * Pages should follow the  naming convention.
 * Need to rename a page? Use the move tab (is available once your account is 4 days old - until then, ask for help).
 * To request a page be deleted, add to the top of the page.
 * Was a page you made deleted? Please read the deletion policy, and check the deletion log to find out why. Also check the RFD archives if applicable. You can request undeletion at WB:RFU, or ask the administrator who deleted the page.
 * Please fill in the edit summary and preview your edits before saving.
 * Sign your name on discussion pages by typing ~~~~
 * User scripts can make many tasks easier. Look at the Gadgets tab of my preferences; check off the boxes for the scripts you want, and hit save!

-- Jules (Mrjulesd) 08:39, 4 April 2021 (UTC)

title: User talk:JCPod