OUT1BYT EQU $FFBB ; ADDRESSES MAY VARY BY BOARD OUTCRLF EQU $FFC4 INCHAR EQU $FFCD OUTSTRG EQU $FFC7 ************************************************************************** * Buffalo emulation section for Wookie: * * To get Wookie to work, add RTS instructions at the Buffalo locations. * * Remove this section before compiling for Buffalo. * * You can set breakpoints here if you want to see if your program is * * behaving correctly. * ************************************************************************** ORG OUT1BYT RTS ORG OUTCRLF RTS ORG INCHAR LDAA #$41 ; pretend they typed in capital A RTS ORG OUTSTRG RTS ************************************************************************** * End of Buffalo emulation section. * ************************************************************************** ORG $8800 RESHI FCB $00 RESLO FCB $00 MLTPLR FCB $00 MLTPND FCB $00 TEMP FCB $00 ORG $8000 MULT LDX #MESG JSR OUTSTRG JSR OUTCRLF ;OUTPUT CARRIAGE RETURN AND LINE FEED JSR GET1BYT ;GET MULTIPLIER BYTE AND STORE IT STAA MLTPLR LDX #MESG JSR OUTSTRG JSR OUTCRLF ;OUTPUT A CARRIAGE RETURN AND LINE FEED JSR GET1BYT ;GET MULTIPLICAND BYTE AND STORE IT STAA MLTPND JSR OUTCRLF ;OUTPUT A CARRIAGE RETURN AND LINE FEED LDAA MLTPLR ;LOAD A WITH MULTIPLIER LDAB MLTPND ;LOAD B WITH MULTIPLICAND MUL ;MULTILPY A X B => D STAA RESHI ;SAVE RESULT HIGH AND LOW STAB RESLO LDX #RESHI ;OUTPUT RESULTS HIGH AND LOW JSR OUT1BYT ;PUTPUT RESULTS HIGH AND LOW JSR OUT1BYT JSR OUTCRLF ;OUTPUT CARRIAGE RETUN AND LINE FEED BRA MULT ;LOOP BACK FOR ANOTHER PASS ;********************* SUBROUTINE GET1BYT *********************** ;* Subroutine to get a byte from terminal * ;**************************************************************** GET1BYT JSR GET1NIB ;GET FIRST NIBBLE IN A LSLA ;MOVE IT TO UPPER NIBBLE POSITION LSLA LSLA LSLA STAA TEMP ;SAVE IT IN A TEMPORARY MEMORY JSR GET1NIB ;GET SESOND NIBBLE IN A ORAA TEMP ;COMBINE IT WITH FIRST NIBBLE RTS ;********************* SUBROUTINE GET1NIB *********************** ;* Subroutine to get a nibble from terminal * ;**************************************************************** GET1NIB JSR INCHAR ;GET AN ASCII CHARACTER FROM TERMINAL SUBA #$30 ;REMOVE ASCII BIAS CMPA #$09 BLS EXIT ;SKIP AROUND IF A 0-9 DIGIT ANDA #$DF ;MAKE IT CASE INSENSITIVE SUBA #$07 EXIT RTS ;RETURN MESG FCC 'PLEASE ENTER A 2-DIGIT HEXADECIMAL NUMBER' FCB $04