;*****************************
;* Main program *
;*****************************
egk1 `EQU FFFFFF10
egk1st `EQU FFFFFF11
egk1cl `EQU FFFFFF11
egk2 `EQU FFFFFF20
egk2st `EQU FFFFFF21
egk2cl `EQU FFFFFF21
egk3 `EQU FFFFFF30
egk3st `EQU FFFFFF31
egk3cl `EQU FFFFFF31
`ORG 0
LOADL R7, 10000 ;stog
LOADL R1, %D 175 ;broj glasaca
CLEAR R2 ;broj glasova za
CLEAR R3 ;broj glasova protiv
check1 LOADcc R0, (egk1st) ;ispitaj vj1
JR_Z check2 ;skoci dalje
LOAD R0, (egk1) ;ucitaj podatak
STORE R0, (egk1cl) ;obrisi spremnost
CALL addvote ;obradi glas
TEST R0 ;da li smo gotovi?
JR_NZ end ;jesmo
check2 LOADcc R0, (egk2st) ;ispitaj vj2
JR_Z check3 ;skoci dalje
LOAD R0, (egk2) ;ucitaj podatak
STORE R0, (egk2cl) ;obrisi spremnost
CALL addvote ;obradi glas
TEST R0 ;da li smo gotovi?
JR_NZ end ;jesmo
check3 LOADcc R0, (egk3st) ;ispitaj vj3
JR_Z check1 ;skoci dalje
LOAD R0, (egk3) ;ucitaj podatak
STORE R0, (egk3cl) ;obrisi spremnost
CALL addvote ;obradi glas
TEST R0 ;da li smo gotovi
JR_Z check1 ;nismo, petljaj ponovo
end STORE R2, (za) ;spremi glasove za
STORE R3, (protiv) ;spremi glasove protiv
HALT
za `DW 0
protiv `DW 0
;*********************
;* Addvote subrutine *
;*********************
`ORG 50
addvote CMP 1, R0 ;da li je glas za?
JR_NE checkno ;nije, skoci
INC R2 ;povecaj brojac za
JR notdec
checkno CMP 2, R0 ;da li je glas protiv?
JR_NE notdec ;glas je suzdrzan
INC R3 ;povecaj brojac protiv
notdec CLEAR R0
DEC R1 ;smanji brojac preostalih ljudi
JR_NZ endsub
INC R0 ;R0 = 1 - svi su glasali
endsub RET
`END