| YaK:: vtio bug (NitrOS9 EOU beta 5) leax <CoGrf,pcr | [Changes] [Calendar] [Search] [Index] [PhotoTags] | 
In the /sourcecode/asm/nitros9/scf/ directory of 68SDC.VHD there is a module vtio_beta5
The file vtio.listing has checksum 32DC40 but when I compile it with "lwasm" I get a checksum of 4BE2D6
When I boot the EOU beta 5 distribution (with my gomar emulator), it uses a vtio module with the checksum 32DC40.
I did some hacking to compare the modules, and the difference is in this line
leax <CoGrf,pcr point to CoGrf name
In vtio.listing that is assembled as
0921 308CDC
but in my assembly it comes out as
0921 308CE3
Doing the bits, mine is right, and the vtio.listing is wrong.
Why? Well before I could assemble it with lwasm, I had to fix an error that "CoGrf" was redefined. So in my version, I had renamed the label "CoGrfName".
I assume the old Microware assembler is using the original definition rather than the local definition.
And I think the hack comment indicates this bug was causing problems.
01557 0900 35E2 puls pc,u,y,a restore regs & return 01558 01559 0902 436F5769 CoWin fcs /CoWin/ 01560 0907 436F4772 CoGrf fcs /CoGrf/ ++ 01561 *CC3GfxInt fcs /CC3GfxInt/ ++ 01562 01563 * 01564 * Try CoWin 01565 * 01566 090C 3460 FindWind pshs u,y preserve regs 01567 090E 4F clra set window type 01568 090F A7C81D sta <V.WinType,u 01569 0912 308CED leax <CoWin,pcr point to CoWin name 01570 0915 8680 lda #$80 get driver type code 01571 0917 8D13 bsr L08D4 try and link it 01572 01573 *++ 01574 0919 240D bcc ok 01575 01576 * Bug fix by Boisy on 08/22/2007 - The three lines below were inserted to check to see 01577 * the nature of the error that occurred fromfailing to link to CoWin/CoGrf. Since CoWin/CoGr 01578 * also load GrfDrv, an error other than E$MNF might arise. We expect an E$MNF if CoGrf is in 01579 * place instead of CoWin, but any other error just gets blown away without the three lines be 01580 * Now, if any error other than E$MNF is returned from trying to link to CoWin, we don't bothe Microware OS-9 Assembler RS Version 01.00.00 04/28/2020 12:54:05 Page 027 VTIO - Video Terminal I/O Driver for CoCo 3 01581 * to link to CoGrf... we just return the error as is. 01582 091B C1DD cmpb #E$MNF compare the error to what we expect 01583 091D 1A01 orcc #Carry set the carry again (cmpb above clears it) 01584 091F 2607 bne ok if the error in B is not E$MNF, just leave this routine 01585 01586 0921 308CDC leax <CoGrf,pcr point to CoGrf name 01587 0924 8680 lda #$80 01588 0926 8D04 bsr L08D4 01589 *++ 01590  | 
0900 35E2             01557                  puls  pc,u,y,a   restore regs & return
                      01558
0902 436F5769EE       01559         CoWin    fcs   /CoWin/
0907 436F4772E6       01560         CoGrfName    fcs   /CoGrf/ ++
                      01561         *CC3GfxInt fcs   /CC3GfxInt/ ++
                      01562
                      01563         *
                      01564         * Try CoWin
                      01565         *
090C 3460             01566         FindWind pshs  u,y    preserve regs
090E 4F               01567                  clra       set window type
090F A7C81D           01568                  sta   <V.WinType,u
0912 308CED           01569                  leax  <CoWin,pcr point to CoWin name
0915 8680             01570                  lda   #$80   get driver type code
0917 8D13             01571                  bsr   L08D4    try and link it
                      01572
                      01573         *++
0919 240D             01574                  bcc   ok
                      01575
                      01576         * Bug fix by Boisy on 08/22/2007 - The three lines below were inserted to check to see
                      01577         * the nature of the error that occurred fromfailing to link to CoWin/CoGrf.  Since CoWin/CoGrf
                      01578         * also load GrfDrv, an error other than E$MNF might arise.  We expect an E$MNF if CoGrf is in
                      01579         * place instead of CoWin, but any other error just gets blown away without the three lines below.
                      01580         * Now, if any error other than E$MNF is returned from trying to link to CoWin, we don't bother trying
                      01581         * to link to CoGrf... we just return the error as is.
091B C1DD             01582                  cmpb  #E$MNF   compare the error to what we expect
091D 1A01             01583                  orcc  #Carry   set the carry again (cmpb above clears it)
091F 2607             01584                  bne   ok   if the error in B is not E$MNF, just leave this routine
                      01585
0921 308CE3           01586                  leax  <CoGrfName,pcr point to CoGrf name
0924 8680             01587                  lda   #$80
0926 8D04             01588                  bsr   L08D4
                      01589         *++
                      01590
 | 
| (last modified 2020-09-14) [Login] |