YaK:: vtio bug (NitrOS9 EOU beta 5) leax <CoGrf,pcr [Changes]   [Calendar]   [Search]   [Index]   [PhotoTags]   
[mega_changes]
[photos]

vtio bug (NitrOS9 EOU beta 5) leax <CoGrf,pcr

In Beta5 of http://www.lcurtisboyle.com/nitros9/nitros9.html :

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.

EXCERPT FROM vtio.listing:

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

SAME FROM my lwasm vtio listing:

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

(unless otherwise marked) Copyright 2002-2014 YakPeople. All rights reserved.
(last modified 2020-09-14)       [Login]
(No back references.)