Think #29.5
24 июля 1999 |
|
Iron - General Sound, CMOS-clock.
IRON (C) STINGER Programming Guide General Sound. Version v1.03. Revision 003. 1. Brief technical characteristics of the GS. ------------------------------------- Processor: Z80, 12MHz, without wait cycles ROM: 32k, 27256 RAM: Static Ram 128k total, 112k dos orally available for the modules and samples in Basic version INT: 37.5 KHz Channels: 4 independent 8-bit channel la, each with 6-bit controlled field level. 2. Brief description of GS, or much every Labuda. ----------------------------------- GS - musical card, designed to play music modules and individual samples (effects). Modules for the GS - it is the standard Amiga PCshnye and 4-channel MOD files, and samples - as Amiga signed sample, and PCshnye unsigned sample. MOD player file in GS is practically a complete analog ProTracker'a on the Amiga was created with intensive use of sources ProTracker'a. (Sources were from Protracker'a v2.1A by Lars "ZAP" Hamre - Amiga Freelancers) MOD Player Pro supports all the teams Tracker'a, except for two things: E01 Filter On Amiga-specific commands yes, includes a filter high frequencies. EFX Invert Loop I have not seen the player, which would support this team. Perhaps it is supported on some older players. GS represents himself, in essence, a complex microprocessor with its own CPU, ROM, RAM, and ports, and absolutely no depends on the main processor Spectrum, that allows, for example, upload your own favorite module, reset the Spectrum, download the assembler and create your favorite music. Soft inside the GS is fully takes problem playing sound, the interpretation of module, etc. Programming GS'a reduces the transmission of byte by byte module and / or samples, and then you only need give commands like: start the module, set the global volume of the playback module, run the sample # 09 in Channel # 02, etc. If you intend to load the module together with the samples, make sure you first need to download the module, and then sampled. When you load the module is highly recommended left free to 2k of memory, ie, load modules with a maximum length 110K. This condition is not necessary, but its execution is highly desirable for compatibility with future versions. Similarly, highly recommended to leave 80 bytes for each sample, for example, If you want to download 63-Kbyte module and 18 samples, we have: Total_Sample_Length = 112 * 1024-63 * 1024-2 * * 1024-18 * 80 = 46688 bytes This is the total length of sample, which, when this state of affairs can be downloaded. If, for example, is required to compute as will fit in memory GS'a 2 KB sample, it is calculated as follows: 112 * 1024 / (2048 +80) = 53 sample. In GS'e have 4 physical channels, which are losing the sound. Channels 0 and 1 - left, and 2 and 3 - Right. 3. Interface with the Spectrum. ----------------------- GS looks at the world with 4 registers: 1. Command register - register of commands available to the port of entry at 187. In This register is written to the command. 2. Status register - status register, readable port at 187. Register bits: 7 - Data bit, flag data 6 - Undefined 5 - Undefined 4 - Undefined 3 - Undefined 2 - Undefined 1 - Undefined 0 - Command bit, flag teams This register allows to define the state of GS, in particular whether it is possible to read or write the next byte of data, or apply another command, etc. 3. Data register - Register of data available for the port of entry at 179. In this Spectrum Registry records data, for example, it may be arguments to commands. 4. Output register - register output port is available for reading at 179. From This register reads the Spectrum data going from the GS. Command bit in the status register is set by hardware after writing team into the instruction register. Reset to 0 it can only GS, which indicates a certain stage of execution. Data bit in the register states can be set or reset as optional Spectrum and optional GS: recording Spectrum in the data register it hardware set to 1, and after reading GS'om from this register is reset to 0. When GS record in the register display it (all the same Data bit) is set by hardware to 1, and after reading from this port Spectrum cleared by hardware to 0. Despite the fact that the data register and output register are located in space port addresses to the same address and affect the same bits of data, they are two separate registers. Value, once recorded in One of these registers, it remains unchanged until a new record. Status bits of data are often undefined, and if the specification of commands not the values of this bit on opredennyh stages of execution of a command is not valid make any assumptions about the value of this bit. 4. The command system GS. ----------------- At first, let me digress from the actual system commands. GS, as is known, is designed mainly for playing modules and samples. In this version (1.03) GS ROM dopukaetsya downloading a module and / or up to 32 samples. Each sample loading it into memory gets a unique identifier that uniquely identifies the call to given samples of the teams, which require number of samples. The first loaded sample receives a number (handle) = 1, the next - the number 2, etc. The same applies to modules and this one loaded module will have a handle = 1 after boot. A feature of this version is also something that must first load the module, and then sampled. Features command descriptions: Teams are described as follows: 1. Hex command code 2. Team Name 3. Actions taken in the performance Team 4. Instruction format 5. Comments to the team The command format is described as follows: GSCOM EQU 187 GSDAT EQU 179 SC # NN: Send a command code to the register teams LD A, # NN OUT (GSCOM), A WC: Waiting for relief Command bit WCLP IN A, (GSCOM) RRCA JR C, WCLP SD Data: Send data to data register LD A, Data OUT (GSDAT), A WD: Waiting for reset Data bit, on Indeed, waiting until GS will not accept the data sent to him WDLP IN A, (GSCOM) RLCA JR C, WDLP GD Data: Take the data from the register Data IN A, (GSDAT) WN: Waiting for installation Data bit, on Indeed, the expectation of regular data by GS WNLP IN A, (GSCOM) RLCA JR NC, WNLP Command GS: # 00 Reset flags - Resets the flags and Command Data bit bit. SC # 00 WC (Data bit = 0, Command bit = 0) # 0E Go in Covox mode Goes into Kovoks directly copies the data register in the two DACs (Right and left) channels. To exit this mode - record # 00 into the instruction register. SC # 0E WC SD \ SD \ ... / It's conclusion in DACs SD / SC # 00 WC # F3 Warm restart Resets all GS, but misses stages of determining the number of pages memory and their proveki, which greatly accelerates the process of initialization. SC # F3 WC # F4 Cold restart Full restart of GS with all the verification kami. In fact, JP # 0000. SC # F4 WC # 20 Get total RAM Get the total available memory on the GS. (In the basic version is 112k) SC # 20 WC GD RAM.L (youngest part) WN GD RAM.M (middle part) WN GD RAM.H (oldest part) Total RAM = 65536 * RAM.H +256 * RAM.M + RAM.L # 21 Get free RAM Get the total amount of free memory on the GS. SC # 20 WC GD RAM.L (youngest part) WN GD RAM.M (middle part) WN GD RAM.H (oldest part) Free_RAM = 65536 * RAM.H +256 * RAM.M + RAM.L # 23 Get number of RAM Pages Get the number of pages on the GS. SC # 23 WC GD Number_RAM_Pages In the basic version of 3 pages. # 2A Set Module Master Volume Set the play volume modules. SD Module_Master_Volume [# 00 .. # 40] SC # 2A WC [GD Old_Master_Volume] - Old loudly. A small example of using this Team: (This assumes that the module is played) LD B, # 40 LOOP: LD A, B OUT (GSDAT), A LD A, # 2A OUT (GSCOM), A EI HALT DJNZ LOOP LD A, # 32 OUT (GSCOM), A Described above gradually lowers the volume playing module, and then stops him. # 2B Set FX Master Volume Set the play volume effects. SD FX_Master_Volume [# 00 .. # 40] SC # 2B WC [GD Old_FX_Volume] - Old Volume Similarly to the previous command, but operates on the samples. With these two commands, you can adjust the volume balance of the module and samples, etc. # 2E Set Current FX Set the current effect. Just assigns this value CURFX inclusion. If any team needs number of samples (sample handle), then we can Instead, give her room # 00 and Larry substitute instead zero value of the variable CURFX. (See Team # 38, # 39, # 40 - # 4F for understanding of the above.) SD Cur_FX SC # 2E WC # 30 Load Module Module loading into memory. SC # 30 WC [GD Module_Handle]-module number (Command bit = 0, Data bit = 0) SC # D1 (Open Stream-open stream) WC SD \ WD \ ... Bytes module SD / WD / SC # D2 (Close Stream-close stream) WC Example: LD HL, Mod_adress LD DE ,0-Mod_length LD C, GSCOM LD A, # 30 CALL SENDCOM LD A, # D1 CALL SENDCOM LD A, (HL) LOOP: IN B, (C) JP P, READY IN B, (C) JP M, LOOP READY: OUT (GSDAT), A INC HL LD A, (HL) INC E JP NZ, LOOP INC D JP NZ, LOOP WAIT: IN B, (C); wait prinatiya JP M, WAIT; last byte LD A, # D2 CALL SENDCOM IN A, (GSDAT); Module Number OUT (GSDAT), A LD A, # 31 SENDCOM: OUT (GSCOM), A WAITCOM: IN A, (GSCOM) RRCA JR C, WAITCOM RET # 31 Play module Playback module. SD Module_Handle - module number SC # 31 WC # 32 Stop module Stop playback module. SC # 32 WC # 33 Continue module Continue playing the module after stop. SC # 33 WC # 38 Load FX Download sample effect in memory. Loads unsigned samples (PC type) SC # 38 WC [GD FX_Handle]-number sample (Command bit = 0, Data bit = 0) SC # D1 (Open Stream-open stream) WC SD \ WD \ ... Bytes sample SD / WD / SC # D2 (Close Stream-close stream) WC When loading each sample, in memory of GS created for this sample the title, which describes the various options sample. After downloading these parameters are set to certain values, as then: Note = 1960, Volume = # 40, FineTune = 0, SeekFirst = # 0F, SeekLast = # 0F, Priority = # 80, No Loop and the internal variable is set to CurFX FX_Handle. Then the teams # 40, # 41, # 42, # 45, # 46 and # 47 may be, these default values to change on their own. This is required because the team # 39 to initiate playback of the sample using the parameters from the header of the sample. In its natural form samples are usually poorly packaged compressors, but the compressibility is usually possible to pick up, if we translate sample in the Delta-form, ie, storing absolute values sample, and the relative offset from the previous byte. Around here and so can be translated sample in Delta-form: LD HL, Start_of_sample LD DE ,0-Length_of_sample LD C, # 2000 LOOP: LD A, (HL) SUB C LD C, (HL) LD (HL), A INC E JP NZ, LOOP INC D JP NZ, LOOP And here's how you upload a sample: LD IX, Parameters LD HL, Sample_adress LD DE ,0-Sample_length LD C, GSCOM LD A, # 38 CALL SENDCOM LD A, # D1 CALL SENDCOM LD A, (HL) LOOP: IN B, (C) JP P, READY IN B, (C) JP M, LOOP READY: OUT (GSDAT), A INC HL ADD A, (HL) INC E JP NZ, LOOP INC D JP NZ, LOOP WAIT: IN B, (C); wait prinatiya JP M, WAIT; last byte LD A, # D2 CALL SENDCOM ; Now overrides ; Sample by default your ; Values LD A, (IX + # 00) OUT (GSDAT), A; Nota LD A, # 40 CALL SENDCOM LD A, (IX + # 01) OUT (GSDAT), A; Volume LD A, # 41 SENDCOM: OUT (GSCOM), A WAITCOM: IN A, (GSCOM) RRCA JR C, WAITCOM RET # 39 Play FX Playing effect. SD FX_Handle - number of samples SC # 39 WC In performing this command the following: see the channels listed in SeekFirst parameters of our sample, and if though, would be one of them is free, and it played a sample, otherwise look the channels listed in SeekLast and if One of them is free, and it is played sample, if not free, then looked through all the channels listed SeekLast, from They choose the channel with the lowest priority and is compared to the priority of our sample (ie the sample that we want to lose), if this sample will be a higher priority than the sample already playing in the channel, then playing in the channel sample will be stopped, and our sample will be run in this channel instead of the old sample. Here are a priority scheme here ... When the sample is run in a channel, it note, volume, etc parameters recorded in the data channel from the header sample. In general, something to play with the sample required parameters, you can set these parameters after loading the sample and safely use the command # 39. If the parameters have changed, it is possible to do as follows: Team # 2E do current required sample, the teams # 4x change its parameters, and then run it with # 39. An alternative method of triggering samples provide the team # 80 .. # 9F, the performance of these teams you directly in the instruction code indicates in which channel you want to run the sample, and besides, you can also point to a note and / or volume you want to run the sample. # 3A Stop FX in channels Stop playing effects preset channels, which are specified in the mask channel (Channel Mask). In her unit in the n-dimensional bit indicates that the effect of n-dimensional channel you want to stop SD Channel_Mask SC # 3A WC Described above is ideal the work of this team, but unfortunately not so simple in this world, and this team act wrong, namely: a unit in the bit 7 stops to sample the zero channel, and etc. In future versions this will be fixed, but for now I recommend stopping in general, all samples mask # FF. # 3E Load FX (Extended version) Download sample effect in memory. Allows you to load samples with a sign. (Amiga type) SD # 01 (Signed sample) SC # 3E WC [GD FX_Handle]-number sample (Command bit = 0, Data bit = 0) SC # D1 (Open Stream-open stream) WC SD \ WD \ ... Bytes sample SD / WD / SC # D2 (Close Stream-close stream) WC # 40 Set FX Sample Playing Note Installation notes default current effect. SD Note [0 .. 95] SC # 40 WC Note = 0 C-0 1 C # 0 12 C-1 24 C-2 36 C-3 (C-1 in the Amiga) 48 C-4 (C-2 in the Amiga) 60 C-5 (C-3 in the Amiga) 72 C-6 84 C-7 In this version of the Sound Generators Wave 2, 3 may play an octave 3, 4 and 5, so the valid values Note is the range of 36 to 71. # 41 Set FX Sample Volume Setting the default volume for current effect. SD FX_Volume [# 00 .. # 40] SC # 41 WC # 45 Set FX Sample Priority Set a priority for current effect. (See the command # 39) SD FX_Priority [# 01 .. # fe] SC # 45 WC # 46 Set FX Sample Seek First parameter Setting Seek First to current effect. (See the command # 39) SD FX_SeekFirst SC # 46 WC # 47 Set FX Sample Seek Last parameter Setting Seek Last for current effect. (See the command # 39) SD FX_SeekLast SC # 47 WC # 60 Get Song Position Getting the value of the variable Song_Position in the current module. SC # 60 WC GD Song_Position [# 00 .. # FF] Can be interpreted as the number of lost pattern module. After starting module takes the value 0 and incremented after playing a regular pattern. This variable can be used for synchronizing processes in Spectrum with the playback module. You can, for example, at the beginning of procedures for handling interrupts to SC # 60, then perform procedures of the various operations screen skrullinga lines, etc. (Ie that was sufficient to execute the command delay), and then read port 179 (GD Song_Position), and compare it with the required, and in case of a tie, go to the next part of demos, that is, if (Song_Position == My_Position) then goto Next_Part_Of_Demo # 61 Get Pattern Position Getting the value of the variable Pattern_Position in the current module. SC # 61 WC GD Pattern_Position [# 00 .. # 3F] Get the value of the bias in the pattern (No ROW), use - similar to previous command, but you want to see that this value varies quite quickly, and therefore if (Pattern_Position> = My_Position) then goto Next_Part_Of_Demo # 62 Get Mixed Position Get the value Pattern_Position, slightly mixed with Song_Position. SC # 62 WC GD Mixed_Position Mixed_Position: (in bits) 7-Song_Position.1 6-Song_Position.0 5-Pattern_Position.5 4-Pattern_Position.4 3-Pattern_Position.3 2-Pattern_Position.2 1-Pattern_Position.1 0-Pattern_Position.0 Ie if you get Mixed_Position and be done with it AND # 3F, then we obtain the spitting image Pattern_Position, and if after receiving its a bit RLCA, RLCA, AND # 02 - it will be lower two bits Song_Position. See Note to teams # 60 and # 61. # 63 Get Channel Notes Get the notes of all the channels of the module. SC # 63 WC GD Note_of_channel_0 WN GD Note_of_channel_1 WN GD Note_of_channel_2 WN GD Note_of_channel_3 If in any channel value of the notes changed from the last command executed # 63, then bit 7 is obtained zanacheniya Note_of_channel_N will be zero, if the value is the same thing as it was before, then this bit will be in the unit. Younger seven bits and is proper note from 0 to 95, if the value is 127, it means that no samples in the channel does not play. This command is mainly intended to build on its basis the various analyzers. # 64 Get Channel Volumes Get the volume of all channels module. SC # 64 WC GD Volume_of_channel_0 WN GD Volume_of_channel_1 WN GD Volume_of_channel_2 WN GD Volume_of_channel_3 See the description of the command # 63 # 80 Direct Play FX Sample (# 80 .. # 83) Playing the sample in a given channel. SD Sample_Number SC # 80 .. # 83 (Junior bits determine directly to the number of spacecraft signal, which requires play sample) WC # 88 Direct Play FX Sample (# 88 .. # 8B) Playing the sample in a given channel with a given note. SD Sample_Number SC # 88 .. # 8B (lower bits define directly to the number of spacecraft signal, which requires play sample) WC SD Note [0 .. 95] WD # 90 Direct Play FX Sample (# 90 .. # 93) Playing the sample in a given channel with a given volume. SD Sample_Number SC # 90 .. # 93 (Junior bits determine directly Room channel, which requires is to play a sample) WC SD Volume [# 00 .. # 40] WD # 98 Direct Play FX Sample (# 98 .. # 9B) Playing the sample in a given channel le with a given note and volume. SD Sample_Number SC # 88 .. # 8B (lower bits define directly Room channel, which requires is to play a sample) WC SD Note [0 .. 95] WD SD Volume [# 00 .. # 40] WD __________________________ === Cut === CMOS-clock Alexander Mayorov Dmitry Lomov In this issue we decided to tell you about such a wonderful thing as a chip CMOS-clock. What kind of a beast and what it is, you ask? But see for yourself! This chip provides independent computer calculation time, the production of interrupt signals from the alarm, and can also be used as a small NVRAM 50 bytes. Feature of the CMOS-clock is their extremely low power consumption! (By directory of the current consumption of 0.1 to 4mA!). If this chip to connect a backup power source, the calculation of time and preservation of information in the internal RAM will be guaranteed and if you disable your computer. You may ask - well, why do I need? Indeed, in normal clock computer is not very much and want. But! If you're writing from time to time letter ekhi, the data clock relieve you the need to constantly look at the calendar and clock, to put down time / date. But for the BBS, or "Myler" watch very, very needed! Actually need to watch yavilas one of the reasons for the creation of a new version of the BBS. About which, perhaps, will be discussed in the following issues Newskah. Well, now closer to the point! Chip called 512VI1, its proprietary prototype MS 146,818, and most rulez - DALLAS 1287, has an internal battery and quartz for 10 years. It should be said that such chips stand in the PC 286 and 386, and therefore available Thanks to the great Upgrades ... To begin pin assignment: NC 01 is not used 02 OSC1 input generator 03 OSC2 output of the generator 04 AD0 \ 05 AD1 \ 06 AD2 \ 07 AD3 multiplexed bus 08 AD4 address / data 09 AD5 / 10 AD6 / 11 AD7 / 12 GND ground 13 / CE chip-select 14 AS address strobe 15 R / W Read / Write NC 16 is not used 17 / DS data strobe 18 / RES reset input 19 / IRQ output interrupt request 20 SED frequency control CKOUT 21 CKOUT output signals of a clock hour frequencies 22 PS control failure voltage peaks Tania 23 SQW output of program-controllable of the frequency divider 24 + Ucc +3 ... +5 V And now the details: At the conclusion 02 (OSC1) must submit frequency of the external oscillator, or connected to pin 02/03 (OSC1/OSC2) quartz. Conclusions 4 ... 11 (AD0. .. AD7) - Bus address / data bus connects to the data prrotsesora. Pin 13 (/ CE) - the choice kristala.Pri available log. "1" on this input chip blocked. There is one more feature: at this entrance should be the status log. "0" for the entire cycle of treatment to the chip. Ie simultaneously with (or before) the choice of register address input / CE shall be established a log. "0", and its status should not be change during the entire cycle of treatment to selected case! The most convenient and easy to install on this input state of the log. "0" for the entire duration of the computer. The choice of register number is fed to the bus ADDRESS / DATA (AD0. .. AD7) and submission log. "1" to input 14 (AS) Read / write data from / to register (a) used the findings in 1915 (R / W) - Selecting the read / write (or a log. "1" and "0") and 17 (DS) - Data Strobe. When a log. "0" to output R / W data is written into the previously selected register, and the feeding log. "0" on output DS - data read from the register. Poyavlyanie log. "0" on pin 19 (/ IRQ) reports on the process of system interruptions BIS. In all other cases, the data output is in the third logic state (high-impedance). Submission of a log. "0" on the 22-th output (/ PS) informs the BIS that failed supply voltage, and the contents of the registers unreliable. If there is a reserve power source, then this input file log. "1." On the derivation of 23 (SQW) have the momentum frequency, which is obtained by dividing the clock generator frequency by a factor defined by software. At the exit 21 (CKOUT) have the momentum, frequency depends on the input state 20 (SED). If there is there a log. "1" SQW output frequency equal to the frequency generator (OSC1-OSC2). In the presence of log. "0" input SED output frequency SQW four times menshe frequency oscillator (OSC1-OSC2). In the chip are 64 eight- register. When you work with them must first indicate which register to work (record number in the address register) and then perform the read / write. Non registers # 00 sec # 01 SEC (ALARM) # 02 MINUTES # 03 Minutes (ALARM) # 04 HOURS # 05 HOURS (ALARM) # 06 DAY OF THE WEEK # 07 DAY OF THE MONTH # 08 A MONTH # 09 YEAR # 0A REGISTER A # 0B B REGISTER # 0C REGISTER C # 0D REGISTER D # 0E general-purpose RAM ... RAM is general-purpose # 3F general-purpose RAM # 0C, # 0D - read only # 00, # 0A - senior level read-only DESCRIPTION OF THE REGISTERS A. .. D REGISTER A (individual bits) 7 UIP "1" in this bit indicates that being updated information and hours mi can not work, wait some time. Cycle Time updates depending on the frequency Clock: frequency duration MHz refresh cycle, ms 4.194304 248 1.048576 248 0.032768 1984 32768 1048576 4194304 RESET 6 DV2 frequency 0 0 0 1 5 DV1 quartz 1 0 0 1 DV0 4 0 1 0 x 3 RS3 Set the frequency on pin 2 RS2 SQW (23), and period interrupt 1 RS1 IRQ (19) 0 RS0 IRQ - interrupt signal to the issuance of any post. frequency or at the end of the update cycle, or from an alarm clock. IRQ = 1000 / SQW SQW is used to feed the signal from the Alarm For example: the frequency of SQW = 256 Hz, period is equal to 1000/256 = 3.9ms D3 D2 D1 D0 Frequency, Hz PERIOD, ms 0 0 1 1 8192 0.122 0 1 0 0 4096 0.244 0 1 0 1 2048 0.488 .................................... 1 1 1 0 4 250 1 1 1 1 2 500 REGISTER B (individual bits) 7 SET "1" ban update (To set the time). 6 PIE interrupt enable, with a period specified in the RS-bit register A. Cleared by Reset'u. 5 AIE resolution Interrupt Alarm ka. Cleared by Reset'u. 4 UIE interrupt enable at the end update cycle. Cleared by Reset'u. 3 SQWE permit issuance of information on you course of SQW. Cleared by Reset'u. 2 DM type of data: 0 - BCD 1 - Binary A 24/12 score: 0 - 12 hours 1 - in 24 hours 0 DSE "1" enables automatic transfer move from summer to winter time back. Daylight saving time is carried out in 3h nights voskesene last April, and on winter nights in 1 hour the last Sunday in October. REGISTER C (individual bits) All bits are reset to Reset'u or reading Register C. 7 IRQF flag interrupt request. Establishes Lebanon into a "1" on condition that: (PF and PIE) or (AF and AIE) or (UF and UIE). If IRQF = "1", then the output IRQ (19) is set to "0". 6 PF ustanavlvaetsya in front of a signal at the output of the internal divider frequency selected in accordance with RS-digits. 5 AF is set to 1 if the coincidence current time and time Alarm nick. UF 4 is set to 1 after update cycle. 3 = 0 ... 0 = 0 REGISTER D (individual bits) 7 is set to log. "0" if food was wasted and information unreliable. Set to "1" on Reset'u or when reading the register D. 6 = 0 ... 0 = 0 Data Format Sunday = 1, Monday to. = 2, etc. January = 1 February = 2, etc. 1997 = 97 1998 = 98, etc. Records the number of days per month and accounted for leap years. If the registers # 00 ... # 09 record number in the range # C0 ... # FF - it is indifferent state. Ie if the clock alarm = # FF, then it will fire every hour. The alarm When the alarm Necessary in the case {B} to set AIE = SQWE = 1 UIE = PIE = 0. Frequency of the sound output is given by SQW RS-bit register {A}. At operation Alarm IRQ output will be installed in log. "0". Ie for sound generation need merge the outputs of OR SQW and IRQ You can put the RC-chain, which, after nokotorogo time after the IRQ in # 0 sfoormiruet reset signal, and the sound stops. Connection scheme If you have a controller SMUG, then all you need to do is stick a chip CMOS-hours in accordance socket. Well, if you "bad luck", you will have little Popayán ... Generator 2 (OSC1) 22M 3 (OSC2) 470k quartz: October 20 32.768 kHz * 1.048576 MHz 4.194304 MHz Choice Crystal and voltage control 5.1K 24 (+ Un) / 5.1K / 13 (/ CE) / / K KT315 5 \ \ e \ \ KS133 5.1K 24 (+ Un) 22 (PS) Nutrition Products \ \ B 5 / 24 (+ Un) / \ \ / / + battery, 3.6V Connecting to a Computer You must connect the signals AD0 ... AD7 on the data bus of the processor. Signal / RES (18) connected to the / RESET Processor (26-th output) The remaining conclusions - AS, R / W, / DS to connected to address decoder. Status signals AS R / W / DC Nothing 0 1 1 number selection register 1 1 1 Reading from register 0 1 0 write to register 0 0 1 For example, on a yellow card for Scorpio findings of AS, / DS, R / W signals can be fed with m / D54: D54/13 through an inverter to AS D54/11 at / DS D54/15 in the R / W In this case, the port addresses CMOS-hours will be stationed in TR-DOS area. In this arrangement, including analysis of Only bits 1 and 7, but in order to avoid conflicts with other ports are recommended such port addresses The choice of register # D8 Reading from register # 58 Entry in the register # 58 When ispolnovanii Scorpio for the read / write data, you can use n / n TR-DOS: # 3FF0 - OUT (C), A RET # 3FF3 - IN A, (C) RET On computers that have the ROM TR-DOS There are no such instructions recommend the following program: ; Write data to register ; In: ; [C] - register number of CMOS-hours ; [B] - value to be written WRREG LD A, C CALL SETREG LD A, B LD C, # 1958 JR OUTPAR ; Reading data from register ; In ; [C] - register number of CMOS-hours ; Out: ; [A] - schitanye from the register value RDREG LD A, C CALL SETREG LD A, # D8 LD C, # 1F CALL OUTPAR LD C, # 1958 LD IX, # 3EF3 CALL JPTR LD A, H RET SETREG LD C, # D8 OUTPAR LD IX, # 2A53 JPTR PUSH IX JP # 3D2F
Other articles:
Similar articles:
В этот день... 21 November