Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

prehistory

I te mea e aroha ana ahau ki nga taputapu retro, i hokona e ahau tetahi ZX Spectrum + mai i tetahi kaihoko i te UK. Kei roto i te rorohiko ake, he maha nga riipene oro me nga keemu (i roto i te kete taketake me nga tohutohu), me nga kaupapa i tuhia ki runga i nga rīpene kaore he tohu motuhake. He mea whakamiharo, he pai te panui o nga raraunga mai i nga rīpene 40-tau-tau, ka taea e au te tango tata ki nga taakaro me nga hotaka katoa mai i a raatau.

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Heoi, i runga i etahi rīpene i kitea e au nga rekoata kaore i mahia e te rorohiko ZX Spectrum. He rereke te tangi, kaore i rite ki nga rekoata mai i te rorohiko kua whakahuahia, kaore i tiimata me te bootloader BASIC poto, kei te nuinga o te waa kei roto i nga rekoata o nga kaupapa me nga taakaro katoa.

Mo etahi wa ka raru ahau i tenei - i tino hiahia ahau ki te rapu he aha nga mea e huna ana i roto. Mena ka taea e koe te panui i te tohu ororongo hei raupapa paita, ka taea e koe te rapu i nga tohu me nga mea katoa e tohu ana i te takenga mai o te tohu. He momo whaipara-whakaaro.

Inaianei kua haere ahau ki te titiro ki nga tapanga o nga rīpene, ka kata ahau na te mea

ko te whakautu i mua tonu i oku kanohi i nga wa katoa
Kei te tapanga o te rīpene mauī ko te ingoa o te rorohiko TRS-80, kei raro noa iho i te ingoa o te kaihanga: "I hangaia e Radio Shack i USA"

(Mena kei te pirangi koe ki te pupuri i nga korero mo te mutunga, kaua e haere ki raro i te kaipahua)

Te whakataurite o nga tohu ororongo

Tuatahi, me whakamamati nga rekoata oro. Ka taea e koe te whakarongo ki te ahua o te tangi:


He rite tonu te tangi o te rekoata mai i te rorohiko ZX Spectrum:


I roto i nga take e rua, i te timatanga o te rekoata he mea e kiia ana reo pairati - he oro rite te auau (i te rekoata tuatahi he tino poto <1 hēkona, engari he rerekee). Ko te reo pairati e tohu ana i te rorohiko kia rite ki te whiwhi raraunga. Hei tikanga, ko ia rorohiko anake e mohio ana ki tana oro pairati "anake" ma te ahua o te tohu me tona auau.

He mea tika ki te korero mo te ahua o te tohu. Hei tauira, i te ZX Spectrum he tapawhā te ahua:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Ina kitea he oro pairati, ka whakaatu te ZX Spectrum i nga tutaki whero me te puru i te taitapa o te mata hei tohu kua mohiohia te tohu. Ka mutu te reo pairati te tukutahitanga, e tohu ana i te rorohiko kia timata te whiwhi raraunga. He poto ake te ahua (ka whakaritea ki te reo pairati me nga raraunga o muri mai) (tirohia te ahua)

Whai muri i te whiwhinga o te tukutahi, ka tuhia e te rorohiko ia pikitanga/hinga o te tohu, me te ine i tona roa. Mena he iti ake te roanga i tetahi tepe, ka tuhia te moka 1 ki te mahara, ki te kore e 0. Ka kohia nga moka ki nga paita, ka tukuna ano te tukanga kia riro mai he N paita. Ko te nama N te tikanga ka tangohia mai i te pane o te konae kua tikiakehia. Ko te raupapa uta e whai ake nei:

  1. reo pairati
  2. pane (te roa kua mau), kei roto te rahi o nga raraunga kua tangohia (N), ingoa konae me te momo
  3. reo pairati
  4. te raraunga ake

Hei whakarite kia tika te utaina o nga raraunga, ka panuihia e te ZX Spectrum te mea e kiia nei paita taurite (paita parity), ka tatauhia ina tiakina he konae ma te XORing i nga paita katoa o nga raraunga tuhi. A, no te panui i tetahi konae, ka tatauhia e te rorohiko te paita paita mai i nga raraunga kua riro mai, a, ki te rereke te hua mai i te mea kua tiakina, ka whakaatu i te karere hapa "Ripene hapa te uta i te Rīpene". Ko te tino korero, ka taea e te rorohiko te tuku i tenei karere i mua atu mena, i te wa e panui ana, kare e mohio ki te paheketanga (ka ngaro, kare ranei tona roanga e rite ki etahi rohe)

