#! rnews 20885 Path: pravda.aa.msen.com!nntp.coast.net!howland.reston.ans.net!gatech!new= s.mathworks.com!zombie.ncsc.mil!admaix.sunydutchess.edu!news.acsu.buffalo= .edu!news.drenet.dnd.ca!crc-news.doc.ca!nott!cunews!freenet-news.carleton= .ca!FreeNet.Carleton.CA!df465 From: df465@FreeNet.Carleton.CA (Onno Ebbinge) Newsgroups: comp.sys.cbm Subject: More errors/inaccuracies in online docs! Date: 19 Jul 1996 18:27:07 GMT Organization: National Capital Freenet, Ottawa, Canada Lines: 401 Sender: df465@freenet6.carleton.ca (Onno Ebbinge) Message-ID: <4sok1r$iuv@freenet-news.carleton.ca> NNTP-Posting-Host: freenet6.carleton.ca Here are some more errors/inaccuracies I have found OR WHAT I THINK are errors/inaccuracies. They are listed below and I hope I'm not in error... Still searching for other errors/inaccuracies I know I have written down.= .. somewhere... If I come across these or other errors/inaccuracies I will leave a note here. Have fun, Onno *** ORIGINAL C64 PRG only On page 254 (INSTRUCTION ADDRESSING MODES AND RELATED EXECUTION TIMES) the BRK instruction has 7 cycles in implied addressing mode instead of no= ne. *** C=3DHACKING issue 01 > * BRK $00 Stack <- PC, PC <- ($fffe) (Immediate) 1/7 (Immediate) must be: (Implied) > * ORA $01 A <- (A) V M (Ind,X) 6/2 6/2 must be: 2/6 > * LSR $46 C <- A0, A <- (A) >> 1 (Absolute,X) 3/7 (Absolute,X) 3/7 must be: (Z-Page) 2/5 > [LSR entry $5E is not there!] must be: * LSR $5E C <- A0, A <- (A) >> 1 (Absolute,X) 3/7 And MANY more in the 'Description' column! *** c64prg10.txt (and some in ORIGINAL prg) (the three errors from the previous posting are included for clarity) > ADC Add memory to accumulator with carry = ADC > > Operation: A + M + C -> A, C N Z C I D V > / / / _ _ / > (Ref: 2.2.1) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | ADC #Oper | 69 | 2 | 2 = | > | Zero Page | ADC Oper | 65 | 2 | 3 = | > | Zero Page,X | ADC Oper,X | 75 | 2 | 4 = | > | Absolute | ADC Oper | 60 | 3 | 4 = | > | Absolute,X | ADC Oper,X | 70 | 3 | 4* = | > | Absolute,Y | ADC Oper,Y | 79 | 3 | 4* = | > | (Indirect,X) | ADC (Oper,X) | 61 | 2 | 6 = | > | (Indirect),Y | ADC (Oper),Y | 71 | 2 | 5* = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 if page boundary is crossed. The opcodes 60 and 70 must be: 6D and 7D > AND "AND" memory with accumulator = AND > > Operation: A /\ M -> A N Z C I D V > / / _ _ _ _ > (Ref: 2.2.3.0) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | AND #Oper | 29 | 2 | 2 = | > | Zero Page | AND Oper | 25 | 2 | 3 = | > | Zero Page,X | AND Oper,X | 35 | 2 | 4 = | > | Absolute | AND Oper | 2D | 3 | 4 = | > | Absolute,X | AND Oper,X | 3D | 3 | 4* = | > | Absolute,Y | AND Oper,Y | 39 | 3 | 4* = | > | (Indirect,X) | AND (Oper,X) | 21 | 2 | 6 = | > | (Indirect,Y) | AND (Oper),Y | 31 | 2 | 5 = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 if page boundary is crossed. (Indirect,Y) must be: (Indirect),Y After the last cycle entry there must be a '*' thus "5*". (Last error is also included in ORIGINAL prg) > BMI BMI Branch on result minus = BMI > > Operation: Branch on N =3D 1 N Z C I D V > _ _ _ _ _ _ > (Ref: 4.1.1.1) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Relative | BMI Oper | 30 | 2 | 2* = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 if branch occurs to same page. > * Add 1 if branch occurs to different page. The line: * Add 1 if branch occurs to different page. Must be : * Add 2 if branch occurs to different page. > BNE BNE Branch on result not zero = BNE > > Operation: Branch on Z =3D 0 N Z C I D V > _ _ _ _ _ _ > (Ref: 4.1.1.6) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Relative | BMI Oper | D0 | 2 | 2* = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 if branch occurs to same page. > * Add 2 if branch occurs to different page. BMI Oper must be: BNE Oper > CPX CPX Compare Memory and Index X = CPX > N Z C I D V > Operation: X - M / / / _ _ _ > (Ref: 7.8) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | CPX *Oper | E0 | 2 | 2 = | > | Zero Page | CPX Oper | E4 | 2 | 3 = | > | Absolute | CPX Oper | EC | 3 | 4 = | > +----------------+-----------------------+---------+---------+-------= ---+ CPX *Oper must be: CPX #Oper > CPY CPY Compare memory and index Y = CPY > N Z C I D V > Operation: Y - M / / / _ _ _ > (Ref: 7.9) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | CPY *Oper | C0 | 2 | 2 = | > | Zero Page | CPY Oper | C4 | 2 | 3 = | > | Absolute | CPY Oper | CC | 3 | 4 = | > +----------------+-----------------------+---------+---------+-------= ---+ CPY *Oper must be: CPY #Oper > DEY DEY Decrement index Y by one = DEY > > Operation: X - 1 -> Y N Z C I D V > / / _ _ _ _ > (Ref: 7.7) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | DEY | 88 | 1 | 2 = | > +----------------+-----------------------+---------+---------+-------= ---+ Operation must be: Y - 1 -> Y > EOR EOR "Exclusive-Or" memory with accumulator = EOR > > Operation: A EOR M -> A N Z C I D V > / / _ _ _ _ > (Ref: 2.2.3.2) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | EOR #Oper | 49 | 2 | 2 = | > | Zero Page | EOR Oper | 45 | 2 | 3 = | > | Zero Page,X | EOR Oper,X | 55 | 2 | 4 = | > | Absolute | EOR Oper | 40 | 3 | 4 = | > | Absolute,X | EOR Oper,X | 50 | 3 | 4* = | > | Absolute,Y | EOR Oper,Y | 59 | 3 | 4* = | > | (Indirect,X) | EOR (Oper,X) | 41 | 2 | 6 = | > | (Indirect),Y | EOR (Oper),Y | 51 | 2 | 5* = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 if page boundary is crossed. The opcodes 40 and 50 must be: 4D and 5D > INY INY Increment Index Y by one = INY > > Operation: X + 1 -> X N Z C I D V > / / _ _ _ _ > (Ref: 7.5) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | INY | C8 | 1 | 2 = | > +----------------+-----------------------+---------+---------+-------= ---+ Operation must be: Y + 1 -> Y > ORA ORA "OR" memory with accumulator = ORA > > Operation: A V M -> A N Z C I D V > / / _ _ _ _ > (Ref: 2.2.3.1) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | ORA #Oper | 09 | 2 | 2 = | > | Zero Page | ORA Oper | 05 | 2 | 3 = | > | Zero Page,X | ORA Oper,X | 15 | 2 | 4 = | > | Absolute | ORA Oper | 0D | 3 | 4 = | > | Absolute,X | ORA Oper,X | 10 | 3 | 4* = | > | Absolute,Y | ORA Oper,Y | 19 | 3 | 4* = | > | (Indirect,X) | ORA (Oper,X) | 01 | 2 | 6 = | > | (Indirect),Y | ORA (Oper),Y | 11 | 2 | 5 = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 on page crossing The opcode 10 must be: 1D After the last cycle entry there must be a '*' thus "5*". (Last error is also included in ORIGINAL prg) > PLA PLA Pull accumulator from stack = PLA > > Operation: A fromS N Z C I D V > _ _ _ _ _ _ > (Ref: 8.6) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | PLA | 68 | 1 | 4 = | > +----------------+-----------------------+---------+---------+-------= ---+ Flags must be: N Z C I D V / / _ _ _ _ > PLP PLP Pull processor status from stack = PLA > > Operation: P fromS N Z C I D V > From Stack > (Ref: 8.12) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | PLP | 28 | 1 | 4 = | > +----------------+-----------------------+---------+---------+-------= ---+ (top-right) PLA must be: PLP > RTI RTI Return from interrupt = RTI > N Z C I D V > Operation: P fromS PC fromS From Stack > (Ref: 9.6) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | RTI | 4D | 1 | 6 = | > +----------------+-----------------------+---------+---------+-------= ---+ Opcode 4D must be: 40 > SBC SBC Subtract memory from accumulator with borrow = SBC > - > Operation: A - M - C -> A N Z C I D V > - / / / _ _ / > Note:C =3D Borrow (Ref: 2.2.2) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Immediate | SBC #Oper | E9 | 2 | 2 = | > | Zero Page | SBC Oper | E5 | 2 | 3 = | > | Zero Page,X | SBC Oper,X | F5 | 2 | 4 = | > | Absolute | SBC Oper | ED | 3 | 4 = | > | Absolute,X | SBC Oper,X | FD | 3 | 4* = | > | Absolute,Y | SBC Oper,Y | F9 | 3 | 4* = | > | (Indirect,X) | SBC (Oper,X) | E1 | 2 | 6 = | > | (Indirect),Y | SBC (Oper),Y | F1 | 2 | 5 = | > +----------------+-----------------------+---------+---------+-------= ---+ > * Add 1 when page boundary is crossed. After the last cycle there must be a '*' thus "5*". > SEI SEI Set interrupt disable status = SED > N Z C I D V > Operation: 1 -> I _ _ _ 1 _ _ > (Ref: 3.2.1) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Implied | SEI | 78 | 1 | 2 = | > +----------------+-----------------------+---------+---------+-------= ---+ (top-right) SED must be: SEI > STA STA Store accumulator in memory = STA > > Operation: A -> M N Z C I D V > _ _ _ _ _ _ > (Ref: 2.1.2) > +----------------+-----------------------+---------+---------+-------= ---+ > | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cyc= les| > +----------------+-----------------------+---------+---------+-------= ---+ > | Zero Page | STA Oper | 85 | 2 | 3 = | > | Zero Page,X | STA Oper,X | 95 | 2 | 4 = | > | Absolute | STA Oper | 80 | 3 | 4 = | > | Absolute,X | STA Oper,X | 90 | 3 | 5 = | > | Absolute,Y | STA Oper, Y | 99 | 3 | 5 = | > | (Indirect,X) | STA (Oper,X) | 81 | 2 | 6 = | > | (Indirect),Y | STA (Oper),Y | 91 | 2 | 6 = | > +----------------+-----------------------+---------+---------+-------= ---+ The opcodes 80 and 90 must be: 8D and 9D > +--------------------------------------------------------------------= ---+ > | NOTE: The following POKEs display the same symbol in set 1 and 2: 1= , | > | 27-64, 91-93, 96-104, 106-121, 123-127. = | > +--------------------------------------------------------------------= ---+ > > > SCREEN CODES > > SET 1 SET 2 POKE | SET 1 SET 2 POKE | SET 1 SET 2 P= OKE > ------------------------+------------------------+-------------------= ---- > | | > @ 0 | C c 3 | F f = 6 > A a 1 | D d 4 | G g = 7 > B b 2 | E e 5 | H h = 8 This is a strange double fault that also accours in the printed manual. - In the note poke 1 is said to be the same, this must be poke 0. - In the screen codes poke 0 in set 2 must be a '@' (at sign). (This error is also included in ORIGINAL prg) *************************************************************************= ***** **************** PREVIOUS ERRORS/INACCURACIES **************** *************************************************************************= ***** *** vic-article > With XSCROLL/YSCROLL (bits 0-2 of registers $d011 and $d016), the posit= ion > of the graphics inside the display window can be scrolled in single-pix= el > units up to 7 pixels to the right and to the bottom. This can be used f= or > soft scrolling. The position of the display window itself doesn't chang= e. > To keep the graphics aligned with the window, X/YSCROLL have to be 3 an= d 0 > for 25 lines/40 columns and both 7 for 24 lines/38 columns. $d011/d016, 3/0 and lines/colums are mixed up, it must be something like: With XSCROLL/YSCROLL (bits 0-2 of registers $d016 and $d011), the positio= n of the graphics inside the display window can be scrolled in single-pixel units up to 7 pixels to the right and to the bottom. This can be used for soft scrolling. The position of the display window itself doesn't change. To keep the graphics aligned with the window, X/YSCROLL have to be 0 and = 3 for 40 columns/25 lines and both 7 for 38 columns/24 lines. *** 64doc > BRK > > # address R/W description > --- ------- --- ----------------------------------------------- > 1 PC R fetch opcode, increment PC > 2 PC R read next instruction byte (and throw it away), > increment PC > 3 $0100,S W push PCH on stack (with B flag set), decrement S > 4 $0100,S W push PCL on stack, decrement S > 5 $0100,S W push P on stack, decrement S > 6 $FFFE R fetch PCL > 7 $FFFF R fetch PCH The second 'increment PC' doesn't belong there. *** c64-kernal.diffs The list with KERNAL differences is incorrect. The differences at offsets $EA7C and $EA7D in the 4064 were not listed and the differences at offset $FF82 were incorrect. There were also numerous offsets listed that had no differences at all, these entries were probably cosmetical and are not included in the new list. The C program that was used to make this new ta= ble is included after the new list. The KERNAL ROM images used in the new tab= le can be obtained from the ftp://ftp.funet.fi/pub/cbm/firmware/ directory. Old table | New table ---------------------------------+---------------------------------- $xxxx: $xx, $xx, $xx, $xx, $xx | $EA7C: $87, $87, $87, $87, $C8 $xxxx: $xx, $xx, $xx, $xx, $xx | $EA7D: $EA, $EA, $EA, $EA, $E4 $FF82: $18, $53, $53, $53, $53 | $FF82: $18, $5B, $5B, $5B, $5B [new table sniped, mailed on request] [C program sniped, mailed on request] #! rnews 1813 Path: pravda.aa.msen.com!spool.mu.edu!howland.reston.ans.net!newsfeed.int= ernetmci.com!news.infinet.com!news From: "Michael Bendure" Newsgroups: comp.sys.cbm Subject: Re: CKIT 94 - Dongle! Date: 23 Jul 1996 16:35:33 GMT Organization: InfiNet Lines: 23 Message-ID: <01bb78b4$fe1ed320$08f667ce@mbendure.infinet.com> References: <4sgaue$fpf@mksrv1.dseg.ti.com> <4sgmc1$qfs@news2.h1.usa.pipe= line.com> <4sinvo$isl@sirius.cs.pdx.edu> <31EF855E.5E9C@orl.mindspring.com> <31F2DB9B.162C@orl.mind= spring.com> NNTP-Posting-Host: nwk-p008.infinet.com Mime-Version: 1.0 Content-Type: text/plain; charset=3DISO-8859-1 Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Internet News 4.70.1132 Radioactive Warrior wrote in article <31F2DB9B.162C@orl.mindspring.com>... > Attach a set of paddles (yes the same ones made for the atari2600...) > and adjust paddle b untill you get $9C (156) at mem. location $d41A (54298) > This will keep 1541 BOA from crashing... I examined the program and > my overall evaluation of the package is: it sucks. > > Well, anyway, you guys with lost dongles can use it now... I smell > "1541 BO/UNBO" comming to a dir. near you... then again, why bother? So now we've resorted to using the newsgroups as a place to crack copy protection? I guess since your opinion of the software is that it sucks, the author doesn't deserve to sell anymore copies of his program? This i= s pretty pathetic folks. Especially considering MAD MAN is one of the few companies that still support our computers. One more nail in our coffins. Whats next, GEOFax, The Wave or anything else that is put out by the companies still struggling to bring us some sort of software? You guys really make me sick.