File TV14.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/	TV

/	PS8 SCOPE DEVICE HANDLER
/	FOR A PDP-12.

/	SEPTEMBER, 1971

/	MARIO DENOBILI, P?S

/	THIS ROUTINE WAS WRITTEN VERY HASTILY.

/	THE FOLLOWING FEATURES SHOULD BE PUT
/	IN, BUT I WAS TOO LAZY TO DO SO.
/	WITH A FEW HOURS WORK, A COMPETENT
/	PROGRAMMER SHOULD BE ABLE TO
/	COMPACT MY HASTY CODE AND EASILY ADD
/	AT LEAST A FEW OF THE FOLLOWING
/	FEATURES.

/1.	TABS SHOULD BE HANDLED CORRECTLY.

/2.	FORM FEEDS SHOULD SIGNAL A NEW
/	SCOPE PAGE. [BRANCH TO LOCATION 'FULL']

/3.	VERTICAL TABS SHOULD BE TREATED AS
/	7 LINE FEEDS.

/4.	RUBOUTS SHOULD BE IGNORED.

/5.	THE BUG THAT THE FIRST CHARACTER ON A
/	NEW SCOPE PAGE MIGHT DUPLICATE ONE
/	SHOWN ON THE LAST PAGE SHOULD BE FIXED.

/6.	IF THE BUFFER OVERLAPS THE BETA REGISTER,
/	THIS SHOULD NOT CAUSE A CRAPPY 
/	CHARACTER TO BE DISPLAYED.

/7.	CTRL/Z SHOULD BE CHECKED FOR AND SIGNIFY
/	END OF BUFFER. [BRANCH TO 'FULL' WITH
/	LINK 0]

/8.	THE DISPLAY ALGORITHM SHOULD BE IMPROVED
/	SO THAT THERE IS LESS FLICKER.

/9.	OBSOLETE

/10.	THE RESTRICTION THAT THE USER'S BUFFER 
/	START AT AN EVEN ADDRESS IS USELESS
/	AND SHOULD BE REMOVED.

/11.	THE KEYBOARD FLAG SHOULD BE CLEARED
/	THE FIRST TIME THE ROUTINE IS ENTERED.

/12.	THE STATUS OF THE SPECIAL FUNCTIONS
/	REGISTER SHOULD BE SAVED AND RESTORED
/	BEFORE EXITING.

/13.	THE PROGRAM SHOULD TEST FOR CTRL/C
/	WHICH SHOULD SIGNIFY RETURN TO MONITOR.

/14.	THE PROGRAM SHOULD TEST TO SEE IF THE
/	USER IS TRYING TO READ FROM THE SCOPE
/	BY MISTAKE AND SIGNAL AN ERROR.

/15.	SENSE SWITCH 0 SHOULD BE USED TO 
/	SPECIFY SMALL OR LARGE SIZE CHARACTERS.


