ULTRASCIENCE, 1824 WILMETTE AVE., WILMETTE, IL 60091 (03/10/84)
Page 2
ULTRASCIENCE, 1824 WILMETTE AVE., WILMETTE, IL 60091 (03/10/84)
CHAPTER 1
INTRODUCTION
Ultrascience is assisting AMUS and Alpha Micro in an effort to
identify, organize, and stamp out bugs in the Alpha Micro system.
When time and resources permit, we will develop patches for the bugs
and provide them to the AMUS network. All other users are
encouraged to do the same.
1.1 PATCHING SOURCE CODE
____________________
When source code is available the patches can be made directly
to the source and the source reassembled.
1.2 PATCHING BINARY CODE
____________________
To install a binary patch, create and log into a patch account.
10,0 is recommended. Copy the program (.LIT) that is to be patched
into the account and copy or create the patch .M68 in the account as
well. Next run "PATCH" as follows:
PATCH program.LIT WITH patch.M68
The patch.M68 file will be automatically assembled. When the patch
is complete the hash total of the resulting patched.LIT will be
checked. If the hash total does not match, there was an error;
recheck the hash total of the unpatched.LIT and the patch.M68.
If the new hash total is correct, the upatched.LIT should be
renamed to upatched.OLD, and the new patched.LIT should be copied
into the sae account and erased from 10,0. If any other patches
become available from Alpha Micro, these patches must be made on
unpatched.OLD, unless Alpha Micro has accepted the patches described
in these pages. Ultrascience will make an effort to keep an updated
version its patches on the AMUS network in the event that any of the
unpatched programs aremodified by Alpha Micro without including the
patch described here.
ULTRASCIENCE, 1824 WILMETTE AVE., WILMETTE, IL 60091 (03/10/84)
CHAPTER 2
BASIC
2.1 RUN
___
2.1.1 ALPHA PATCH #1 OLD 707-627-570-117 / NEW 617-501-271-466
________________________________________________________
This patch corrects a problem that occurs when running BASIC
from SHELL. If the BASIC program contained "ONERROR" and an error
occured, the system crashed.
; Patch #1 to SYS:RUN.LIT Ver. 1.1(166) (AMOS/L 1.1)
COPY PATCH
OVER 1,1,0,166.,0
NVER 1,1,0,166.,1
OHASH 707,627,570,117
NHASH 617,501,271,466
.=13614
JMP 10$
.=34274
10$: BEQ 20$
SUB D7,44(A0)
WORD 47372,157132
20$: ADD #2,A5
RTN
2.1.3 ULTRA PATCH #3 OLD 665-501-321-464 / NEW 724-005-054-134
_________________________________________________________
RUN3.M68 is a patch which will allow BASIC programs to input data from
________
the keyboard even when running under control of a command file. Normally,
a program running in a command file takes all input from the
command file itself until the command is exhausted or the program ends.
With RUN3 installed an optional switch will be active.
Usage: RUN/n basic program
Where: `n' is the number of lines to be entered from the command file. After
`n' lines have been read from the command file or the command file has been
exhausted, all input will be read from the keyboard.
not used or the program is not run from a command file, RUN will operate
as before.
The switch default is "0", which prevents any command file input to
basic.
Note that this patch eliminates the need for using :K to force keyboard
input in a BASIC program so it is recommended that :K not be used in
conjunction with the run switch. Using both the :K and the run switch
will cause the command program to wait for keyboard entry when the
basic program exits.
By using this patch in conjunction with CHOICE*, it is
easy to develop interactive, menu driven command files.
* For more information on CHOICE refer to CHOICE.LST (available on the AMUS
network).
; Patch #3 to SYS:RUN.LIT Ver. 1.1 (166) (AMOS/L Ver. 1.1 & 1.1A)
;
; HASH TOTALS MUST MATCH:
; INPUT RUN.LIT - 665-501-321-464
; RUN3.M68 - 775-737-565-417
; PATCHED RUN.LIT - 724-005-054-134
;
; Developed by Ultrascience (REV. 4.3)
COPY PATCH
OHASH 665,501,321,464
NHASH 724,005,054,134
OVER 1,1,0,166.,2
NVER 1,1,0,166.,3
ULTRASCIENCE, 1824 WILMETTE AVE., WILMETTE, IL 60091 (03/10/84)
CHAPTER 3
DRIVERS
3.1 AM100L.IDV (ULTRA PATCHES FOR M68)
__________________________________
The AM100L and AM1000 have suffered lock-up problems on the 68000 board
ports which results in locking all but one port for output. Entering
a character through the one port that is not locked releases the
system. The AM100L.M68 can be found in 10,2 and it is easily fixed.
NOTE: Revison "A" or
"B" AM100L's, also require an update. Replace U42 with
an SN74S373. This hardware fix is also necessary in order to prevent
random lock-ups.
Two patches are needed and both have to do with clearing
the status register of the 6850. The interrupt status must be cleared
in the false interrupt routine and during the output routine. The two
patches are marked with comments.
A user advised us that making these changes for his AM1000 system caused
serious character dropping problems. This will be checked with other
AM1000 users.
AM100L.IDV
........
........
........
;INFI False Interrupt Routine
;
;Come here when interrupt was caused by neither transmitter or receiver.
;The interrupt is either DCD change or spurious. In either case, we just
;ignore the interrupt.
;
;Inputs: D1 6850 Status Register
; A4 I/O register base address
; All registers SAVEd on stack
;
;Outputs: None
;
;Modifies: Restores registers
;
INFI: DEBUG F3
; [01/05/84] Lock-up fix: the data register must be read in order
; to clear out the 6850's interrupt.
MOVB P.RCV(A4),D1 ; clear out the 6850 interrupt
REST A0-A6,D0-D7 ; restore registers
RTE ; return
PAGE
;OUTPR Transmitter Interrupt Routine
;
;Come here on a transmitter interrupt. If another character is available
;for output, grab it and send it to the 6850.
;Otherwise, clear the OIP flag and dismiss interrupt.
;
;Inputs: D1 6850 Status Register
; A4 I/O register base address
; A5 Terminal definition index
; All registers SAVEd on the stack
;
;Outputs: Only to AM-100/L
;
;Modifies: Registers restored
;
OUTPR: DEBUG F4
TRMOCP ; get next output character from TRMSER
DEBUG F5
; [02/10/84] Lock-up fix: the data register must be read in order
; to clear out the 6850's interrupt.
MOVB P.RCV(A4),D7 ; clear out the 6850 interrupt
TST D1 ; data available?
BPL OPRG ; yes -
ANDW # C<OIP>,@A5 ; no - clear the OIP flag
MOVB #CM$16!CM$1STP!CM$TXD!CM$RCE,D7
CMPW T.BAU(A5),#2 ; is terminal set for 110 baud?
BNE 10$ ; no -
MOVB #CM$16!CM$2STP!CM$TXD!CM$RCE,D7
10$: MOVB D7,@A4 ; set mode bits
OPRD: BR INTX ; return
.......
.......
.......
Both of these patches are necessary and both patches are
effective. In the output routine the driver clears the IRQ
(interrupt requested) flag by writing to the output register on the
6850 chip. However, if TRMSER does not have a character for output,
the driver bypasses the section where the output register is
written, thereby leaving the IRQ flag set. The second patch resets
the IRQ flag whether TRMSER has an output character or not by
reading the 6850 data register before TRMSER is called.
Three blank lines are supposed to be inserted before each new
header. If the Header begins on line 4 of a page which does not use
a TITLE or page numbering, TXTFMT acts as though the Header is at
the top of the page and does not insert the blank lines.
4.1.5 NUMBERING
_________
Page numbering is not properly justified to the right unless the
LINESIZE is designated prior to MARGIN; however, MARGIN must be
specified first in order that MOST centering work properly. NUMBER
BOTTOM does not take the MARGIN into account whether it is set first
or not!
4.1.6 NXB
___
The NXB will break at the end of a line, so that using and NXB
to prevent the separation of "Mr." and "Jones" will not work at the
end of a line.
4.1.7 PARAGRAPH
_________
If selected, blank lines are supposed to be inserted before each new
paragraph. If the paragraph begins on line 4 of a page which does
not use a TITLE or page numbering, TXTFMT acts as though the
paragraph is at the top of the page and does not insert the blank
lines.
4.1.8 TITLE
_____
TITLE should take that margin into account, so that NXB's would
not have to be used to keep an even right hand margin. Also when
TITLE assumes the chapter title, it is not possible to obtain an
even right hand margin.
UNDERSCORE should be changed so that it does not underline blank
spaces unless they are NXB's, and/or it should be changed so that
underscore flags are not counted as valid characters by FORMAT.
4.1.10 ULTRA PATCH #1 OLD 203-474-611-473 / NEW 113-674-370-354
__________________________________________________
______
Patch #1 to SYS:TXTFMT.LIT Ver. 1.0(107) (AMOS/L 1.1)
This patch fixes the problem of having non expandable blanks break
off at the end of a line. Also fixes problems with centering and
line 4 of pages which do not have top-of-page numbering or titling.
Reffer to TXTFMT.HLV on the AMUS network for information on using
the patched TXTFMT program.
COPY PATCH
OVER 1,0,0,107.,0
NVER 1,0,0,107.,1
OHASH 203,474,611,473
NHASH 403,627,566,131
100$: CMPW 6440(A0),#3
JNE 5246$
MOV 6430(A0),D7
AND #61,D7
BTST #5,D7
JNE 5324$
CMP D7,#1
JEQ 5324$
JMP 5246$
END
4.2 VUE
___
When closing files less than 1 block long the system does not
detect a "write protect" condition on the disk, and it appears that
short files may occasionally cross-link when several users close vue
files at the same time and one of the files is short. If vue uses
an EXIT call instead of a CLOSE call this might explain some of the
difficulty.
4.2.1 HELP
____
When HELP is used to bring up a multiple page help menu in VUE
command level and the user uses C to interrupt the menu in the
middle, VUE seems to turn off access to VUX and will not regain the
attributes until the file is filed and re-VUE'ed. Also, HELP adds
an unwanted last blank page.
ULTRASCIENCE, 1824 WILMETTE AVE., WILMETTE, IL 60091 (03/10/84)
CHAPTER 7
UTILITIES (GENERAL)
7.1 DIRSEQ.LIT
__________
7.2 ULTRA PATCH #1 OLD 144-070-602-227 / NEW 601-645-501-607
_________________________________________________________
DIRSQ1.M68 is a patch which eliminates a disk lock-up problem
that is present in DIRSEQ.LIT. The unpatched version of DIRSEQ.LIT
will abort when sequencing a PPN on a write protected disk, but the
disk will remain locked in such a manner that accessing files on the
disk will lock out other jobs. The only way of unlocking such jobs
is to reset the system. This patch will cause DIRSEQ to unlock the
device when an abnormal exit (i.e., a write protected disk) is
encountered.
; Patch #1 to SYS:DIRSEQ.LIT AMOS/L 1.1 & 1.1A
; Patch for disk lockup occuring when sequencing directories on protected
; disks.
;
; Refer to DIRSQ1.LST for installation instructions.
;
; Developed by Ultrascience (REV. 4.3)
COPY PATCH
OVER 1,0,0,103.,0
NVER 1,0,0,103.,1
OHASH 144,070,602,227
NHASH 601,645,501,607
BNE P7
IF NB,FLG,RTN
ENDM
NP=47161
.=666
WORD H4EBA,P1-.,NP
.=700
WORD H4EBA,P2-.,NP
.=720
WORD H4EBA,P3-.,NP,NP
.=1324
WORD H4EBA,P4-.
BYTE 1342-.,140
.=1406
WORD H4EBA,P5-.
BYTE 1422-.,140
.=1474
WORD H4EBA,P6-.,NP
.=2300
P1: ORB #1,321(A5)
OP DSKDRL,320(A5),1
P2: OP READ,320(A5),1
P3: OP CHGMEM,470(A5),1
P4: OP DSKDEA,@A5
OP DSKBMW,@A5
CLRW @A4
OP WRITE,150(A5),1
P5: OP DSKDEA,@A5
OP DSKBMW,@A5,1
P6: OP WRITE,320(A5),1
P7: POP
DSKDRU 320(A5)
EXIT
END
7.3 FIX.LIT
_______
7.3.1 BUG #1
______
ANDW Dx,@Ay
gets disassembled by FIX into:
XCH Dx,Dy
where x & y are register numbers 0-7.
When executing a program step-by-step with CR in screen
disassembly mode some SVCA's do not operate properly when going
through them fast (holding down CR). For example, going through a
FETCH too fast will often result in the file not being loaded or
located even though the same FETCH will operate properly when going
through it slowly (pauses between CRs).
7.3.3
Under certain un-determined conditions the PC address in screen
disassembly mode displays a large number for the address even though
the page displayed is still part of the program being fixed at the
time (not (ABS) section).
For example:
000010(PRG) ; This example is not a literal copy of the problem.
000012(PRG) ; The file which originally caused this problem has been
337562(PRG) ; misplaced and the numbers may have been different.
337564(PRG) ; Possibly caused in FIX by not clearing D1 before
000014(PRG) ; displaying the address, thereby showing high bits as
000016(PRG) ; part of the address.
7.4 MOUNT
_____
7.4.1 BUG #1
______
MOUNT locks up the job and device under some circumstances (not
yet identified) when a mount is performed on a drive that is not
ready. Clearing the job does not clear the device and most users
will be faced with rebooting.