https://github.com/virtualagc/virtualagc
Tip revision: 7a9ecb86ff67a3d695b32b6dd0f7365a42048516 authored by Ron Burkey on 30 December 2017, 02:10:37 UTC
Experimental stuff related to triggering 1201 or 1202 alarms on demand.
Experimental stuff related to triggering 1201 or 1202 alarms on demand.
Tip revision: 7a9ecb8
SmallyRESTORE1.agc
# Copyright 2004 Ronald S. Burkey <info@sandroid.org>
#
# This file is part of yaAGC.
#
# yaAGC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# yaAGC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with yaAGC; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Filename: SmallyRESTORE1.agc
# Purpose: This is code written from the flowchart on p. 35 of
# E-2065, which is a document titled "Block II AGC
# Self-Check and Show-Banksum", by Edwin D. Smally.
# Mod history: 07/07/04 RSB. Began.
# 08/08/04 RSB. Finished.
#
# Similar code was apparently originally in Luminary and/or Colossus,
# but much of it was removed over the course of time to make more room.
# I don't know what the original code was like, but the flowcharts still
# exist, so I've rewritten the code from the flowcharts.
# P. 35 of Smally
# Realize that to put 177 into SR with TS, we must actually
# use 377 since the value will be shifted. (I'm unable to
# find a way to insert a value into an editing register
# without performing editing.)
CA O377
TS SR
INCR ERRSUB # 15
# Smally's flowchart is a bit confusing about what happens
# at this step. But it looks as though we execute a
# bunch of instructions (like CCS) that re-edit the
# registers, without bothering to use the results, and
# finally fetch the value with MASK, which does not.
CCS SR
NOOP
NOOP
NOOP
NOOP
CS SR
AD SR
EXTEND
MSU SR
EXTEND
SU SR
CA SR
MASK SR
AD NEGONE
EXTEND
BZF +2
TCF R1ERROR
INCR ERRSUB # 16
EXTEND
MP SR
EXTEND
DV SR
CA SR
AD NEGONE
EXTEND
BZF +2
TCF R1ERROR
TCF +2
R1ERROR TC ERRORDSP