home *** CD-ROM | disk | FTP | other *** search
- ; 7 SEPT 79.
- ;
- ;
- ; THIS PROGRAM EXERCISES ALL THE FELIX OPS; IT DOESN'T
- ; CLAIM TO CAREFULLY SEE THAT THEY ALL DO EVERYTHING THEY
- ; CLAIM TO DO....
- ; YOU SHOULD HAVE DOODLED TWO OBJECTS (1,2 ) TO
- ; GO WITH IT, UNLESS THIS FILE IS OF TYPE &(HAVING
- ; OBJECTS ALREADY WITH IT.)
- ;
- ; MOSHELL 1 SEPT 79.
- ;
- ; FIRST CHECK INPARM, TYPE BY TYPE.
- ;
- PRINT SWRMSG ;ASK FOR SOME INPUTS FOR CHECKS.
- MOVE ?CONSOLE,.TYPE2
- ;
- ; INPAR CHECKS:
- ;
- MOVE #31H,!CONSOLE ;TYPE 1 (8 BIT CONSTANT)
- MOVE .TYPE2,!CONSOLE ;TYPE 2 (8 BIT VARIABLE)
- MOVE !SWREG,!CONSOLE ;TYPE 3 (8 BIT VARIABLE)
- MOVE 35H,!CONSOLE ;TYPE 5 (16 BIT CONSTANT)
- MOVE TYPE4,R1
- MOVE [R1],!CONSOLE ;TYPE 4 (ARRAY INDEXED BY REG ).
- MOVE @TYPE6,!CONSOLE ;TYPE 6 (16 BIT VARIABLE)
- MOVE #37H,R1 ;
- MOVE R1,!CONSOLE ;TYPE 7 (PLAIN REGISTER)
- ADD %1,R1,!CONSOLE ;TYPE 0 (5-BIT CONST;PRINTS '8')
- ;
- JUMP OUTCHK
- ;
- TYPE2: DB "2"
- SWRMSG: DB "INPARM-CHECK: SET HEX 33 IN SWITCH REGISTER",CR,LF
- DB "THEN TYPE A '2',PLEASE.",CR,LF
- DB "PROGRAM SHOULD PRINT '212354678'. ANY MISSING",CR,LF
- DB "NUMBER MEANS THAT INPARM-MODE DIDN'T WORK.",CR,LF,STOP
- TYPE4: DB "4"
- TYPE6: DW 36H
- ;
- OUTCHK: PRINT OTYPE37
- MOVE %0,%1 ;THREE ILLEGAL MOVES
- MOVE %0,#1 ;INTO CONSTANTS SHOULD
- MOVE %0,=1 ;PRODUCE 3 ERRORS.
- MOVE 32H,.OTYPE2
- MOVE .OTYPE2,!CONSOLE ;TYPE 2
- MOVE OTYPE4,R4
- MOVE 34H,[R4]
- MOVE [R4],!CONSOLE ;TYPE 4
- MOVE 36H,@OTYPE6
- MOVE @OTYPE6,!CONSOLE ;TYPE 6
- PRINT NOTSCREEN
- JUMP UNSCREEN
- ;
- OTYPE6: DW 36H
- OTYPE37:DB "OUTPARM CHECK: TYPES 3,7 ARE OK",CR,LF
- DB "AS USED IN INPARM CHECK. TYPES 0,1,5",CR,LF
- DB "SHOULD NOW PRODUCE ERROR MESSAGES.",CR,LF,STOP
- OTYPE2: DS 1
- OTYPE4: DW 0
- NOTSCREEN: DB "NOW THE CONDITIONAL JUMPS,CALL/RET/PUSH/POP",CR,LF
- DB "AND OTHER NON-SCREEN OPS ARE TESTED.",CR,LF,STOP
- ;
- ; THIS LAST IS ALSO A CHALLENGE TO FASM - NO COMMA BEFORE CR.
- ;
- UNSCREEN: COMP %5,%6
- ;
- ; NOW THAT IN/OUTPAR ARE OK,WE CHECK SOME
- ; NON-SCREEN OPS FIRST. ONLY 'TRACE' CAN TELL
- ; YOU WHICH ONES WORK AND WHICH ONE DOESN'T.
- ;
- JNZ NZOK
- HALT
- NZOK: COMPU %3,%3 ;SHOULD SET 'Z' FLAG.
- JZ ZOK
- HALT
- ZOK: SUB %3,%1,R1; SHOULD CLEAR MINUS & CARRY FLAGS.
- JPL NMOK
- HALT
- NMOK: JNC NCOK
- HALT
- NCOK: SUB %1,%3,R1 ;SHOULD SET MINUS&CARRY FLAGS.
- JMI MOK
- HALT
- MOK: JC COK
- HALT
- COK: CALL DUMMY ;TEST CALL,PUSH,POP,RETURN
- JUMP SCRNTEST
- DUMMY: PUSH R1
- POP R2
- COMP R1,R2
- JZ GOBACK
- PRINT PPERROR
- HALT
- PPERROR: DB "PUSH OR POP ERROR.",CR,LF,STOP
- GOBACK: RETURN
- ;
- ; NOW WE WORK OUT ALL THE SCREEN-ORIENTED OPS.
- ; WE SLOW THE SYSTEM DOWN SO YOU CAN SEE IT.
- ;
- SCRNTEST: DELAY 250
- ONLIST 2,1,5 ;TURN OBJ. 5 ON;
- SHOW ;(IT WASN'T DOODLED).THIS CHECKS
- ;TO SEE IF FELIX-'NULLOBJ' NULLED ALL
- ;THE OBJECTS OUT AS IT SPOZED TO.
- ONLIST 1,1
- SHOW
- NEWBACK 0
- SHOW
- POSIT 1,20,20 ;CENTER OBJECT 1
- SHOW
- FLY 1,10,10
- SHOW ;CHECK OUT OPS ONE BY ONE....
- SPIN 1,2
- SHOW
- SETANGL 1,0
- SHOW
- DIST 1,2,!SWREG ;SHOW DIST RESULTS.
- WHERE 1,R1,R2
- BACKGRND 1
- SHOW
- FLY 1,-10,-20
- SHOW
- PUT %10,%10,#RED
- GET %10,%10,!SWREG
- SHOW
- DELAY 0 ;SPEED US BACK UP.
- ;
- PRINT SCALEMSG
- RESTRY: RESCALE JS1X,?SWREG
- RESCALE JS1Y,?SWREG
- FLY 1,?JS1X,?JS1Y
- SHOW
- COMP ?BUTTONS,0
- JZ RESTRY
- ;
- RECOLOR 1,9 ;IT OUGHTA TURN RED HERE.
- PUT %10,%10,#RED
- GET %10,%10,R1 ;I OUGHTA CHECK THESE BUT
- OBJW 9,5,0 ;AM SIMPLY OUT OF TIME.
- OBJW 9,5,R1
- PRINT HOORAY
- HALT
- ;
- SCALEMSG: DB "WIGGLE JOYSTICK & SET SCALE IN SWITCHES.",CR,LF
- DB "HIT ANY BUTTON TO END.",CR,LF,STOP
- ;
- HOORAY: DB "FELIX HAS PASSED ALL THE TESTS.",CR,LF,STOP
- END
-