The Softalk Apple Project is very pleased to announce that Chris Torrence has accepted the role of Roger Wagner Volunteer Archivist for the Softalk Apple Project. Chris brings to the project a long standing appreciation for Softalk magazine and particularly for the articles written by Roger Wagner on Assembly Language. As Chris stated in accepting this Volunteer Archivist role:
I received my first complimentary issue of Softalk in January 1982, a couple of months after my family had won an Apple II+ at a computer store grand opening in Detroit, Michigan. I was 13 years old and in 8th grade, and from that point on, I was hooked on computers. I remember pouring over each issue of Softalk, reading reviews of new games, and interviews with people like Buckminster Fuller and Richard Bach.
One of the best sections was called "Assembly Lines", written by Roger Wagner. Here was someone who could explain the arcane mysteries of 6502 assembly language programming with both humor and passion. By January 1982, Assembly Lines was already up to part 16, past the "simple" stuff, and well into sound generation and hi-res graphics routines. A few months later, Softalk Books published a collection of the first 15 articles in Assembly Lines: The Book. The magazine series continued until June 1983. Softalk Publishing promised that Volume 2 would soon be arriving, containing all of the remaining articles. Alas, Softalk Publishing went bankrupt before the second volume could be completed.
Now, with Roger Wagner's blessing, I have taken on the task of publishing a combined book containing all of the content of Assembly Lines: The Book, as well as the remaining Softalk articles. As part of this task, I have also taken on the role of Volunteer Archivist on the Softalk Archive for all of Roger Wagner's contributions to Softalk magazine. Roger Wagner, in addition to his "Assembly Lines" series, was also the owner and president of Southwestern Data Systems (SDS) and later, Roger Wagner Publishing. Roger's companies published software such as the Merlin Macro Assembler, The Correspondent, Apple-Doc and List Master, ASCII Express and Z-Term, as well as many others.
As the Roger Wagner Volunteer Archivist, my goal will be to gather all references to Roger Wagner and SDS within Softalk, cross reference and link these with other references on the web using Linked Open Data (LOD), and hopefully, tie these references in a meaningful way to the rest of the Softalk archive. But I don't want this to just be a one-man show. If you find additional references to Roger Wagner, "Assembly Lines", or Southwestern Data Systems, please contact me and I'll make sure they get added to the archive.
Welcome aboard Chris! You've earned 300+ FactMiners pre-launch points as our first FactMiners/STAP Volunteer Archivist.
Those interested in contacting Chris: If you are a STAP community member, you can contact Chris via his Member Contact Form. Non-members can contact Chris via the STAP website Contact Form (select the appropriate topic).
Comments
Hard at work
I'm currently up to Chapter 9 ("The Stack") in Assembly Lines: The New Book. You can read the original issue #1 of Assembly Lines over at: http://www.softalkapple.com/content/assembly-lines-roger-wagner-no-1-oct...
As described there, the goal is to publish a book containing all of the content of Volume 1 plus all of the remaining articles from Softalk that were supposed to have been in Volume 2.
More to follow...
Assembly Lines The Book Version 2.0
This inquiry is to Mr. Torrance and the rest of the Project Staff:
When the updated book is completed/done, does one have to go to Amazon
or any other (online) bookseller to "purchase" the book or will it be available
on this site without cost or obligation?
An old saying some may remember or heard of: "There is no free lunch"...
And another question: Does Roger Wagner get any compensation or royalties
since this is his (copyrighted) work, even though the publication (Softalk) in print
form is not available, but only the digital form (which the Project Team is busily
working on now)???
SL
Great questions!
Hi, these are both great questions.
First, the book will only be available in print form (via Amazon and Lulu), since Roger Wagner has not given his permission to release a PDF.
That being said, you can already read all of Assembly Lines Volume 1 on Open Library. And, you will also be able to download all of the original Softalk articles for free here on the website.
Regarding your other question, the plan (approved by Roger Wagner) is to price the book "at cost". No one will receive any compensation or royalties. Given a book of approximately 400 pages, the price will be around $10 for softcover and $20-$25 for hardcover.
Let me know if you have further questions. Also, if you have 6502 programming skills or proofreading skills, I might be looking for proofreaders!
-Chris
AL6502 at Your Dispoal
To Mr. Torrence:
I have an extensive background in AL (6502 and x86) along with C+/C++ as well
as mixed language on the Apple II platform (i.e. Basic/AL)...
Here is a sample input routine with a couple of AL listings:
APGETS9X
_________
10 TEXT : HOME : NORMAL
12 N0 = 256:OA = 4 * N0:E0 = N0 - 81:NU = 48:AL = NU + 16:A8 = AL + 16
14 EA = PEEK (E0) + N0 * PEEK (E0 + 1) + OA
15 MC = EA:BL = MC + NU + 5:KR = MC + (2 * NU):KL = 24:KH = KL + 1:BS = KR + A8 + 9:PK = BS + 18:IW = PK + AL + 8
16 Z = 0: FOR XC = MC TO MC + 91:Z = Z + PEEK(XC): NEXT : IF Z <> 10639 THEN PRINT:PRINT CHR$(4)"BLOAD TXGR8CT,A"MC
18 SV = PEEK (BL):VK = 0: POKE BL,E0 - 2: CALL MC[KR,VK]: IF VK <> 20571 THEN PRINT:PRINT CHR$(4)"BLOAD GETKEY9C,A"KR
25 IX = 0: POKE BL,AL: CALL MC[IW,IX]: IF IX <> 8919 THEN PRINT:PRINT CHR$(4)"BLOAD WIPE.INP,A"IW
26 POKE BL,SV
28 IA = 26 * N0:LI = 7:NT = 1:KB% = 0:KP = 1:PP = 0:OP = 0
32 GOTO 70
40 CALL IW[IA,LI]:KP = 1
42 POKE KH,0: POKE KL,0: CALL KR:KB% = PEEK(KL)
44 IF KB% = 13 THEN POKE IA,KP - 1: RETURN
45 IF KB% = 8 THEN 62
46 IF (KB% > 0 AND KB% < 31) OR KB% = 127 THEN CALL -198: GOTO 42
48 IF KP = LI THEN POKE IA,LI - 1: RETURN
50 ON NT GOTO 52,58
52 IF KB% = 45 AND KP = 1 THEN 60
54 IF KB% = 46 AND KP < = LI AND PP = 0 THEN PP = KP:OP = PP: GOTO 60
55 IF KB% < NU OR KB% > NU + 9 THEN 42
56 GOTO 60
58 IF KB% < AL + 1 OR KB% > AL + 26 THEN 42
60 PRINT CHR$(KB%);: POKE IA + KP,KB%:KP = KP + 1: GOTO 42
62 IF KP = 1 THEN 42
64 CALL BS
65 IF KP = 2 THEN 40
66 POKE IA + KP, PEEK(IA + KP - 1):KP = KP - 1:PP = 0: GOTO 42
70 VTAB 4: HTAB 2: PRINT "TYPE (1=NUMERIC 2=ALPHA): ";
72 CALL KR:KB% = PEEK(KL): IF KB% < NU + 1 OR KB% > NU + 2 THEN 70
74 NT = KB% - NU: PRINT CHR$(KB%)
75 VP = 6:HP = 2
76 VTAB VP: HTAB HP: PRINT "STRING: ";
78 DP = 0: GOSUB 40:LC = PEEK(IA)
80 IF LC = 0 THEN 76
82 VTAB 10: HTAB 2: PRINT "YOU ENTERED: ";
84 LC = PEEK(IA): FOR I = 1 TO LC
85 IF LC <> 0 THEN PRINT CHR$(PEEK(IA + I));
86 NEXT
88 VTAB 22: HTAB 2: PRINT "ANOTHER RUN? (Y/N): ";: CALL KR:KB% = PEEK(KL): IF KB% <> 78 AND KB% <> 89 THEN 88
90 IF KB% = 89 THEN HOME : GOTO 70
92 HOME : PRINT "END PROGRAM...": END
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
GETKEY9C
_________
0300- D8 CLD
0301- 18 CLC
0302- A2 01 LDX #$01 ;CLEAR "GET ZONE"
0304- A9 00 LDA #$00
0306- 95 18 STA $18,X
0308- CA DEX
0309- 10 F9 BPL $0304
030B- AD 10 C0 LDA $C010 ;CLEAR KEYBOARD
030E- 2C 1F C0 BIT $C01F ;CHECK IF IN 80-COLUMN MODE
0311- 30 05 BMI $0318
0313- A4 24 LDY $24 ;NO, 40-COLUMN MODE
0315- B8 CLV
0316- 50 03 BVC $031B
0318- AC 7B 05 LDY $057B
031B- B1 28 LDA ($28),Y
031D- 48 PHA
031E- 29 3F AND #$3F
0320- 09 40 ORA #$40
0322- 91 28 STA ($28),Y
0324- 68 PLA
0325- E6 4E INC $4E ;"SCRAMBLE" RANDOM SEED POINTERS
0327- D0 02 BNE $032B
0329- E6 4F INC $4F
032B- 2C 00 C0 BIT $C000 ;WHILE READING THE KEYBOARD
032E- 10 F5 BPL $0325
0330- 91 28 STA ($28),Y
0332- AD 00 C0 LDA $C000 ;r:KBD w:CLR80COL
0335- 2C 10 C0 BIT $C010 ;r:KBDSTRB
0338- A6 4E LDX $4E
033A- 86 CA STX $CA
033C- A6 4F LDX $4F
033E- 86 CB STX $CB
0340- C9 83 CMP #$83 ;CONTROL-C NOT ACCEPTED
0342- D0 03 BNE $0347
0344- B8 CLV
0345- 50 C4 BVC $030B
0347- 85 19 STA $19 ;STORE/STUFF KEYSTROKE (HIGH BIT SET)
0349- 29 7F AND #$7F ;STRIP HIGH BIT
034B- C9 61 CMP #$61 ;CHECK FOR LOWERCASE
034D- 90 07 BCC $0356
034F- C9 7B CMP #$7B
0351- B0 03 BCS $0356
0353- 38 SEC ;SHIFT TO UPPER CASE
0354- E9 20 SBC #$20
0356- 85 18 STA $18 ;STORE/STUFF KEYSTROKE
0358- 60 RTS
0359- D8 CLD ;BACKSPACE ROUTINE
035A- 18 CLC ;TRANSLATION OF PRINT CHR$(8);" ";CHR(8);
035B- A9 88 LDA #$88 ;BACKSPACE
035D- 20 ED FD JSR $FDED
0360- A9 A0 LDA #$A0 ;SPACE OUT
0362- 20 ED FD JSR $FDED
0365- A9 88 LDA #$88 ;BACKSPACE
0367- 20 ED FD JSR $FDED
036A- 60 RTS
;----------------------------------------
036B- D8 CLD ;POKEIT ROUTINE
036C- 18 CLC ;
036D- A0 00 LDY #$00
036F- A9 5B LDA #$5B ;CHECK FOR LEFT BRACKET
0371- D1 B8 CMP ($B8),Y
0373- F0 03 BEQ $0378 ;GOT IT
0375- 4C C9 DE JMP $DEC9 ;SORRY, ERROR!!
0378- 20 B1 00 JSR $00B1 ;Get the first number
037B- 20 67 DD JSR $DD67 ;Convert into two-byte format
037E- 20 52 E7 JSR $E752
0381- A0 01 LDY #$01 ;And store the result
0383- B6 50 LDX $50,Y
0385- 96 CE STX $CE,Y
0387- 88 DEY
0388- 10 F9 BPL $0383
038A- 20 BE DE JSR $DEBE ;Get the second number
038D- 20 67 DD JSR $DD67 ;To "poke" into the first #
0390- 20 52 E7 JSR $E752
0393- A0 01 LDY #$01
0395- B6 50 LDX $50,Y ;Poke it in...
0397- 8A TXA
0398- 91 CE STA ($CE),Y
039A- 88 DEY
039B- 10 F8 BPL $0395
039D- A0 00 LDY #$00
039F- A9 5D LDA #$5D ;CHECK FOR RIGHT BRACKET
03A1- D1 B8 CMP ($B8),Y
03A3- F0 03 BEQ $03A8 ;FOUND IT... THE END
03A5- 4C C9 DE JMP $DEC9
03A8- 4C B1 00 JMP $00B1
03AB- 00 BRK
03AC- 00 BRK
[(171 - 173) BYTE COUNT: 20571]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
WIPE.INP (WIPE INPUT AREA)
________
0300- D8 CLD
0301- 18 CLC
0302- A0 00 LDY #$00
0304- A9 5B LDA #$5B
0306- D1 B8 CMP ($B8),Y
0308- F0 03 BEQ $030D
030A- 4C C9 DE JMP $DEC9
030D- 20 B1 00 JSR $00B1
0310- 20 7B DD JSR $DD7B
0313- 20 52 E7 JSR $E752
0316- A5 50 LDA $50
0318- 85 EE STA $EE
031A- A5 51 LDA $51
031C- 85 EF STA $EF
031E- 20 4C E7 JSR $E74C
0321- E0 11 CPX #$11
0323- B0 0D BCS $0332
0325- 86 ED STX $ED
0327- A9 00 LDA #$00
0329- A8 TAY
032A- C8 INY
032B- 91 EE STA ($EE),Y
032D- C8 INY
032E- C4 ED CPY $ED
0330- D0 F9 BNE $032B
0332- A0 00 LDY #$00
0334- A9 5D LDA #$5D
0336- D1 B8 CMP ($B8),Y
0338- F0 03 BEQ $033D
033A- 4C C9 DE JMP $DEC9
033D- 4C B1 00 JMP $00B1
0340- 00 BRK
The only way you can "contact" me is by e-mail or through the commentary on this page...
Have a constructive and productive day
SL
that's a lot of code
Thanks for the reply. Excellent looking code! When it gets closer to rough-draft time, I'll contact you.
Cheers,
Chris
THIS IS SO COOL! :D
shlewap2 and Chris,
I cannot tell you how happy it makes me to see the two of you discussing Roger and the productive activity of the STAP project. Chris, you are doing a bang-up job as our first Volunteer Archivist! Thank you both for your involvement and interest in this project. While this is full of pleasant memories for many of us, the 48 monthly issues of Softalk are an incredible historical documentary resource. You folks are helping us preserve and explore this remarkable resource.
The fact that we had our first comment post with an assembly language listing is simply icing on the 6502 cake! ;-)
Thanks for the Compliments
To Mr. Salmons and the Project Staff:
Thanks for the compliments.... There's a lot of "scattered info" I gathered to produce
the listings as well as "physical" (i.e. at my hands) items (i.e. Nibble Magazine,
Compute Magazine (scanned and unscanned), Compute Books [Apple ML for
Beginners; First and Second Book of ML]) plus trial and testing to make them work...
In just asking... When will the Softalk PDFs be available? Late May or early June??
Have a good and peaceful weekend to all...
SL
Hey SL,
Hey SL,
There will definitely be the first 2-4 issues released by early June. Developing the best workflow and standard for metadata and colophon, etc. is a "one off" task that slows down the beginning of this process. But once we've nailed it, we'll be able to replicate the process and get better/faster as we go along.
Again, since we are working with the Stanford Digital Repository for long-term storage of the Softalk archive and donation of the entire STAP project website and its (eventual) FactMiners Fact Cloud to the Libraries' History of Technology Collection, it is important that we do this right not fast. I'm sure you appreciate and support this goal of making sure Softalk lives on forever (so to speak). :-)
--Jim--
Thanks for the Update
To Mr. Salmons:
Thanks for the update... Take your time... Cannot rush a "treasure" that Tim Cook "wished"
he could support... Maybe you can "nudge" him to help you out financially on the project.
Good Day
SL