Na, kia kite tatou he aha te ahua o te tohu e kore e mohiotia:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Ko te reo pairati tenei. Ko te ahua o te tohu he tino rerekee, engari e marama ana ko te tohu ko te tukurua i nga pupuhi poto o tetahi auau. I te auau tauira o te 44100 Hz, ko te tawhiti i waenga i nga "puke" he tata ki te 48 tauira (e rite ana ki te auau o ~918 Hz). Kia maumahara tatou ki tenei ahua.

Me titiro inaianei ki te wahanga raraunga:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Mena ka inehia te tawhiti i waenga i nga pini takitahi, ka puta ko te tawhiti i waenga i nga pihi "roa" kei te ~48 tauira tonu, me nga mea poto - ~24. Ma te titiro ki mua, ka kii ahau i te mutunga ka puta ko nga "tohutoro" nga pupuhi me te auau o te 918 Hz e whai tonu ana, mai i te timatanga ki te mutunga o te konae. Ka taea te whakaaro i te wa e whakawhiti ana i nga raraunga, mena ka kitea he putunga atu i waenga i nga putere tohutoro, ka whakaarohia he moka 1, mena ko te 0.

He aha te patere tukutahi? Kia titiro tatou ki te timatanga o nga raraunga:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Ka mutu te reo pairati ka timata tonu te raraunga. I muri tata nei, i muri i te wetewete i te maha o nga rekoata oro, i kitea e matou he rite tonu te paita tuatahi o nga raraunga (10100101b, A5h). Ka timata pea te rorohiko ki te panui raraunga i muri i tana whiwhinga.

Ka taea hoki e koe te aro ki te neke o te putere tohutoro tuatahi i muri tonu i te tuatahi o te paita tukutahi. I kitea i muri mai i te wa e whakawhanake ana i te kaupapa whakamohiotanga raraunga, i te mea kaore e taea te panui i nga raraunga i te timatanga o te konae.

Inaianei me ngana ki te whakaahua i tetahi algorithm ka tukatuka i tetahi konae oro me te uta raraunga.

Uta Raraunga

Tuatahi, me titiro ki etahi whakaaro kia ngawari noa te algorithm:

  1. Ka whakaarohia e matou nga konae kei te whakatakotoranga WAV;
  2. Me timata te kōnae ororongo ki te oro pairati me kaua e wahangu i te timatanga
  3. Me whai reiti tauira 44100 Hz te kōnae puna. I roto i tenei take, kua whakatauhia te tawhiti i waenga i nga pupuhi tohutoro o nga tauira e 48, a, kaore e tika kia tatauhia ma te hotaka;
  4. Ko te whakatakotoranga tauira ka taea te ahua (8/16 moka/ira maangi) - mai i te panui ka taea te huri ki te mea e hiahiatia ana;
  5. Ki ta matou whakaaro ko te konae puna ka whakanoatia e te kaha kaha, me whakapumau te hua;

