!to "test_screen.prg", cbm *=$c000 jmp test_save_orig ; SYS 49152 jmp test_restore_orig ; SYS 49155 ; Kernalroutinen jmp test_set_start_of_line ; SYS 49158 jmp test_clear_screen_line ; SYS 49161 jmp test_clear_screen_1 ; SYS 49164 jmp test_clear_screen_2 ; SYS 49167 jmp test_home_cursor ; SYS 49170 jmp test_move_a_screen_line ; SYS 49173 jmp test_scroll_1 ; SYS 49176 jmp test_scroll_2 ; SYS 49179 jmp test_backscroll_1 ; SYS 49182 jmp test_backscroll_2 ; SYS 49185 jmp test_goto_next_line_1 ; SYS 49188 jmp test_goto_next_line_2 ; SYS 49191 jmp test_perform_return ; SYS 49194 jmp test_goto_prev_line_1 ; SYS 49197 jmp test_goto_prev_line_2 ; SYS 49200 jmp test_perform_backreturn ; SYS 49203 jmp test_advance_cursor_1 ; SYS 49206 jmp test_advance_cursor_2 ; SYS 49209 jmp test_back_cursor_1 ; SYS 49212 jmp test_back_cursor_2 ; SYS 49215 jmp test_delete_char_1 ; SYS 49218 jmp test_delete_char_2 ; SYS 49221 jmp test_insert_char_1 ; SYS 49224 jmp test_insert_char_2 ; SYS 49227 jmp test_setup_screen_print ; SYS 49230 ; Test der Routine output_to_screen bzw. ; unshifted_chars und shifted_chars jmp test_output_registers ; SYS 49233 jmp test_unshifted_chars ; SYS 49236 jmp test_shifted_chars ; SYS 49239 jmp test_return ; SYS 49242 jmp test_shift_return ; SYS 49245 jmp test_move_crsr ; SYS 49248 jmp test_clear ; SYS 49251 jmp test_revers ; SYS 49254 jmp test_colors ; SYS 49257 jmp test_delete ; SYS 49260 jmp test_insert ; SYS 49263 jmp test_unknown ; SYS 49266 ; weitere Kernalroutine jmp test_put_row_col ; SYS 49269 ; Hilfsfunktion jmp test_set_wptrs ; SYS 49272 jmp test_set_default ; SYS 49275 ; Funktionen jmp test_winit_wquit ; SYS 49278 jmp test_wsplit_1 ; SYS 49281 jmp test_wsplit_2 ; SYS 49284 jmp test_wswitch ; SYS 49287 jmp test_wsplit_3 ; SYS 49290 jmp test_wsplit_4 ; SYS 49293 jmp test_wunsplit ; SYS 49296 jmp test_hcopy_1 ; SYS 49299 jmp test_hcopy_2 ; SYS 49302 !source "screen.a" ;#################################################################### ;# ;# Makros ;# ;#################################################################### ; Richtet ein Fenster ein ; Parameter: Start bei Zeilennummer, Anzahl Zeilen, ; aktuelle Spalte und Zeile !macro set_win_params .start, .rows, .col, .row { lda #wptrs_scr + .start*2 sta wptrs+1 lda #.rows sta wrows lda #.col sta wx lda #.row sta wy } ;#################################################################### ;# ;# Hilfsroutinen ;# ;#################################################################### ; Die ersten 6 Zeilen mit roten "B" fuellen fill_lines ldy #0 lda #2 - sta $0400,y sta $d800,y iny cpy #6 * 40 bcc - rts ; Erste und letzte Spalte des Fensters mit ; fortlaufenden Ziffern beginnend bei 0 fuellen ; (das Farb-RAM wird nicht veraendert) fill_scroll_win lda wy ; wy sichern pha lda #0 ; in der ersten Zeile beginnen sta wy - jsr set_start_of_line ; $d1/$d2 (wlnp) setzen lda wy ; Ziffern beginnend ab '0'; chr(wy+48) clc adc #$30 ldy #0 ; in die erste Spalte sta (wlnp),y ldy #COLS ; in die letzte Spalte sta (wlnp),y inc wy ; wy erhoehen lda wy ; Abbruchbedingung wy > wrows cmp wrows bcc - beq - pla ; wy wieder herstellen sta wy rts ; Bildschirmzeile mit 40 verschiedenen Zeichen in ; wechselnden Farben fuellen fill_move_line jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr sync_color_ptr ; $f3/$f4 (wclnp) setzen ; Hintergrundfarbe ermitteln und zwischenspeichern lda $d021 and #$0f sta $0334 ; unbenutzte Speicherstelle ; Bildschirmzeile fuellen ldy #39 ; Bildschirmcode 39 bis 0 verwenden - tya sta (wlnp),y and #$0f ; die unteren 4 Bits als Farbe verwenden cmp $0334 ; es sei denn, es ist die Hintergrundfarbe bne + lda $0286 ; in diesem Fall die Textfarbe verwenden + sta (wclnp),y dey bpl - rts ; Speichert die Fensterparameter in den Vergleichswerten ab save_wlnp_wx_wy lda wlnp sta vals lda wlnp+1 sta vals+1 lda wx sta vals+2 lda wy sta vals+3 rts ; Teilt den Bildschirm und speichert die Vergleichswerte ab ; (wy muss von der aufrufenden Routine gesetzt werden) split_screen jsr set_screen_pointers jsr wsplit jsr save_wlnp_wx_wy lda wrows sta vals+4 lda sptrs sta vals+5 lda sptrs+1 sta vals+6 lda srows sta vals+7 lda sx sta vals+8 lda sy sta vals+9 rts ;#################################################################### ;# ;# Testroutinen ;# ;#################################################################### ; Ruft die Routine zur Sicherung der Originaldaten auf test_save_orig jsr save_orig lda #sav_scrzp sta vals+1 lda #sav_outptr sta vals+3 lda #sav_color sta vals+5 lda #sav_invers sta vals+7 rts test_restore_orig jsr save_orig +set_win_params 0, 24, 20, 7 jsr restore_orig rts ; Richtet ein Fenster ueber den gesamten Bildschirm ein ; und setzt den Cursor in die 8. Zeile (Zeilennummer 7) test_set_start_of_line jsr save_orig +set_win_params 0, 24, 0, 7 jsr set_start_of_line lda wlnp sta vals lda wlnp+1 sta vals+1 jsr restore_orig rts ; Richtet ein Fenster mit 6 Zeilen ein und loescht die ; 4. Zeile (Zeilennummer 3); test_clear_screen_line jsr save_orig jsr fill_lines +set_win_params 0, 5, 0, 3 jsr clear_screen_line lda $0286 sta vals jsr restore_orig rts ; Richtet ein Fenster mit 5 Zeilen ein und loescht es test_clear_screen_1 jsr save_orig jsr fill_lines +set_win_params 0, 4, 0, 0 jsr clear_screen jsr restore_orig rts ; Richtet ein Fenster mit 1 Zeile ein und loescht es. ; Das Fenster beginnt in der 3. Bildschirmzeile. test_clear_screen_2 jsr save_orig jsr fill_lines +set_win_params 2, 0, 0, 0 jsr clear_screen jsr restore_orig rts ; Platziert den Cursor oben/links (ausgehend von einer ; Position mitten im Fenster) test_home_cursor jsr save_orig +set_win_params 0, 5, 10, 4 jsr home_cursor jsr save_wlnp_wx_wy jsr restore_orig rts ; Fuellt die 3. Zeile (Zeilennummer 2) mit Zeichen ; unterschiedlicher Farbe und kopiert diese Zeile ; dann zwei Zeilen nach unten test_move_a_screen_line jsr save_orig +set_win_params 0, 7, 0, 2 jsr fill_move_line ; $d1/$d2 (wlnp) und $f3/$f4 (wclnp) bereits ; durch fill_move_line gesetzt ; $ac/$ad (tptr1) zwei Zeilen tiefer setzen lda wlnp clc adc #80 sta tptr1 lda wlnp+1 adc #0 sta tptr1+1 jsr move_a_screen_line jsr restore_orig rts ; Richtet ein Fenster mit 5 Zeilen ein, in dem in der ersten ; und letzten Spalte fortlaufend Ziffern beginnend mit null ; stehen und scrollt das Fenster. Das Farb-RAM wird dabei ; nicht veraendert. test_scroll_1 jsr save_orig jsr fill_lines +set_win_params 0, 4, 0, 4 jsr clear_screen jsr fill_scroll_win jsr scroll_screen lda wy sta vals jsr restore_orig rts ; Richtet ein Fenster mit einer Zeile ein, in der in der ersten ; und letzten Spalte fortlaufend eine Null steht und scrollt das ; Fenster. Das Farb-RAM wird dabei nicht veraendert. test_scroll_2 jsr save_orig jsr fill_lines +set_win_params 0, 0, 0, 0 jsr clear_screen jsr fill_scroll_win jsr scroll_screen jsr restore_orig rts ; Richtet ein Fenster mit 5 Zeilen ein, in dem in der ersten ; und letzten Spalte fortlaufend Ziffern beginnend mit null ; stehen und scrollt das Fenster rueckwaerts. Das Farb-RAM ; wird dabei nicht veraendert. Das Fenster beginnt in der ; 2. Bildschirmzeile. test_backscroll_1 jsr save_orig jsr fill_lines +set_win_params 1, 4, 0, 0 jsr clear_screen jsr fill_scroll_win jsr backscroll_screen lda wy sta vals jsr restore_orig rts ; Richtet ein Fenster mit einer Zeile ein, in der in der ersten ; und letzten Spalte fortlaufend eine Null steht und scrollt das ; Fenster. Das Farb-RAM wird dabei nicht veraendert. Das Fenster ; beginnt in der 6. Bildschirmzeile. test_backscroll_2 jsr save_orig jsr fill_lines +set_win_params 5, 0, 0, 0 jsr clear_screen jsr fill_scroll_win jsr backscroll_screen jsr restore_orig rts ; Bewegt den Cursor von der 3. zur 4. Zeile ; (Zeilennummer 2 nach 3) test_goto_next_line_1 jsr save_orig +set_win_params 0, 5, 0, 2 jsr fill_scroll_win jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr go_to_next_line lda wlnp sta vals lda wlnp+1 sta vals+1 lda wy sta vals+2 jsr restore_orig rts ; Bewegt den Cursur von der letzten Zeile (Zeilennummer 5) ; aus eine Zeile nach unten (mit Scrolling). test_goto_next_line_2 jsr save_orig +set_win_params 0, 5, 0, 5 jsr fill_scroll_win jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr go_to_next_line lda wlnp sta vals lda wlnp+1 sta vals+1 lda wy sta vals+2 jsr restore_orig rts ; Fuehrt in der 3. Zeile (Zeilennummer 2) einen Zeilenumbruch ; durch (der Cursor steht mitten in der Zeile) test_perform_return jsr save_orig +set_win_params 0, 5, 10, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr perform_return jsr save_wlnp_wx_wy jsr restore_orig rts ; Bewegt den Cursor von der 4. zur 3. Zeile ; (Zeilennummer 3 nach 2) test_goto_prev_line_1 jsr save_orig +set_win_params 0, 5, 0, 3 jsr fill_scroll_win jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr go_to_prev_line lda wlnp sta vals lda wlnp+1 sta vals+1 lda wy sta vals+2 jsr restore_orig rts ; Bewegt den Cursur von der ersten Zeile (Zeilennummer 0) ; aus eine Zeile nach oben (mit Scrolling) test_goto_prev_line_2 jsr save_orig +set_win_params 0, 5, 0, 0 jsr fill_scroll_win jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr go_to_prev_line lda wlnp sta vals lda wlnp+1 sta vals+1 lda wy sta vals+2 jsr restore_orig rts ; Fuehrt in der 3. Zeile (Zeilennummer 2) einen ; rueckwaertigen Zeilenumbruch durch (der Cursor ; steht mitten in der Zeile) test_perform_backreturn jsr save_orig +set_win_params 0, 5, 10, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr perform_backreturn jsr save_wlnp_wx_wy jsr restore_orig rts ; Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) ; von einer Position inmitten der Zeile um eins nach ; rechts test_advance_cursor_1 jsr save_orig +set_win_params 0, 5, 20, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr advance_cursor jsr save_wlnp_wx_wy jsr restore_orig rts ; Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) ; von der letzten Position der Zeile um eins nach ; rechts test_advance_cursor_2 jsr save_orig +set_win_params 0, 5, 39, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr advance_cursor jsr save_wlnp_wx_wy jsr restore_orig rts ; Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) ; von einer Position inmitten der Zeile um eins nach ; links test_back_cursor_1 jsr save_orig +set_win_params 0, 5, 20, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr back_cursor jsr save_wlnp_wx_wy jsr restore_orig rts ; Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) ; von der ersten Position der Zeile um eins nach ; links test_back_cursor_2 jsr save_orig +set_win_params 0, 5, 0, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen jsr back_cursor jsr save_wlnp_wx_wy jsr restore_orig rts ; Loescht in der 3. Zeile (Zeilennummer 2) ein Zeichen ; (der Cursor befindet sich innerhalb der Zeile) test_delete_char_1 jsr save_orig +set_win_params 0, 5, 10, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt jsr delete_char lda wx sta vals lda $0286 sta vals+1 jsr restore_orig rts ; Loescht in der 3. Zeile (Zeilennummer 2) ein Zeichen ; (der Cursor befindet sich am Anfang der Zeile) test_delete_char_2 jsr save_orig +set_win_params 0, 5, 0, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt jsr delete_char lda wx sta vals jsr restore_orig rts ; Fuegt in der 3. Zeile (Zeilennummer 2) ein Zeichen ; ein (der Cursor befindet sich am Anfang der Zeile) test_insert_char_1 jsr save_orig +set_win_params 0, 5, 0, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt jsr insert_char lda wx sta vals lda $0286 sta vals+1 jsr restore_orig rts ; Fuegt in der 3. Zeile (Zeilennummer 2) ein Zeichen ; ein (der Cursor befindet sich am Ende der Zeile) test_insert_char_2 jsr save_orig +set_win_params 0, 5, 39, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt jsr insert_char lda wx sta vals lda $0286 sta vals+1 jsr restore_orig rts ; Gibt in der 3. Zeile (Zeilennummer 2) ein normales ; und ein inverses Zeichen in roter Farbe aus test_setup_screen_print jsr save_orig +set_win_params 0, 5, 20, 2 jsr set_start_of_line ; $d1/$d2 (wlnp) setzen lda #2 sta $0286 jsr setup_screen_print lda #3 sta $c7 jsr setup_screen_print lda $0286 sta vals jsr restore_orig rts ; Gibt ein Zeichen aus und setzt vorher das X- und ; Y-Register test_output_registers jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ldx #100 ldy #200 lda #65 jsr output_to_screen sta vals stx vals+1 sty vals+2 jsr restore_orig rts ; Gibt die Buchstaben/Grafikzeichen ohne Umschalttaste ; aus (ASCII 32-127) test_unshifted_chars jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ; $d1/$d2 durch clear_screen gesetzt ldx #32 - txa jsr output_to_screen inx bpl - ; Abbruchbedingung: X >= 128 jsr restore_orig rts ; Gibt die Buchstaben/Grafikzeichen ohne Umschalttaste ; aus (ASCII 160-255) test_shifted_chars jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ; $d1/$d2 durch clear_screen gesetzt ldx #160 - txa jsr output_to_screen inx bne - ; Abbruchbedingung: X = 0 (Ueberlauf) jsr restore_orig rts ; Gibt in der 3. Zeile (Zeilenindex 2) den ASCII-Wert ; 13 fuer einen Zeilenumbruch aus (der Cursor befindet ; sich in der Mitte der Zeile) test_return jsr save_orig +set_win_params 0, 5, 20, 2 lda #13 jsr output_to_screen lda wx sta vals lda wy sta vals+1 jsr restore_orig rts ; Gibt in der 3. Zeile (Zeilenindex 2) den ASCII-Wert ; 141 fuer einen rueckwaertigen Zeilenumbruch aus (der ; Cursor befindet sich in der Mitte der Zeile) test_shift_return jsr save_orig +set_win_params 0, 5, 20, 2 lda #141 jsr output_to_screen lda wx sta vals lda wy sta vals+1 jsr restore_orig rts ; Gibt nacheinander die ASCII-Werte 29 (Cursor right), ; 17 (Cursor down), 157 (Cursor left), 145 (Cursor up) ; und 19 (Home) aus test_move_crsr jsr save_orig +set_win_params 0, 5, 20, 2 lda #29 jsr output_to_screen lda wx sta vals lda wy sta vals+1 lda #17 jsr output_to_screen lda wx sta vals+2 lda wy sta vals+3 lda #157 jsr output_to_screen lda wx sta vals+4 lda wy sta vals+5 lda #145 jsr output_to_screen lda wx sta vals+6 lda wy sta vals+7 lda #19 jsr output_to_screen lda wx sta vals+8 lda wy sta vals+9 jsr restore_orig rts ; Gibt den ASCII-Wert 147 (CLR) aus test_clear jsr save_orig jsr fill_lines +set_win_params 0, 4, 0, 0 lda #147 jsr output_to_screen jsr restore_orig rts ; Gibt nacheinander die ASCII-Werte 65 ("A"), 18 (RVS ON), ; 66 ("B"), 146 ("RVS OFF") und 67 ("C") aus test_revers jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ; $d1/$d2 durch clear_screen gesetzt lda #65 jsr output_to_screen lda #18 jsr output_to_screen lda #66 jsr output_to_screen lda #146 jsr output_to_screen lda #67 jsr output_to_screen jsr restore_orig rts ; Gibt die 15 Buchstaben "P" bis "A" (ASCII-Werte 80 bis 65) ; in den Farbcodes 15 bis 0 (ASCII-Werte 155 bis 149, 129, ; 158, 31, 30, 156, 159, 28, 5 und 144) aus test_colors jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ; $d1/$d2 durch clear_screen gesetzt ldx #15 - lda colors,x jsr output_to_screen txa clc adc #65 jsr output_to_screen dex bpl - jsr restore_orig rts ; ASCII-Werte fuer Farben colors !by 144, 5, 28, 159, 156, 30, 31, 158 !by 129, 149, 150, 151, 152, 153, 154, 155 ; Gibt in der 3. Zeile (Zeilennummer 2) den ASCII-WERT 20 ; (DEL) aus test_delete jsr save_orig +set_win_params 0, 5, 20, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt lda #20 jsr output_to_screen lda wx sta vals jsr restore_orig rts ; Gibt in der 3. Zeile (Zeilennummer 2) den ASCII-WERT 148 ; (INS) aus test_insert jsr save_orig +set_win_params 0, 5, 20, 2 jsr fill_move_line ; $d1/$d2 (wlnp) bereits durch fill_move_line gesetzt lda #148 jsr output_to_screen lda wx sta vals jsr restore_orig rts ; Platziert den Cursor mit ASCII 29 und ASCII 17 in der ; 2. Zeile und gibt dann einen unbekannten Wert (ASCII 1) ; aus test_unknown jsr save_orig +set_win_params 0, 5, 0, 0 jsr clear_screen ; $d1/$d2 durch clear_screen gesetzt lda #29 jsr output_to_screen lda #17 jsr output_to_screen lda #1 jsr output_to_screen jsr save_wlnp_wx_wy lda invers sta vals+4 jsr restore_orig rts ; Platziert den Cursor in der Mitte der 3. Zeile (Zeilennummer 2) test_put_row_col jsr save_orig +set_win_params 0, 5, 0, 0 ldx #2 ldy #20 jsr put_row_col jsr save_wlnp_wx_wy jsr restore_orig rts ; Ermittelt die Adresse in der Tabelle fuer die Bildschirmzeiger, ; in der die Zeiger fuer die erste und letzte Zeile stehen test_set_wptrs jsr save_orig lda #0 jsr set_wptrs lda wptrs sta vals lda wptrs+1 sta vals+1 lda #24 jsr set_wptrs lda wptrs sta vals+2 lda wptrs+1 sta vals+3 jsr restore_orig rts ; Ruft die Standardkonfiguration fuer ein grosses Fenster auf test_set_default jsr save_orig jsr set_default lda wptrs sta vals lda wptrs+1 sta vals+1 lda sptrs sta vals+2 lda sptrs+1 sta vals+3 lda wrows sta vals+4 lda srows sta vals+5 lda sx sta vals+6 lda sy sta vals+7 jsr restore_orig rts ; Richtet ein Fenster mit winit ein und gibt das Zeichen ; "A" aus test_winit_wquit jsr winit lda #65 jsr $ffd2 jsr save_wlnp_wx_wy jsr wquit rts ; Teilt den Bildschirm in der 9. Zeile (Zeilennummer 8) ; in zwei Fenster auf test_wsplit_1 jsr winit lda #8 sta wy jsr split_screen jsr wquit rts ; Gibt oben/links ein "A" aus und versucht, den Bildschirm ; in der ersten bzw. letzten Zeile zu teilen test_wsplit_2 jsr winit lda #65 jsr $ffd2 ; wy hat noch den Wert 0 jsr wsplit lda wrows sta vals lda srows sta vals+1 ; mit wy=24 lda #24 sta wy jsr set_screen_pointers jsr wsplit lda wrows sta vals+2 lda srows sta vals+3 jsr wquit rts ; test_wsplit_3 und 4 kommen nach test_switch ; Teilt den Bildschirm in der 7. Zeile (Zeilennummer 6) und ; gibt im oberen Fenster in den ersten drei Zeilen "A", "B" ; und "C" aus, sowie im unteren Fenster ein "D" test_wswitch jsr winit lda #6 sta wy jsr set_screen_pointers jsr wsplit lda #65 jsr $ffd2 lda #13 jsr $ffd2 lda #66 jsr $ffd2 lda #13 jsr $ffd2 lda #67 jsr $ffd2 jsr wswitch lda #68 jsr $ffd2 lda sptrs sta vals lda sptrs+1 sta vals+1 lda srows sta vals+2 lda sx sta vals+3 lda sy sta vals+4 jsr wquit rts ; Teilt den Bildschirm in der 2. Zeile (Zeilennummer 1) ; in zwei Fenster auf test_wsplit_3 jsr winit lda #1 sta wy jsr split_screen jsr wquit rts ; Teilt den Bildschirm in der 24. Zeile (Zeilennummer 23) ; in zwei Fenster auf test_wsplit_4 jsr winit lda #23 sta wy jsr split_screen jsr wquit rts ; Teilt den Bildschirm in der 7. Zeile (Zeilennummer 6) und ; stellt danach die Standardkonfiguration wieder her test_wunsplit jsr winit lda #6 sta wy jsr set_screen_pointers jsr wsplit jsr wunsplit jsr save_wlnp_wx_wy lda wrows sta vals+4 lda srows sta vals+5 jsr wquit rts ; Hilfsroutine fuer test_hcopy print_txt ldx #0 - lda txt_hcopy,x jsr $ffd2 inx cpx #14 bne - rts txt_hcopy !tx "DRUCKERAUSGABE" ; 14 Zeichen ; Teilt den Bildschirm in der 6. Zeile (Zeilennummer 5), ; fuellt den oberen Bildschirm mit Text und druckt in aus test_hcopy_1 jsr winit lda #5 sta wy jsr set_screen_pointers jsr wsplit ldy #3 - jsr print_txt lda #17 jsr $ffd2 dey bne - jsr print_txt jsr whcopy jsr wquit rts ; Teilt den Bildschirm in der 2. Zeile (Zeilennummer 1), ; fuellt den oberen Bildschirm mit Text und druckt in aus test_hcopy_2 jsr winit lda #1 sta wy jsr set_screen_pointers jsr wsplit jsr print_txt jsr whcopy jsr wquit rts ;#################################################################### ;# ;# Ablageort zur Ueberpruefung der Werte ;# ;#################################################################### *=$cdf0 vals !wo 0, 0, 0, 0, 0