;------------------------------------------------- ;EXPDEMO.MAC - Demonstration verschiedener System- ;Aufrufe zur Einrichtung eines neuen Expansions- ;Puffers, Neu-Belegung der Taste >EINBL< mit einem ;Expansions-String und anschlie~ender reinitiali- ;sierung des Default-Expansions Buffer. ;Abbruch des Programms: STOP /^C ;Rechner: JOYCE (PCW 8256/8512) ;Prg.-Sprache: Assembler (M80) ;CP/M-Version: CP/M 3 (PLUS) V. 1.4 ;(c) 1991 Norbert Finke & CPC International ;------------------------------------------------- ; .Z80 ASEG ORG 0100h ; ;Einrichten des neuen Puffers ab Adresse $C400 in ;der COMMON-Memory ; bios_userf equ 0fc5ah ;BIOS-Funktion #30 (USERF) nexpbuf equ 0c400h ;Startadresse neuer Puffer nexplen equ 0400h ;L{nge des neuen Puffers km_exp_buffer_init equ 011a6h ;System-Adresse ; ld de,nexpbuf ;Adresse -> DE ld hl,nexplen ;L{nge -> HL call bios_userf ;Puffer einrichten defw km_exp_buffer_init ; ;neuen Expansions-String in die COMMON-Memory ;}bertragen ; exp_strlen equ 21 ;L{nge des neuen Strings common_start equ 0c000h ;Start-Adr. der COMMON- ;Memory ; ld hl,nexp_string ;String-Adresse -> HL ld de,common_start ;Ziel-Adresse -> DE ld bc,exp_strlen ;String-L{nge -> BC ldir ;und String in COMMON-Memory ;}bertragen ; ;Expansions-String in Expansions-Puffer eintragen ; exp_code equ 9dh ;Exp.-Code f}r neuen String km_set_expand equ 01204h ;System-Adresse ; ld b,exp_code ;Exp.-Code -> B ld c,exp_strlen ;String-L{nge -> C ld hl,common_start ;String-Adresse->HL call bios_userf ;String eintragen defw km_set_expand ; ;Der Expansions-Code ($9D) mu~ noch der Taste ;>EINBL< zugeordnet werden ; keynum equ 03 ;Nummer der 'EINBL'-Taste keystat equ 01 ;Status = 'NORMAL' km_set_key equ 014b8h ;System-Adresse ; ld b,exp_code ;Exp.-Code -> B ld c,keynum ;Tastennummer -> C ld d,keystat ;Status-Maske -> D call bios_userf ;]bersetzungstabelle ;{ndern defw km_set_key ; ;Tastatur abfragen und Zeichen ausgeben, bis ;'STOP'-Taste gedr}ckt wurde ; ascii_stop equ 03 ;ASCII-Zeichen der ;Stop-Taste km_wait_char equ 01142h ;System-Adresse te_txt_output equ 0548h ;System-Adr.(Zeichen- ;Ausgabe) ; wait_stop: call bios_userf ;Eingabe holen defw km_wait_char cp ascii_stop ;STOP-Taste gedr}ckt? jr z,end_demo ;- ja, Demo beenden - ld c,a ;sonst Zeichen -> C call bios_userf ;und ausgeben defw te_txt_output jr wait_stop ;wiederholen,bis STOP ; ;Zum Ende des Programms mu~ der Default- ;Expansions-Puffer wieder eingerichtet werden, ;damit die COMMON-Memory f}r das n{chste Programm ;wieder frei wird. ; dexpbuf equ 02876h ;Adresse Default-Exp.-Puffer dexplen equ 097h ;L{nge Default-Exp.-Puffer ; end_demo: ld de,dexpbuf ;Adresse -> DE ld hl,dexplen ;L{nge -> HL call bios_userf ;und Puffer ;initialisieren defw km_exp_buffer_init ; ; - fertig ; jp 0 ;WBOOT ausf}hren ; ;der neue Erweiterungs-String f}r die EINBL-Taste: ; nexp_string: defb 'Erweiterte Funktion',10,13 ; end