Ko te algorithm panui ka penei:

  1. Ka panuihia e matou te konae ki te mahara, i te wa ano ka huri i te tauira tauira ki te 8 paraka;
  2. Whakatauhia te waahi o te pupuhi tuatahi i roto i nga raraunga ororongo. Ki te mahi i tenei, me tatau koe i te tau o te tauira me te kaha kaha kaha. Mo te ngawari, ka tatauhia e matou ma te ringa kotahi. Kia tiakina ki te taurangi prev_pos;
  3. Taapirihia te 48 ki te tuunga o te pupuhi whakamutunga (pos := prev_pos + 48)
  4. I te mea ko te whakanui ake i te tuunga ma te 48 kaore e kii ka eke tatou ki te tuunga o te putere tohutoro e whai ake nei (nga koha o te riipene, te mahi koretake o te miihini rīpene, me etahi atu), me whakatika e tatou te waahi o te putere pos. Ki te mahi i tenei, tangohia he waahanga iti o te raraunga (pos-8;pos+8) ka kimihia te uara kaha tiwerawera kei runga. Ko te waahi e rite ana ki te morahi ka penapena ki roto i te pou. I konei ko te 8 = 48/6 he taumau kua whakamatauria, e whakapumau ana ka whakatauhia e matou te morahi tika, kaore hoki e pa ki etahi atu hiahia e tata ana. I roto i nga take tino kino, ka iti ake te tawhiti i waenga i nga pupuhi i te nui atu ranei i te 48, ka taea e koe te whakatinana i te rapu kaha mo te pupuhi, engari i roto i te waahanga o te tuhinga kaore ahau e whakaahua i tenei i roto i te algorithm;
  5. I te taahiraa o mua, he mea tika ano kia tirohia kua kitea te putere tohutoro. Arā, ki te rapu noa koe mo te teitei, kaore tenei e kii kei te noho te hiahia ki tenei waahanga. I taku whakatinanatanga hou o te kaupapa panui, ka tirohia e ahau te rereketanga i waenga i nga uara teitei me te iti o te kaha kaha o tetahi waahanga, a, ki te nui ake i tetahi rohe, ka tatauhia e au te waahi o te hiahia. Ko te patai ano he aha te mahi ki te kore e kitea te pupuhi tohutoro. E rua nga whiringa: kua mutu te raraunga ka mutu te wahangu, ka kiia ranei he hapa panui tenei. Heoi, ka waiho e matou tenei hei whakangawari i te algorithm;
  6. I te taahiraa e whai ake nei, me whakatau i te waahi o te pupuhi raraunga (bit 0 ranei 1), mo tenei ka tango i te waenganui o te waahanga (prev_pos;pos) middle_pos rite ki middle_pos := (prev_pos+pos)/2 me i etahi takiwa o middle_pos i runga i te wahanga (middle_pos-8;middle_pos +8) me tatau tatou i te kaha kaha me te kaha iti. Mēnā he nui ake te rerekētanga i waenganui i te 10, ka tuhia te moka 1 ki roto i te hua, ki te kore te 0. Ko te 10 he taumau kua riro mai i te whakamatautau;
  7. Tiakina te tūnga o nāianei ki prev_pos (prev_pos := pos)
  8. Whakahokia mai i te taahiraa 3 kia panuihia te katoa o te konae;
  9. Me tiaki te huinga moka ka puta hei huinga paita. I te mea kaore matou i whai whakaaro ki te paita tukutahi i te wa e panui ana, kaore pea te maha o nga paraka i te maha o te 8, kaore hoki i te mohiotia te moka e hiahiatia ana. I te whakatinanatanga tuatahi o te algorithm, kaore au i te mohio mo te noho o te paita tukutahi, na reira i tiakina noa e 8 nga konae me nga maha rereke o nga paraka. Ko tetahi o ratou he raraunga tika. I te algorithm whakamutunga, ka tango noa ahau i nga moka katoa ki te A5h, ka taea e au te tiki tonu i te konae whakaputa tika

Algorithm i Ruby, mo te hunga e hiahia ana
I tohua e au ko Ruby te reo tuhi i te kaupapa, na te mea... I te nuinga o nga wa ka porotaka ahau. Ko te whiringa kaore i te tino mahi, engari ko te mahi kia tere tere te panui karekau he utu.

# Используем gem 'wavefile'
require 'wavefile'

reader = WaveFile::Reader.new('input.wav')
samples = []
format = WaveFile::Format.new(:mono, :pcm_8, 44100)

# Читаем WAV файл, конвертируем в формат Mono, 8 bit 
# Массив samples будет состоять из байт со значениями 0-255
reader.each_buffer(10000) do |buffer|
  samples += buffer.convert(format).samples
end

# Позиция первого импульса (вместо 0)
prev_pos = 0
# Расстояние между импульсами
distance = 48
# Значение расстояния для окрестности поиска локального максимума
delta = (distance / 6).floor
# Биты будем сохранять в виде строки из "0" и "1"
bits = ""

loop do
  # Рассчитываем позицию следующего импульса
  pos = prev_pos + distance
  
  # Выходим из цикла если данные закончились 
  break if pos + delta >= samples.size

  # Корректируем позицию pos обнаружением максимума на отрезке [pos - delta;pos + delta]
  (pos - delta..pos + delta).each { |p| pos = p if samples[p] > samples[pos] }

  # Находим середину отрезка [prev_pos;pos]
  middle_pos = ((prev_pos + pos) / 2).floor

  # Берем окрестность в середине 
  sample = samples[middle_pos - delta..middle_pos + delta]

  # Определяем бит как "1" если разница между максимальным и минимальным значением на отрезке превышает 10
  bit = sample.max - sample.min > 10
  bits += bit ? "1" : "0"
end

# Определяем синхро-байт и заменяем все предшествующие биты на 256 бит нулей (согласно спецификации формата) 
bits.gsub! /^[01]*?10100101/, ("0" * 256) + "10100101"

# Сохраняем выходной файл, упаковывая биты в байты
File.write "output.cas", [bits].pack("B*")

hua

I te whakamatau i nga momo rereke o te algorithm me nga taapiri, i waimarie ahau ki te tiki i tetahi mea tino pai:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

Na, ma te whakatau i nga aho kiripuaki, he kaupapa to maatau mo te whakatakoto kauwhata. Heoi, karekau he kupu matua kei roto i te tuhinga o te hotaka. Kua whakawaeheretia nga kupu matua katoa hei paita (ia uara> 80h). Inaianei me rapu maatau ko tehea rorohiko mai i nga tau 80 ka taea te tiaki i nga papatono ki tenei whakatakotoranga.

