source: trunk/lisp/lmcons/lmtv.lisp @ 214

Last change on this file since 214 was 214, checked in by rjs, 7 years ago

Update.

File size: 9.0 KB
Line 
1;;; -*- Mode: LISP; Package: CADR -*-
2;;;Random declarations, etc.
3;(DECLARE (EVAL (READ)))
4;(PROGN (LOAD '(MACROS > DSK LISPM))
5;       (LOAD '(DEFMAC FASL DSK LISPM2))
6;       (LOAD '(LMMAC > DSK LISPM2)))
7;
8;(DECLARE (EVAL (READ)))
9;       (DEFUN **STRING** MACRO (X) `',(CADR X)) ;Bubbles in my brain
10;
11;(INCLUDE ((LMCONS)CADMAC >))
12;
13;(DECLARE (FIXNUM I J K M N NBITS BITNO REGADR PPSS SHIFT RELAD)
14;        (SPECIAL CC-SUSPECT-BIT-LIST CC-DIAG-TRACE CC-TEST-ADR-BARFED)
15;        (FIXNUM (CC-SYNC-E FIXNUM)(PHYS-MEM-READ FIXNUM))
16;        (MUZZLED T))   ;WHY?
17
18;(DEFMACRO LOGAND* (&REST X) `(BOOLE 1 . ,X))
19
20;(DEFMACRO LOGXOR* (&REST X) `(BOOLE 6 . ,X))
21
22;;;Subrs for data path diagnostics (which don't work)
23
24(DEFUN CC-SYNC-E (ADR)
25        (PHYS-MEM-WRITE 17377762 ADR)
26        (LDB 0010 (PHYS-MEM-READ 17377761)))
27
28(DEFUN CC-SYNC-D (ADR DATA)
29        (PHYS-MEM-WRITE 17377762 ADR)
30        (PHYS-MEM-WRITE 17377761 DATA))
31
32(DEFUN E (ADR) (PHYS-MEM-READ ADR))
33(DEFUN D (ADR DATA) (PHYS-MEM-WRITE ADR DATA))
34(DEFUN S NIL (DBG-PRINT-STATUS) (DBG-RESET-STATUS))
35
36(DECLARE (SPECIAL TV TVB PTR SYNC VSP COLOR BOW SYNC-525))
37
38(SETQ   TVB 17000000            ;TV REGISTER
39        TV 17377760             ;control register
40        PTR 17377761            ;sync program address
41        SYNC 17377762           ;sync program memory
42        VSP 17377763            ;vertical spacing <0:6>, enable-sync
43        COLOR 17377764)         ;Color value <15:8>, Color sel <7:6>, <5:4>,
44                                ;  Color # <3:0>
45(DEFUN TV-FILL (L)
46  (PHYS-MEM-WRITE VSP 0)                ;RESET SYNC
47  (TV-FILL-1 0 L))
48
49(DEFUN TV-FILL-1 (I L)
50   (DO ((L L (CDR L))
51        (X))
52       ((NULL L) I)
53       (SETQ X (CAR L))
54       (COND ((ATOM X) (CC-SYNC-D I X) (SETQ I (1+ I)))
55             (T (DO N (CAR X) (1- N) (ZEROP N)
56                    (SETQ I (TV-FILL-1 I (CDR X))))))))
57
58(DEFUN TV-VERIFY (L)
59  (TV-VERIFY-1 0 L))
60
61(DEFUN TV-VERIFY-1 (I L)
62   (DO ((L L (CDR L))
63        (TEM)
64        (X))
65       ((NULL L) I)
66       (SETQ X (CAR L))
67       (COND ((ATOM X) (COND ((NOT (= (SETQ TEM (CC-SYNC-E I)) X))
68                              (TERPRI)
69                              (PRIN1 I) (TYO 11)
70                              (PRIN1 TEM)
71                              (PRINC '|, should be |)
72                              (PRIN1 X)))
73                       (SETQ I (1+ I)))
74             (T (DO N (CAR X) (1- N) (ZEROP N)
75                    (SETQ I (TV-VERIFY-1 I (CDR X))))))))
76
77
78(DEFUN TV-DUMP (START N)
79       (DO ((I START (1+ I))
80            (N N (1- N)))
81           ((ZEROP N))
82           (format t "~%~O      ~O" I (CC-SYNC-E I))))
83
84(DEFUN TV-FIND (WRD MASK)
85   (DO I 0 (1+ I) (= I 4096.)
86       (COND ((= WRD (LOGAND MASK (CC-SYNC-E I)))
87              (TERPRI)
88              (PRIN1 I)
89              (TYO 11)
90              (PRIN1 (LOGAND (CC-SYNC-E I) 377))))))
91
92;Takes function to generate pattern
93
94(DECLARE (SPECIAL TV-TEST-SIZE))
95(SETQ TV-TEST-SIZE 10000)
96
97(DEFUN TV-TEST (FCN)
98   (DECLARE (FIXNUM I TVB FCN LIM TEM TV-TEST-SIZE))
99   (PROG (LIM TEM)
100         (SETQ LIM (+ TVB TV-TEST-SIZE))
101         (DO I TVB (1+ I) (>= I LIM)
102           (PHYS-MEM-WRITE I (BOOLE FCN I 0)))
103;        (DO ((I TVB (1+ I)))
104;            ((>= I LIM))
105;            (COND ((NOT (= (SETQ TEM (LOGAND 37777777 (PHYS-MEM-READ I)))
106;                           (LOGAND 37777777 (BOOLE FCN I 0))))
107;                   (TERPRI)
108;                   (PRIN1 I) (TYO 11)
109;                   (PRIN1 TEM)
110;                   (PRINC '|, should be |)
111;                   (PRIN1 (BOOLE FCN I 0)))))
112)
113)
114
115(DEFUN TESTR ()
116       (TV-TEST 0)
117       (TV-TEST 17)
118       (TV-TEST 5)
119)
120
121
122;;Routine to write 2 16. bits into DBG interface Phys mem
123
124(defun lmtv-phys-mem-write (xbus-loc lh rh)
125   ((lambda (ubus-loc)
126        (dbg-write ubus-loc rh)
127        (dbg-write (+ ubus-loc 2) lh))
128    (dbg-setup-unibus-map 0 xbus-loc)))
129
130(defun tv-copy (&optional (n 100000))
131   (let ((tv-array (screen-buffer-halfword-array tv-default-screen)))
132      (let ((length (max n (array-length tv-array))))
133           (do ((i 0 (+ i 2))
134                (tv-loc tvb (+ tv-loc 1)))
135               (( i length))
136               (lmtv-phys-mem-write tv-loc
137                      (ar-1 tv-array (1+ i))
138                      (ar-1 tv-array i))))))
139
140;sync program bits
141;1  HSYNC
142;2  VSYNC
143;4  COMPOSITE - (not used really, encode on HSYNC)
144;10  BLANKING
145;     0  PROC CYC
146;     20  REFRESH
147;     40  INC TVMA
148;     60  STEP TVMA
149;     0    --
150;     100  CLR TVMA
151;     200  EOL
152;     300  EOP
153
154;;Sync program for Motorola M4408 monitor
155;; 30.5kHz horizontal, interlaced.
156;; Assuming Mode 1, 31.75 Mhz video rate
157;; Each sync cycle is 16 bit times, or 504 ns.
158;; Therefore one line is 66 sync cycles.
159;; Approx vertical screen dimensions:
160;;  22 lines blanking   760 usec
161;;  480 lines visible   15.7 ms
162;;  6.5 lines blank     160 usec.
163;; Approx horizontal screen dimensions:
164;;   Retrace       12 sync cycles
165;;   Left Margin   3 sync cycles
166;;   Visible:      48 sync cycles
167;;   Right Margin  3 sync cycles
168;;                 --------------
169;;   Line          66 sync cycles     32.8 usec.
170
171
172(DECLARE (SPECIAL SYNC-M4408))
173;;use with Mode 1, Vertical Space of 12.
174(setq SYNC-M4408 '(
175   3 (2. 33) (6. 13) (4. 12) (3. 12) (12. 12 12 12 12) 12 212 112       ;vert sync, clr tvma
176   11. (2. 31) (6. 11) (4. 10) (3. 10) (12. 10 10 10 10) 10 210 10      ;vert blank
177   8. (2. 31) (6. 11) (4. 10) (1. 0) (12. 0 0 0 0) 0 0 0 200 0        ;visible, step 1 line
178   255. (2. 31) (6. 11) (4. 10) (1. 0) (12. 40 0 0 0) 0 0 0 260 0     ;visible, step 1 line
179   225.  (2. 31) (6. 11) (4. 10) (1. 0) (12. 40 0 0 0) 0 0 0 260 0      ;visible, step 1 line
180   6. (2. 31) (6. 11) (4. 10) (3. 10) (12. 10 10 10 10) 10 210 10       ;vert blank
181   ;;second field
182   1 (2. 31) (6. 11) (25. 10) (31. 12) 212 112                          ;vert sync, clr tvma
183   2 (2. 33) (6. 13) (56. 12) 212 12                                    ;vert sync, step tvma
184   1 (2. 33) (6. 13) (24. 12) (32. 10) 210 70                           ;vert sync, clr tvma
185   11. (2. 31) (6. 11) (4. 10) (3. 10) (12. 10 10 10 10) 10 210 10      ;vert blank
186   8. (2. 31) (6. 11) (4. 10) (1. 0) (12. 0 0 0 0) 0 0 0 200 0        ;visible, step 1 line
187   255. (2. 31) (6. 11) (4. 10) (1. 0) (12. 40 0 0 0) 0 0 0 260 0     ;visible, step 1 line
188   225.  (2. 31) (6. 11) (4. 10) (1. 0) (12. 40 0 0 0) 0 0 0 260 0      ;visible, step 1 line
189   6. (2. 31) (6. 11) (4. 10) (3. 10) (12. 10 10 10 10) 10 310 10       ;vert blank
190))
191
192
193
194;Sync program for 525 line mode
195; (assume 60 MHz clock for now, 94. sync intervals = 63.5 usec. )
196
197;WITH INVERTED HORIZONTAL SYNC (ENCODED AS COMPOSITE)
198(SETQ SYNC-525 '(
199   1 (5 30) (42. 11) (5 10) (40. 11) 211 111            ;equalizing pulses, clr-tvma
200   2 (5 30) (42. 11) (5 10) (40. 11) 211 11             ;equalizing pulses
201   3 (5 32) (37. 12) (5 13) (42. 12) (3 13) 213 13      ;vert sync
202   3 (5 30) (42. 11) (5 10) (40. 11) 211 11             ;equalizing pulses
203   13. (5 30) (5 10) (82. 11) 211 11                    ;vert retrace
204   240. (5 30) (5 10) (8. 41 (7 1))(1. 61 (7 1)) (10. 1) 201 1  ;12 mhz video, 9x64 bits
205;   240. (5 30) (5 10) (35. 41 1) (1. 61  1) (10. 1) 201 1      ;12 mhz video, 9x64 bits
206   1 (5 30) (42. 11) (5 10) (40. 11) 211 111            ;equalizing pulses, clr-tvma
207   2 (5 30) (42. 11) (5 10) (40. 11) 211 11             ;equalizing pulses
208   1 (5 30) (42. 11) (42. 12) (3 13) 213 73             ;extra 1/2 line, step-tvma
209   2 (5 32) (37. 12) (5 13) (42. 12) (3 13) 213 13      ;vert sync
210   1 (5 32) (37. 12) (5 13) (5 10) (40. 11) 211 11      ;1/2 vert sync, equalizing pulses
211   3 (5 30) (42. 11) (5 10) (40. 11) 211 11             ;equalizing pulses
212   13. (5 30) (5 10) (82. 11) 211 11                    ;vert retrace
213   240. (5 30) (5 10) (8. 41 (7 1))(1. 61 (7 1)) (10. 1) 301 1  ;12 mhz video, 9x64 bits
214;   240. (5 30) (5 10) (35. 41 1) (1. 61  1) (10. 1) 301 1      ;12 mhz video, 9x64 bits
215   (30 1)))                                             ;guard
216
217(SETQ SYNC-IDLE '(
218   5 (2 20) (4 0) 300 0))       ;2 refresh, 6 processor cycles
219
220;Assume 60MHZ bit clock, therefore 15Mhz (66.7 ns) TTL clock, 533ns SYNC clk
221; 30. sync clks per line, 10. for horz sync,
222;41.6 lines for 666 usec vertical
223;1037 lines per 16.66 ms frame
224
225
226(DECLARE (SPECIAL SYNC-CPT SYNC-CPT1))
227
228; 640. X 896.
229(SETQ SYNC-CPT '(
230   1.  (2 33) (8 13) (18. 12) 212 112
231   45.  (2 33) (8 13) (18. 12) 212 12
232   8.  (2 33)  (6 13) 13 12 (18. 2) 202 2
233   255. (2 31) (6 11) 11 50 (9. 0 40) 200 0
234   255. (2 31) (6 11) 11 50 (9. 0 40) 200 0
235   255. (2 31) (6 11) 11 50 (9. 0 40) 200 0
236   131. (2 31) (6 11) 11 50 (9. 0 40) 200 0
237   8. (2 31) (6 11) 11 10 (8. 0 0) 0 0 300 0
238))
239
240;704. x 896.
241(SETQ SYNC-CPT1 '(
242   1.  (1 33) (5 13) 12 12 (10. 12 12) 212 113                  ;VERT SYNC, CLEAR TVMA
243   53.  (1 33) (5 13) 12 12 (10. 12 12) 212 13                  ;VERT RETRACE
244   8.  (1 31)  (5 11) 11 10 (10. 0 0) 200 21            ;8 LINES OF MARGIN
245   255. (1 31) (5 11) 11 50 (10. 0 40) 200 21
246   255. (1 31) (5 11) 11 50 (10. 0 40) 200 21
247   255. (1 31) (5 11) 11 50 (10. 0 40) 200 21
248   131. (1 31) (5 11) 11 50 (10. 0 40) 200 21
249   7. (1 31) (5 11) 11 10 (10. 0 0) 200 21
250   1. (1 31) (5 11) 11 10 (10. 0 0) 300 23
251))
252   
253(SETQ SYNC-CPT-CONRAC '(
254   42.  (2 30) (8 10) (18. 11) 211 11
255   255. (2 32) (7 12) 12 53 (8. 3 43) 3 243 3
256   255. (2 32) (7 12) 12 53 (8. 3 43) 3 243 3
257   255. (2 32) (7 12) 12 53 (8. 3 43) 3 243 3
258   231. (2 32) (7 12) 12 53 (8. 3 43) 3 343 3
259))
260
261(DEFUN CPT ()
262    (PHYS-MEM-WRITE VSP 0)
263    (TV-FILL SYNC-CPT)
264    (TV-VERIFY SYNC-CPT)
265    (PHYS-MEM-WRITE TV (+ (LSH BOW 2) 0))
266    (PHYS-MEM-WRITE VSP 200))
267
268(DEFUN M4408 ()
269    (PHYS-MEM-WRITE VSP 0)
270    (TV-FILL SYNC-M4408)
271    (TV-VERIFY SYNC-M4408)
272    (PHYS-MEM-WRITE TV (+ (LSH BOW 2) 1))
273    (PHYS-MEM-WRITE VSP 214))
274
275(SETQ BOW 0)
276
277(DEFUN OLD-TV (RELOAD)
278    (PHYS-MEM-WRITE VSP 0)                                      ;DISABLES SYNC PULSES
279    (COND (RELOAD (TV-FILL SYNC-525)
280                  (TV-VERIFY SYNC-525)))
281    (PHYS-MEM-WRITE TV (+ (LSH BOW 2) 2))
282    (PHYS-MEM-WRITE VSP 211)                            ;Re-enable, 9 word step
283)
284   
Note: See TracBrowser for help on using the repository browser.