home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpmug
/
cpmug035.ark
/
CHECKOUT.FAS
< prev
next >
Wrap
Text File
|
1984-04-29
|
4KB
|
150 lines
; 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