Inaa, he tino rite ki te kaupapa BASIC. Ko te rorohiko ZX Spectrum e rongoa ana i nga papatono i roto i te ahua rite tonu te whakatakotoranga i roto i te mahara me te tiaki i nga papatono ki te rīpene. Ko te take, ka tirohia e au nga kupu matua tepu. Heoi, ko te hua i puta he kino.

I tirohia ano e ahau nga kupumatua BASIC o te Atari rongonui, Commodore 64 me etahi atu rorohiko o taua wa, i kitea e au nga tuhinga, engari kaore i angitu - ko taku mohio ki nga momo rorohiko retro kare i tino whanui.

Na ka whakatau ahau ki te haere te raarangi, katahi ka taka taku titiro ki te ingoa o te kaihanga Radio Shack me te rorohiko TRS-80. Ko nga ingoa enei i tuhia ki nga tapanga o nga rīpene e takoto ana i runga i taku tepu! Kaore au i mohio ki enei ingoa i mua, kaore au i mohio ki te rorohiko TRS-80, no reira ko te ahua o Radio Shack he kaihanga rīpene ororongo penei i te BASF, Sony, TDK ranei, ko te TRS-80 te wa purei. He aha te kore?

Rorohiko Tandy/Radio Shack TRS-80

Ko te mea pea ko te rekoata oro e patai ana, i hoatu e au hei tauira i te timatanga o te tuhinga, i mahia i runga rorohiko penei:

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

I puta mai ko tenei rorohiko me ona momo (Model I / Model III / Model IV, me etahi atu) he tino rongonui i tetahi wa (ko te tikanga, kaore i Rusia). Ko te mea nui ko te tukatuka i whakamahia e ratou ko Z80 ano. Mo tenei rorohiko ka kitea e koe i runga i te Ipurangi he maha nga korero. I nga tau 80, ka tohatohahia nga korero rorohiko ki roto moheni. I tenei wa he maha emulators rorohiko mo nga papaaho rereke.

I tangohia e ahau te emulator trs80gp a, mo te wa tuatahi i kite ahau i te mahi o tenei rorohiko. Ko te tikanga, kaore te rorohiko i tautoko i te putanga tae; ko te taumira mata he 128x48 pika anake, engari he maha nga toronga me nga whakarereketanga ka taea te whakanui ake i te taumira mata. He maha ano nga whiringa mo nga punaha whakahaere mo tenei rorohiko me nga whiringa mo te whakatinana i te reo BASIC (he rereke ki te ZX Spectrum, i etahi tauira kaore i "whakakohia" ki roto i te ROM me nga whiringa ka taea te utaina mai i te kōpae pīngore, penei te OS ake)

I kitea ano e ahau whaipainga ki te huri i nga rekoata oro ki te whakatakotoranga CAS, e tautokohia ana e nga emulators, engari na etahi take kaore i taea te panui i nga rekoata mai i aku rīpene ma te whakamahi.

I te mohiotanga ki te whakatakotoranga konae CAS (he kape moka-iti noa o nga raraunga mai i te riipene kua mau i a au, haunga te pane me te paita tukutahi), i hanga e ahau he He iti noa nga huringa ki taku papatono me te whakaputa i tetahi konae CAS mahi i mahi i roto i te emulator (TRS-80 Model III):

Me pehea taku whakaora i nga raraunga i roto i te whakatakotoranga kore mohiotia mai i te riipene autō

I hoahoatia e ahau te putanga hou o te whaipainga whakahuri me te whakatau aunoa o te pupuhi tuatahi me te tawhiti i waenga i nga pihi tohutoro hei kete GEM, kei te waatea te waehere puna i GitHub.

mutunga

Ko te huarahi i haerehia e matou he haerenga whakamihiharo ki nga ra o mua, a kei te koa ahau i te mutunga ka kitea e au te whakautu. I roto i etahi atu mea, ko ahau:

  • I whakaarohia e ahau te whakatakotoranga mo te penapena raraunga i roto i te ZX Spectrum me te ako i nga mahinga ROM kua hangaia mo te penapena / panui raraunga mai i nga rīpene ororongo
  • I mohio ahau ki te rorohiko TRS-80 me ona momo, i ako i te punaha whakahaere, i titiro ki nga tauira tauira me te whai waahi ki te mahi patuiro i nga tohu miihini (i muri i nga mea katoa, ko nga mnemonika Z80 katoa e mohio ana ahau)
  • I tuhia he taputapu tino pai mo te huri i nga rekoata oro ki te whakatakotoranga CAS, ka taea te panui i nga raraunga kaore i te mohiotia e te taputapu "mana"

Source: will.com

Tāpiri i te kōrero