;***************************** ;* 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