/ TV FIELD 0 / PS/8 BUILD HEADER BLOCK *0 -1 DEVICE VR12;DEVICE TV;1300;4013;ZBLOCK 2 ORIGIN=200 / TWO PAGE SCOPE DEVICE HANDLER / PAGE INDEPENDENT AND REUSABLE LINC=6141 SCR=340 SAM=100 PDP=2 ESF=4 CLR=11 *ORIGIN L70, 70 LOC, 0 /CAN'T USE - POSSIBLE BETA REGISTER LINKNT, TAD LOC /COUNT OF # OF LINES YCOORD, AND L6141 /DISPLAY ORDIANTE BETA, DCA . /8-MODE ADDRESS OF BETA REGISTER 1 SAVE, TAD LOC /HOLDS PREVIOUS CONTENTS OF BETA REGISTER 1 BUFEND, TAD CBASE /END OF BUFFER BPTR, DCA CBASE /POINTS INTO BUFFER BUFFER, TAD X /BEGINNING OF BUFFER T1, DCA BEGIN /TEMPORARY L7410, SKP
SCOPE, 0 BEGIN, JMS LOC /WARNING: ADDRESS OF BEGIN MUST BE EVEN /WITH BITS 5 AND 6 ZERO AND L70 /GET DATA FIELD OF BUFFER TAD KCDF DCA XCDF TAD XCDF /INTO TWO PLACES DCA SCDF RDF /GET DATA FIELD TAD FULL DCA XCIF X, TAD I SCOPE /GET FUNCTION WORD AND L7700 /GET # OF PAGES ISZ SCOPE CLL RAL SNA JMP OVERX TAD I SCOPE /ADD IN BUFFER START DCA BUFEND /TO GET END OF BUFFER TAD I SCOPE /GET BUFFER START DCA BUFFER /[RESTRICTION: IT MUST BE EVEN] CDF 0 TAD I BETA DCA SAVE /SAVE CONTENTS OF BETA REGISTER
L7700, SMA CLA /USED ONLY TO CLEAR AC L26, 26 /IN CASE OF SKIP NEW, LINC /ENTER LINC MODE ESF /SMALL CHARS SAM 0 /GET KNOB 0 SCR 4 /MAKE KNOB MORE SIGNIFICANT PDP /BACK TO 8 MODE DCA LINKNT DCA I BETA /GO TO LEFT MARGIN XCDF, HLT /SET CORRECT DF TAD BUFFER DCA BPTR /POINT TO BEGIN OF BUFFER TAD YINIT DCA YCOORD /GO TO TOP OF SCREEN LOOP, TAD I BPTR AND L7410 DCA T1 /GET LEFT HALF OF CHAR 3 TAD I BPTR JMS DISP /DISPLAY CHAR 1 OF 3 ISZ BPTR TAD I BPTR JMS DISP /DISPLAY CHAR 2 OF 3 TAD I BPTR AND L7410 CLL RTR LINEND, RTR /GET RIGHT HALF OF CHAR 3 TAD T1 CLL RTR RTR JMS DISP /DISPLAY CHAR 3 OF 3 ISZ BPTR TAD BPTR CMA CLL /COMPARE BUFFER POINTER TAD BUFEND /WITH BUFFER END. SZL CLA /AT END OF BUFFER? JMP LOOP /NO FULL, CIF CDF 0 /YES KSF /GO TO NEXT SCOPE PAGE? JMP L7700 /NO, REFRESH DCA BUFFER /GET NEW BUFFER 'START' KCC /YES SZL /END OF BUFFER ? JMP NEW /NO, REFRESH TAD SAVE DCA I BETA /RESTORE BETA REGISTER OVERX, CLA STL RAL IAC /ADD 3 TAD SCOPE /TO RET ADDRESS DCA SCOPE XCIF, HLT /RESTORE INSTRUCTION FIELD & DATA FIELD JMP I SCOPE /LEAVE
DISP, 0 KCDF, CDF 0 YINIT, AND L177 TAD M40 /<40 ? SPA JMP UGH /YES CLL RAL MAGIC, TAD CBASE /ADD IN BASE ADDR DCA RIGHT /GET DISPLAY BIT PATTERN PTR TAD I RIGHT DCA LEFT /GET LEFT HALF OF DISPLAY BITS ISZ RIGHT TAD I RIGHT DCA RIGHT /GET RIGHT HALF TAD YCOORD /PUT ORDINATE IN AC L6141, LINC YINC, 1760 /DSC I LEFT, 0 /DISPLAY LEFT HALF 1760 /DSC I RIGHT, 0 /DISPLAY RIGHT HALF CLR PDP ISZ I BETA /LEAVE A BISSEL SPACE TAD I BETA /GET ABSCISSA TAD LINEND /COMPARE WITH RIGHT MARGIN M40, SMA SZA CLA /AT RIGHT EDGE OF SCREEN? JMP NEWLIN /YES, GO TO NEXT LINE SCDF, HLT /NO, SET PROPER DF JMP I DISP /RETURN UGH, TAD L26 /CHECK FOR LINE FEED SZA CLA JMP MAGIC /OTHER CONTROL CHARS PRINT BLNK NEWLIN, DCA I BETA /BACK TO LEFT MARGIN TAD YCOORD TAD YINC DCA YCOORD /MOVE DOWN TO NEXT LINE ISZ LINKNT /AT BOTTOM OF SCREEN? JMP SCDF /NO CLL CLA CMA RAL /TAKE QUOT ON DIV BY 2 AND BPTR /AND LEAVE IN AC JMP FULL /ALSO SET LINK CBASE, CHRTBL-BEGIN-1 L177, 177
*ORIGIN+200 /THE TABLE OF PATTERN WORDS BEGINS HERE CHRTBL, 0000; 0000 /SPACE 7500; 0000 /! 7000; 0070 /" 7714; 1477 /# 5721; 4671 /$ 6661; 4333 /% 5166; 0526 /& 0000; 0070 /' 3600; 0041 /( 4100; 0036 /) 2050; 0050 /* 0404; 0437 /+ 0500; 0006 /, 0404; 0404 /- 0001; 0000 /. 0601; 4030 // 4536; 3651 /0 2101; 0177 /1 4523; 2151 /2 4122; 2651 /3 2414; 0477 /4 5172; 0651 /5 1506; 4225 /6 4443; 6050 /7 5126; 2651 /8 5122; 3651 /9 2200; 0000 /: 4601; 0000 /; 2410; 0042 /< 1212; 1212 /= 4200; 1024 /> 4020; 2055 /? 4136; 3656 /@ 4477; 7744 /A 5177; 2651 /B 4136; 2241 /C 4177; 3641 /D 4577; 4145 /E 4477; 4044 /F 4136; 2645 /G 1077; 7710 /H 7741; 0041 /I 4142; 4076 /J 1077; 4324 /K 0177; 0301 /L 3077; 7730 /M 3077; 7706 /N 4177; 7741 /O 4477; 3044 /P 4276; 0376 /Q 4477; 3146 /R 5121; 4651 /S 4040; 4077 /T 0177; 7701 /U 0176; 7402 /V 0677; 7701 /W 1463; 6314 /X 0770; 7007 /Y 4543; 6151 /Z 4177; 0000 /[ 3040; 0106 /\ 0000; 7741 /] 2000; 2076 /^ 1604; 0404 /_ $
LINE SCD



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search